[gmt] 01/07: Imported Upstream version 5.3.2+dfsg
Bas Couwenberg
sebastic at debian.org
Sun Feb 26 12:45:57 UTC 2017
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch master
in repository gmt.
commit 3c7b21df4fcbdfba13c5eaa0e066d6d2003ff1eb
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Sun Feb 26 11:52:33 2017 +0100
Imported Upstream version 5.3.2+dfsg
---
CMakeLists.txt | 4 +-
README.CMake | 4 +-
README.WIN32 | 4 +-
cmake/ConfigDefault.cmake | 10 +-
cmake/ConfigUserTemplate.cmake | 4 +-
cmake/dist/CMakeLists.txt | 4 +-
cmake/modules/ConfigureChecks.cmake | 6 +-
cmake/modules/CopyDirIfDifferent.cmake | 4 +-
cmake/modules/CreateDebugSym.cmake | 6 +-
cmake/modules/GmtGenExtraHeaders.cmake | 4 +-
cmake/modules/GmtHelperMacros.cmake | 4 +-
cmake/modules/GmtManpages.cmake | 6 +-
cmake/modules/ManageString.cmake | 4 +-
cmake/modules/NSIS.template.in | 6 +-
cmake/modules/UseLATEX.cmake | 8 +-
doc/CMakeLists.txt | 4 +-
doc/examples/CMakeLists.txt | 4 +-
doc/examples/anim02/anim_02.sh | 4 +-
doc/examples/anim05/anim_05.sh | 6 +-
doc/examples/ex18/example_18.bat | 5 +-
doc/examples/ex18/example_18.sh | 5 +-
doc/examples/ex21/example_21.sh | 18 +-
doc/examples/ex23/example_23.bat | 19 +-
doc/examples/ex23/example_23.sh | 7 +-
doc/examples/ex24/example_24.bat | 7 +-
doc/examples/ex24/example_24.sh | 10 +-
doc/examples/ex30/example_30.bat | 4 +-
doc/examples/ex31/fonts/LICENCE.txt | 4 +-
doc/examples/ex31/fonts/README.txt | 4 +-
doc/examples/ex42/example_42.bat | 6 +-
doc/examples/ex42/example_42.sh | 6 +-
doc/examples/ex43/example_43.bat | 4 +-
doc/examples/ex43/example_43.ps | 133 +-
doc/examples/ex43/example_43.sh | 4 +-
doc/fig/CMakeLists.txt | 4 +-
doc/rst/CMakeLists.txt | 4 +-
doc/rst/conf.py.in | 2 +-
doc/rst/source/GMT_API.rst | 64 +-
doc/rst/source/GMT_Docs.rst | 346 +-
doc/rst/source/blockmean.rst | 14 +-
doc/rst/source/blockmedian.rst | 16 +-
doc/rst/source/blockmode.rst | 14 +-
doc/rst/source/examples_chapter.rst_ | 2 +-
doc/rst/source/explain_-B.rst_ | 2 +-
doc/rst/source/explain_-B_full.rst_ | 2 +-
doc/rst/source/explain_-L_scale.rst_ | 11 +-
doc/rst/source/explain_-P_full.rst_ | 2 +-
doc/rst/source/explain_-T_rose.rst_ | 31 +-
doc/rst/source/explain_-U.rst_ | 2 +-
doc/rst/source/explain_-U_full.rst_ | 6 +-
doc/rst/source/explain_-aspatial_full.rst_ | 7 +-
doc/rst/source/explain_color.rst_ | 9 +-
doc/rst/source/explain_contlabel.rst_ | 2 +-
doc/rst/source/explain_core_full.rst_ | 2 +-
doc/rst/source/explain_fft.rst_ | 7 +-
doc/rst/source/explain_help.rst_ | 4 +-
doc/rst/source/explain_pen.rst_ | 5 +-
doc/rst/source/explain_precision.rst_ | 6 +-
doc/rst/source/fitcircle.rst | 3 +-
doc/rst/source/gmt.conf.rst | 8 +-
doc/rst/source/gmt2kml.rst | 2 +-
doc/rst/source/gmtcolors.rst | 7 +-
doc/rst/source/gmtdefaults.rst | 2 +-
doc/rst/source/gmtinfo.rst | 5 +-
doc/rst/source/gmtlogo.rst | 2 +-
doc/rst/source/gmtmath.rst | 2 +-
doc/rst/source/gmtspatial.rst | 4 +-
doc/rst/source/grd2cpt.rst | 15 +-
doc/rst/source/grdblend.rst | 16 +-
doc/rst/source/grdcontour.rst | 10 +-
doc/rst/source/grdconvert.rst | 16 +-
doc/rst/source/grdcut.rst | 9 +-
doc/rst/source/grdgradient.rst | 3 +-
doc/rst/source/grdhisteq.rst | 2 +-
doc/rst/source/grdimage.rst | 6 +-
doc/rst/source/grdinfo.rst | 4 +-
doc/rst/source/grdmask.rst | 15 +-
doc/rst/source/grdmath.rst | 6 +
doc/rst/source/grdpaste.rst | 4 +-
doc/rst/source/grdtrack.rst | 6 +-
doc/rst/source/grdtrend.rst | 2 +-
doc/rst/source/grdview.rst | 9 +-
doc/rst/source/grdvolume.rst | 2 +-
doc/rst/source/greenspline.rst | 12 +-
doc/rst/source/julia_wrapper.rst | 90 +-
doc/rst/source/kml2gmt.rst | 1 +
doc/rst/source/makecpt.rst | 24 +-
doc/rst/source/man_pages.rst | 1 +
doc/rst/source/mapproject.rst | 2 +-
doc/rst/source/matlab_wrapper.rst | 128 +-
doc/rst/source/postscriptlight.rst | 6 +-
doc/rst/source/project.rst | 14 +-
doc/rst/source/psbasemap.rst | 4 +-
doc/rst/source/pscoast.rst | 2 +-
doc/rst/source/pscontour.rst | 2 +-
doc/rst/source/psconvert.rst | 2 +-
doc/rst/source/pshistogram.rst | 2 +-
doc/rst/source/psimage.rst | 9 +-
doc/rst/source/pslegend.rst | 19 +-
doc/rst/source/psrose.rst | 27 +-
doc/rst/source/pssolar.rst | 35 +-
doc/rst/source/pstext.rst | 8 +-
doc/rst/source/pswiggle.rst | 34 +-
doc/rst/source/psxy.rst | 14 +-
doc/rst/source/psxyz.rst | 2 +-
doc/rst/source/quick_ref.rst_ | 2 +-
doc/rst/source/sphdistance.rst | 6 +-
doc/rst/source/sphinterpolate.rst | 2 +-
doc/rst/source/sphtriangulate.rst | 6 +-
doc/rst/source/summary.rst_ | 2 +-
doc/rst/source/supplements/gshhg/gshhg.rst | 4 +-
doc/rst/source/supplements/img/img2grd.rst | 4 +-
doc/rst/source/supplements/meca/psmeca.rst | 4 +-
doc/rst/source/supplements/meca/pspolar.rst | 2 +-
doc/rst/source/supplements/meca/pssac.rst | 6 +-
doc/rst/source/supplements/meca/psvelo.rst | 12 +-
doc/rst/source/supplements/mgd77/explain_ncid.rst_ | 13 +-
doc/rst/source/supplements/mgd77/mgd77convert.rst | 29 +-
doc/rst/source/supplements/mgd77/mgd77info.rst | 2 +-
doc/rst/source/supplements/mgd77/mgd77list.rst | 44 +-
doc/rst/source/supplements/mgd77/mgd77path.rst | 2 +-
doc/rst/source/supplements/mgd77/mgd77track.rst | 2 +-
doc/rst/source/supplements/misc/dimfilter.rst | 14 +-
.../source/supplements/potential/gmtflexure.rst | 4 +-
.../source/supplements/potential/gmtgravmag3d.rst | 14 +-
.../source/supplements/potential/gpsgridder.rst | 37 +-
doc/rst/source/supplements/potential/gravfft.rst | 20 +-
.../source/supplements/potential/grdflexure.rst | 11 +-
.../source/supplements/potential/grdgravmag3d.rst | 2 +-
.../source/supplements/potential/grdseamount.rst | 10 +-
doc/rst/source/supplements/potential/talwani2d.rst | 12 +-
doc/rst/source/supplements/potential/talwani3d.rst | 20 +-
doc/rst/source/supplements/spotter/backtracker.rst | 6 +-
.../source/supplements/x2sys/x2sys_datalist.rst | 4 +-
doc/rst/source/surface.rst | 10 +-
doc/rst/source/trend1d.rst | 2 +-
doc/rst/themes/rtd/static/rtd.css_t | 2 +-
doc/scripts/CMakeLists.txt | 6 +-
doc/scripts/{GMT_dir_rose.ps => GMT_CPTscale.ps} | 723 +-
doc/scripts/GMT_CPTscale.sh | 36 +
doc/scripts/GMT_dir_rose.ps | 103 +-
doc/scripts/GMT_dir_rose.sh | 4 +-
doc/scripts/GMT_images.ps | 15643 +++++++------------
doc/scripts/ml/GMT_grinten.jl | 4 +-
doc/scripts/ml/GMT_grinten.m | 4 +-
doc/scripts/ml/GMT_insert.jl | 4 +-
doc/scripts/ml/GMT_insert.m | 4 +-
doc/scripts/soest.eps | 15623 +++++++-----------
doc/tutorial/CMakeLists.txt | 2 +-
share/CMakeLists.txt | 4 +-
share/conf/CMakeLists.txt | 4 +-
share/mgd77/Dst_all.wdc | 1675 +-
share/mgd77/F107_mon.plt | 31 +
share/mgd77/umdl.CM4 | 5230 +++----
share/postscriptlight/PSL_custom_fonts.txt | 4 +-
share/postscriptlight/PSL_standard_fonts.txt | 4 +-
.../Global_EarthByte_Plate_ID_Table_AREPS.txt | 2 +-
share/tools/CMakeLists.txt | 4 +-
share/tools/gmt5syntax.in | 4 +-
share/tools/gmt_aliases.csh | 4 +-
share/tools/gmt_completion.bash | 4 +-
share/tools/gmt_functions.sh | 4 +-
share/tools/gmt_links.sh | 4 +-
share/tools/gmt_make_custom_code.sh | 2 +-
share/tools/gmt_prepmex.sh | 4 +-
share/tools/gmt_uninstall.sh | 4 +-
share/tools/ncdeflate | 4 +-
src/CMakeLists.txt | 4 +-
src/block_subs.h | 4 +-
src/blockmean.c | 11 +-
src/blockmedian.c | 11 +-
src/blockmode.c | 15 +-
src/common_byteswap.h | 4 +-
src/common_math.c | 4 +-
src/common_math.h | 4 +-
src/common_runpath.c | 4 +-
src/common_runpath.h | 4 +-
src/common_sighandler.c | 4 +-
src/common_sighandler.h | 4 +-
src/common_string.c | 4 +-
src/common_string.h | 4 +-
src/compat/qsort.h | 4 +-
src/config.h.in | 4 +-
src/declspec.h | 4 +-
src/example1.c | 2 +-
src/filter1d.c | 13 +-
src/fitcircle.c | 11 +-
src/gmt-config.in | 4 +-
src/gmt.c | 4 +-
src/gmt.h | 7 +-
src/gmt2kml.c | 26 +-
src/gmt_agc_io.c | 4 +-
src/gmt_api.c | 213 +-
src/gmt_bcr.c | 6 +-
src/gmt_calclock.c | 6 +-
src/gmt_cdf.c | 10 +-
src/gmt_common.h | 8 +-
src/gmt_compat.c | 4 +-
src/gmt_config.h.in | 4 +-
src/gmt_constants.h | 13 +-
src/gmt_contour.h | 4 +-
src/gmt_customio.c | 34 +-
src/gmt_customio.h | 4 +-
src/gmt_dcw.c | 24 +-
src/gmt_dcw.h | 7 +-
src/gmt_decorate.h | 4 +-
src/gmt_defaults.h | 4 +-
src/gmt_dev.h | 4 +-
src/gmt_dimensions.h.in | 4 +-
src/gmt_error.c | 4 +-
src/gmt_error.h | 4 +-
src/gmt_error_codes.c | 4 +-
src/gmt_error_codes.h | 4 +-
src/gmt_esri_io.c | 7 +-
src/gmt_fft.c | 42 +-
src/gmt_fft.h | 17 +-
src/gmt_gdal_librarified.c | 4 +-
src/gmt_gdalread.c | 24 +-
src/gmt_gdalread.h | 10 +-
src/gmt_gdalwrite.c | 20 +-
src/gmt_glib.h | 4 +-
src/gmt_grd.h | 4 +-
src/gmt_grdio.c | 137 +-
src/gmt_grdio.h | 4 +-
src/gmt_hash.h | 4 +-
src/gmt_init.c | 136 +-
src/gmt_internals.h | 4 +-
src/gmt_io.c | 75 +-
src/gmt_io.h | 6 +-
src/gmt_macros.h | 22 +-
src/gmt_make_module_src.sh | 2 +-
src/gmt_map.c | 183 +-
src/gmt_memory.c | 14 +-
src/gmt_memory.h | 4 +-
src/gmt_mgg_header2.c | 6 +-
src/gmt_nan.h | 4 +-
src/gmt_nc.c | 4 +-
src/gmt_notposix.c | 4 +-
src/gmt_notposix.h | 4 +-
src/gmt_parse.c | 6 +-
src/gmt_plot.c | 99 +-
src/gmt_plot.h | 4 +-
src/gmt_private.h | 8 +-
src/gmt_proj.c | 95 +-
src/gmt_project.h | 12 +-
src/gmt_prototypes.h | 13 +-
src/gmt_psl.h | 6 +-
src/gmt_regexp.c | 8 +-
src/gmt_resources.h | 31 +-
src/gmt_sharedlibs.c | 6 +-
src/gmt_sharedlibs.h | 4 +-
src/gmt_shell_functions.sh | 4 +-
src/gmt_shore.c | 14 +-
src/gmt_shore.h | 4 +-
src/gmt_sph.c | 10 +-
src/gmt_sph.h | 4 +-
src/gmt_stat.c | 8 +-
src/gmt_supplements_module.c | 10 +-
src/gmt_supplements_module.h | 2 +-
src/gmt_support.c | 379 +-
src/gmt_symbol.h | 4 +-
src/gmt_synopsis.h | 12 +-
src/gmt_texture.h | 4 +-
src/gmt_time.h | 4 +-
src/gmt_types.h | 14 +-
src/gmt_url.c | 18 +-
src/gmt_vector.c | 42 +-
src/gmt_version.h.in | 4 +-
src/gmtconnect.c | 8 +-
src/gmtconvert.c | 6 +-
src/gmtdefaults.c | 4 +-
src/gmtget.c | 4 +-
src/gmtinfo.c | 23 +-
src/gmtlogo.c | 12 +-
src/gmtmath.c | 36 +-
src/gmtmath.h.in | 4 +-
src/gmtmath_explain.h.in | 4 +-
src/gmtmath_op.h.in | 4 +-
src/gmtread.c | 8 +-
src/gmtregress.c | 24 +-
src/gmtselect.c | 17 +-
src/gmtset.c | 4 +-
src/gmtsimplify.c | 6 +-
src/gmtspatial.c | 48 +-
src/gmtswitch | 8 +-
src/gmtswitch.bat | 4 +-
src/gmtvector.c | 4 +-
src/gmtwhich.c | 7 +-
src/gmtwrite.c | 4 +-
src/grd2cpt.c | 38 +-
src/grd2rgb.c | 8 +-
src/grd2sph.c.template | 4 +-
src/grd2xyz.c | 17 +-
src/grdblend.c | 4 +-
src/grdclip.c | 4 +-
src/grdcontour.c | 12 +-
src/grdconvert.c | 6 +-
src/grdcut.c | 19 +-
src/grdedit.c | 6 +-
src/grdfft.c | 6 +-
src/grdfilter.c | 12 +-
src/grdfilter_mt.c | 4 +-
src/grdgradient.c | 6 +-
src/grdhisteq.c | 9 +-
src/grdimage.c | 48 +-
src/grdinfo.c | 24 +-
src/grdlandmask.c | 6 +-
src/grdmask.c | 73 +-
src/grdmath.c | 16 +-
src/grdmath.h.in | 4 +-
src/grdmath_explain.h.in | 4 +-
src/grdmath_op.h.in | 4 +-
src/grdpaste.c | 4 +-
src/grdproject.c | 23 +-
src/grdraster.c | 14 +-
src/grdsample.c | 6 +-
src/grdtrack.c | 22 +-
src/grdtrend.c | 4 +-
src/grdvector.c | 10 +-
src/grdview.c | 14 +-
src/grdvolume.c | 18 +-
src/greenspline.c | 122 +-
src/gshhg/CMakeLists.txt | 4 +-
src/gshhg/README.gshhg | 10 +-
src/gshhg/gmt_gshhg.h | 4 +-
src/gshhg/gshhg.c | 6 +-
src/gshhg/gshhg.h | 4 +-
src/gshhg_version.c | 4 +-
src/gshhg_version.h | 4 +-
src/img/CMakeLists.txt | 4 +-
src/img/README.img | 4 +-
src/img/img2google | 4 +-
src/img/img2grd.c | 4 +-
src/isogmt.in | 4 +-
src/kiss_fft/kiss_fft.c | 2 +-
src/kml2gmt.c | 15 +-
src/makecpt.c | 61 +-
src/mapproject.c | 24 +-
src/meca/CMakeLists.txt | 4 +-
src/meca/pscoupe.c | 6 +-
src/meca/psmeca.c | 6 +-
src/meca/pspolar.c | 4 +-
src/meca/pssac.c | 49 +-
src/meca/psvelo.c | 6 +-
src/meca/sacio.c | 2 +-
src/meca/sacio.h | 8 +-
src/meca/utilmeca.c | 18 +-
src/mgd77/CMakeLists.txt | 4 +-
src/mgd77/cm4_functions.c | 18 +-
src/mgd77/mgd77.c | 59 +-
src/mgd77/mgd77.h | 12 +-
src/mgd77/mgd77_IGF_coeffs.h | 4 +-
src/mgd77/mgd77_codes.h | 4 +-
src/mgd77/mgd77_codes.sh | 4 +-
src/mgd77/mgd77_e77.h | 4 +-
src/mgd77/mgd77_functions.c | 4 +-
src/mgd77/mgd77_functions.h | 4 +-
src/mgd77/mgd77_init.h | 8 +-
src/mgd77/mgd77_recalc.h | 4 +-
src/mgd77/mgd77_rls_coeffs.h | 4 +-
src/mgd77/mgd77convert.c | 12 +-
src/mgd77/mgd77defaults.h | 2 +-
src/mgd77/mgd77info.c | 6 +-
src/mgd77/mgd77list.c | 116 +-
src/mgd77/mgd77magref.c | 11 +-
src/mgd77/mgd77magref.h | 4 +-
src/mgd77/mgd77manage.c | 4 +-
src/mgd77/mgd77netcdfhelper.sh | 6 +-
src/mgd77/mgd77path.c | 4 +-
src/mgd77/mgd77sniffer.c | 294 +-
src/mgd77/mgd77sniffer.h | 4 +-
src/mgd77/mgd77snifferdefaults.h | 4 +-
src/mgd77/mgd77track.c | 8 +-
src/misc/CMakeLists.txt | 4 +-
src/misc/dimfilter.c | 7 +-
src/nearneighbor.c | 6 +-
src/postscriptlight.c | 259 +-
src/postscriptlight.h | 20 +-
src/postscriptlight_f77.c | 6 +-
src/potential/CMakeLists.txt | 4 +-
src/potential/gmtflexure.c | 12 +-
src/potential/gmtgravmag3d.c | 25 +-
src/potential/gpsgridder.c | 62 +-
src/potential/gravfft.c | 10 +-
src/potential/grdflexure.c | 12 +-
src/potential/grdgravmag3d.c | 20 +-
src/potential/grdredpol.c | 4 +-
src/potential/grdseamount.c | 8 +-
src/potential/okbfuns.c | 22 +-
src/potential/okbfuns.h | 4 +-
src/potential/talwani2d.c | 36 +-
src/potential/talwani3d.c | 49 +-
src/project.c | 24 +-
src/psbasemap.c | 8 +-
src/psclip.c | 16 +-
src/pscoast.c | 22 +-
src/pscontour.c | 12 +-
src/psconvert.c | 48 +-
src/pshistogram.c | 15 +-
src/psimage.c | 21 +-
src/psldemo.h.in | 4 +-
src/pslegend.c | 12 +-
src/psmask.c | 40 +-
src/psrose.c | 83 +-
src/psscale.c | 42 +-
src/pssolar.c | 36 +-
src/pstext.c | 8 +-
src/pswiggle.c | 84 +-
src/psxy.c | 48 +-
src/psxyz.c | 29 +-
src/sample1d.c | 4 +-
src/script2verbatim.c | 4 +-
src/segy/CMakeLists.txt | 4 +-
src/segy/pssegy.c | 8 +-
src/segy/pssegyz.c | 14 +-
src/segy/segy2grd.c | 8 +-
src/spectrum1d.c | 4 +-
src/sph2grd.c | 54 +-
src/sphdistance.c | 21 +-
src/sphinterpolate.c | 8 +-
src/sphtriangulate.c | 14 +-
src/splitxyz.c | 4 +-
src/spotter/CMakeLists.txt | 4 +-
src/spotter/backtracker.c | 21 +-
src/spotter/gmtpmodeler.c | 11 +-
src/spotter/grdpmodeler.c | 9 +-
src/spotter/grdrotater.c | 6 +-
src/spotter/grdspotter.c | 13 +-
src/spotter/hotspotter.c | 6 +-
src/spotter/libspotter.c | 10 +-
src/spotter/originator.c | 15 +-
src/spotter/rotconverter.c | 10 +-
src/spotter/rotsmoother.c | 14 +-
src/spotter/spotter.h | 4 +-
src/surface.c | 6 +-
src/surface_mt.c | 6 +-
src/test_JL.c | 2 +-
src/test_walter.c | 2 +-
src/testapi.c | 4 +-
src/testapi_matrix.c | 3 +-
src/testapi_vector.c | 2 +-
src/testapiconv.c | 4 +-
src/testgmt5.c | 4 +-
src/testgmtio.c | 8 +-
src/testgrdio.c | 4 +-
src/testio.c | 4 +-
src/trend1d.c | 13 +-
src/trend2d.c | 11 +-
src/triangulate.c | 24 +-
src/x2sys/CMakeLists.txt | 4 +-
src/x2sys/README.x2sys | 4 +-
src/x2sys/split_file4coes.m | 6 +-
src/x2sys/x2sys.c | 29 +-
src/x2sys/x2sys.h | 6 +-
src/x2sys/x2sys_binlist.c | 10 +-
src/x2sys/x2sys_cross.c | 11 +-
src/x2sys/x2sys_datalist.c | 65 +-
src/x2sys/x2sys_get.c | 7 +-
src/x2sys/x2sys_init.c | 4 +-
src/x2sys/x2sys_list.c | 13 +-
src/x2sys/x2sys_merge.c | 12 +-
src/x2sys/x2sys_put.c | 4 +-
src/x2sys/x2sys_report.c | 8 +-
src/x2sys/x2sys_solve.c | 7 +-
src/xyz2grd.c | 187 +-
465 files changed, 20634 insertions(+), 25970 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e8a2710..641447b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 16913 2016-08-16 22:09:18Z remko $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/README.CMake b/README.CMake
index d52b2a5..d6c2543 100644
--- a/README.CMake
+++ b/README.CMake
@@ -1,7 +1,7 @@
////
-$Id: README.CMake 15759 2016-02-24 23:36:11Z pwessel $
+$Id: README.CMake 17449 2017-01-16 21:27:04Z pwessel $
-Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis
+Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis
and F. Wobbe. See LICENSE.TXT file for copying and redistribution conditions.
Contact info: http://gmt.soest.hawaii.edu/
diff --git a/README.WIN32 b/README.WIN32
index 0e63006..990b76c 100644
--- a/README.WIN32
+++ b/README.WIN32
@@ -1,5 +1,5 @@
////
-$Id: README.WIN32 15178 2015-11-06 10:45:03Z fwobbe $
+$Id: README.WIN32 17326 2016-11-08 20:28:56Z pwessel $
////
** HOWTO install GMT5 on Windows using CMake **
@@ -105,7 +105,7 @@ You need to install MinGW/MSYS and run the cmake from within the MSYS shell.
Path to the gfortran compiler must also be adapted to ones particular case.
Note also that the liblapack.dll will introduce by itself new dependencies on:
libblas.dll, libgfortran-3.dll, libgcc_s_seh-1.dll and libquadmath-0.dll
-It's up to the user to make all these dependecies available to the system at runtime.
+It's up to the user to make all these dependencies available to the system at runtime.
Get LAPACK from http://netlib.org/lapack/lapack.tgz and extract lapack.tgz in
z:\software\lapack-3.5.0\
diff --git a/cmake/ConfigDefault.cmake b/cmake/ConfigDefault.cmake
index 696d024..d438732 100644
--- a/cmake/ConfigDefault.cmake
+++ b/cmake/ConfigDefault.cmake
@@ -1,7 +1,7 @@
#
-# $Id: ConfigDefault.cmake 17229 2016-10-21 08:32:03Z fwobbe $
+# $Id: ConfigDefault.cmake 17595 2017-02-24 00:53:29Z jluis $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
@@ -37,18 +37,18 @@ set (GMT_PACKAGE_DESCRIPTION_SUMMARY "The Generic Mapping Tools")
# GMT_VERSION_YEAR is set to current date in
# cmake/modules/ConfigCMake.cmake if not specified here:
-set (GMT_VERSION_YEAR "2016")
+set (GMT_VERSION_YEAR "2017")
# The GMT package version.
set (GMT_PACKAGE_VERSION_MAJOR 5)
set (GMT_PACKAGE_VERSION_MINOR 3)
-set (GMT_PACKAGE_VERSION_PATCH 1)
+set (GMT_PACKAGE_VERSION_PATCH 2)
# The subversion revision of the GMT source code.
# This is manually set when making GMT *public* releases.
# However, when making internal releases or just an ordinary developer build, leave it
# empty; if it is empty, the revision number is automatically populated for you on build.
-set (GMT_SOURCE_CODE_CONTROL_VERSION_STRING "17229")
+set (GMT_SOURCE_CODE_CONTROL_VERSION_STRING "17593")
# The GMT package version.
set (GMT_PACKAGE_VERSION "${GMT_PACKAGE_VERSION_MAJOR}.${GMT_PACKAGE_VERSION_MINOR}.${GMT_PACKAGE_VERSION_PATCH}")
diff --git a/cmake/ConfigUserTemplate.cmake b/cmake/ConfigUserTemplate.cmake
index 6d6a960..26a9837 100644
--- a/cmake/ConfigUserTemplate.cmake
+++ b/cmake/ConfigUserTemplate.cmake
@@ -1,7 +1,7 @@
#
-# $Id: ConfigUserTemplate.cmake 17038 2016-08-30 19:57:06Z pwessel $
+# $Id: ConfigUserTemplate.cmake 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2015 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify it
diff --git a/cmake/dist/CMakeLists.txt b/cmake/dist/CMakeLists.txt
index 6f95ac4..584cab5 100644
--- a/cmake/dist/CMakeLists.txt
+++ b/cmake/dist/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 17144 2016-09-26 22:42:43Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2015 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/cmake/modules/ConfigureChecks.cmake b/cmake/modules/ConfigureChecks.cmake
index 88a96d6..cf3d5a9 100644
--- a/cmake/modules/ConfigureChecks.cmake
+++ b/cmake/modules/ConfigureChecks.cmake
@@ -1,5 +1,5 @@
#
-# $Id: ConfigureChecks.cmake 15301 2015-12-04 13:59:07Z fwobbe $
+# $Id: ConfigureChecks.cmake 17486 2017-01-24 04:43:22Z pwessel $
#
if(NOT DEFINED _INCLUDED_CHECK_MACROS_)
@@ -424,13 +424,13 @@ if (HAVE_SINCOS)
"
#define _GNU_SOURCE
#define __EXTENSIONS__
- include <math.h>
+ #include <math.h>
int main () {
double s = 0.1, c = 0.2;
double s1, c1;
s1 = s; c1 = c;
sincos (0.5, &s, &c);
- return !(s == s1 || c == c1);} /* return TRUE if sincos works ok */
+ return !(s == s1 || c == c1);} /* return TRUE if sincos fails */
"
HAVE_BUGGY_SINCOS)
if (HAVE_BUGGY_SINCOS)
diff --git a/cmake/modules/CopyDirIfDifferent.cmake b/cmake/modules/CopyDirIfDifferent.cmake
index 38e8fa4..7473be1 100644
--- a/cmake/modules/CopyDirIfDifferent.cmake
+++ b/cmake/modules/CopyDirIfDifferent.cmake
@@ -1,7 +1,7 @@
#
-# $Id: CopyDirIfDifferent.cmake 13846 2014-12-28 21:46:54Z pwessel $
+# $Id: CopyDirIfDifferent.cmake 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2015 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/cmake/modules/CreateDebugSym.cmake b/cmake/modules/CreateDebugSym.cmake
index 7609285..bfda7a6 100644
--- a/cmake/modules/CreateDebugSym.cmake
+++ b/cmake/modules/CreateDebugSym.cmake
@@ -1,5 +1,5 @@
#
-# $Id: CreateDebugSym.cmake 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: CreateDebugSym.cmake 17449 2017-01-16 21:27:04Z pwessel $
#
# - Generates Mac .dSYM bundle
# CREATE_DEBUG_SYM ( DESTINATION TARGETS )
@@ -7,7 +7,7 @@
# DESTINATION - destination directory for installed targets
# TARGETS - list of targets
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
@@ -30,7 +30,7 @@ set (_build_type)
if (APPLE AND DEBUG_BUILD)
- # usefull macros
+ # useful macros
include (GmtHelperMacros)
# Check for dsymutil only on Mac
diff --git a/cmake/modules/GmtGenExtraHeaders.cmake b/cmake/modules/GmtGenExtraHeaders.cmake
index c8d8e48..3651a9e 100644
--- a/cmake/modules/GmtGenExtraHeaders.cmake
+++ b/cmake/modules/GmtGenExtraHeaders.cmake
@@ -1,10 +1,10 @@
#
-# $Id: GmtGenExtraHeaders.cmake 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: GmtGenExtraHeaders.cmake 17449 2017-01-16 21:27:04Z pwessel $
#
# - Generates extra header files
# GMT_CREATE_HEADERS ()
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/cmake/modules/GmtHelperMacros.cmake b/cmake/modules/GmtHelperMacros.cmake
index d46e863..65be235 100644
--- a/cmake/modules/GmtHelperMacros.cmake
+++ b/cmake/modules/GmtHelperMacros.cmake
@@ -1,9 +1,9 @@
#
-# $Id: GmtHelperMacros.cmake 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: GmtHelperMacros.cmake 17449 2017-01-16 21:27:04Z pwessel $
#
# - Useful CMake macros
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/cmake/modules/GmtManpages.cmake b/cmake/modules/GmtManpages.cmake
index 7dceaa2..1b28cbe 100644
--- a/cmake/modules/GmtManpages.cmake
+++ b/cmake/modules/GmtManpages.cmake
@@ -1,5 +1,5 @@
#
-# $Id: GmtManpages.cmake 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: GmtManpages.cmake 17449 2017-01-16 21:27:04Z pwessel $
#
# - Generates manpages from txt-files and creates installation targets
# GMT_CREATE_MANPAGES ("${MAN_FILES}" [DEPENDS [DEPENDS2] ...]])
@@ -11,7 +11,7 @@
# set (MAN_FILES user.1 system.2 special.4 formats.5)
# GMT_CREATE_MANPAGES ("${MAN_FILES}")
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
@@ -29,7 +29,7 @@
if(NOT DEFINED _GMT_MANPAGES_CMAKE_)
set(_GMT_MANPAGES_CMAKE_ "DEFINED")
- # usefull macros
+ # useful macros
include (GmtHelperMacros)
# Find groff front-end
diff --git a/cmake/modules/ManageString.cmake b/cmake/modules/ManageString.cmake
index f546a90..5159d8e 100644
--- a/cmake/modules/ManageString.cmake
+++ b/cmake/modules/ManageString.cmake
@@ -1,5 +1,5 @@
#
-# $Id: ManageString.cmake 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: ManageString.cmake 17449 2017-01-16 21:27:04Z pwessel $
#
# - Collection of String utility macros.
# Defines the following macros:
@@ -78,7 +78,7 @@
# + PADDING: (Optional) apply padding at the location by the marker
# string PADDING
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/cmake/modules/NSIS.template.in b/cmake/modules/NSIS.template.in
index 96c50a0..5368877 100644
--- a/cmake/modules/NSIS.template.in
+++ b/cmake/modules/NSIS.template.in
@@ -389,7 +389,7 @@ FunctionEnd
; ReplaceEnvVar - Adds the given value to the given environment var
; Input - head of the stack: value to add ($1)
-; 2nd on stack: environement variable ($0)
+; 2nd on stack: environment variable ($0)
Function ReplaceEnvVar
@@ -423,7 +423,7 @@ Function ReplaceEnvVar
FunctionEnd
; RemoveEnvVar - Adds the given value to the given environment var
-; Input - head of the stack: environement variable to remove ($0)
+; Input - head of the stack: environment variable to remove ($0)
Function un.RemoveEnvVar
@@ -454,7 +454,7 @@ Function un.RemoveEnvVar
FunctionEnd
; AddToEnvVar - Adds the given value to the given environment var
-; Input - head of the stack $0 environement variable $1=value to add
+; Input - head of the stack $0 environment variable $1=value to add
; Note - Win9x systems requires reboot
Function AddToEnvVar
diff --git a/cmake/modules/UseLATEX.cmake b/cmake/modules/UseLATEX.cmake
index 8370cd9..63a71ca 100644
--- a/cmake/modules/UseLATEX.cmake
+++ b/cmake/modules/UseLATEX.cmake
@@ -1,4 +1,4 @@
-# $Id: UseLATEX.cmake 12822 2014-01-31 23:39:56Z remko $
+# $Id: UseLATEX.cmake 17326 2016-11-08 20:28:56Z pwessel $
#
# CMAKE commands to actually use the LaTeX compiler
# Version: 1.9.1
@@ -35,7 +35,7 @@
# the BIBFILES option, and any .cls, .bst, and .clo files found in
# the current source directory. Images found in the IMAGE_DIRS
# directories or listed by IMAGES are also copied to the output
-# directory and coverted to an appropriate format if necessary. Any
+# directory and converted to an appropriate format if necessary. Any
# tex files also listed with the CONFIGURE option are also processed
# with the CMake CONFIGURE_FILE command (with the @ONLY flag). Any
# file listed in CONFIGURE but not the target tex file or listed with
@@ -318,7 +318,7 @@ MACRO(LATEX_MAKEGLOSSARIES)
language
${xdylanguage_line}
)
- # What crazy person makes a LaTeX index generater that uses different
+ # What crazy person makes a LaTeX index generator that uses different
# identifiers for language than babel (or at least does not support
# the old ones)?
IF (${language} STREQUAL "frenchb")
@@ -846,7 +846,7 @@ MACRO(PARSE_ADD_LATEX_ARGUMENTS command)
ENDIF (LATEX_DEFAULT_ARGS)
IF (LATEX_DEFAULT_ARGS)
- LATEX_USAGE(${command} "Invalid or depricated arguments: ${LATEX_DEFAULT_ARGS}")
+ LATEX_USAGE(${command} "Invalid or deprecated arguments: ${LATEX_DEFAULT_ARGS}")
ENDIF (LATEX_DEFAULT_ARGS)
# Backward compatibility between 1.6.0 and 1.6.1.
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 13c44e7..7f885e8 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 14537 2015-07-15 19:10:06Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2015 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt
index 81b9a89..43434be 100644
--- a/doc/examples/CMakeLists.txt
+++ b/doc/examples/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 16650 2016-06-28 20:20:25Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/doc/examples/anim02/anim_02.sh b/doc/examples/anim02/anim_02.sh
index 4601e2d..bb4cfa2 100755
--- a/doc/examples/anim02/anim_02.sh
+++ b/doc/examples/anim02/anim_02.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# GMT ANIMATION 02
-# $Id: anim_02.sh 16750 2016-07-09 05:44:02Z pwessel $
+# $Id: anim_02.sh 17326 2016-11-08 20:28:56Z pwessel $
#
# Purpose: Make web page with simple animated GIF of a DEM grid
# GMT modules gmtmath, grdgradient, makecpt, grdimage psxy, psconvert
@@ -57,7 +57,7 @@ cat << END > ${name}.html
We make illuminated images of topography from a section of Colorado and
vary the azimuth of the illumination (see arrow). As the light-source sweeps around
the area over 360 degrees we notice that different features in the data
-become hightlighted. This is because the illumination is based on data
+become highlighted. This is because the illumination is based on data
gradients and such derivatives will high-light short-wavelength signal.
Again, our animation uses GraphicsMagick's convert tool to make an animated GIF file
with a 0.1 second pause between the 36 frames.
diff --git a/doc/examples/anim05/anim_05.sh b/doc/examples/anim05/anim_05.sh
index 04473c3..862806c 100755
--- a/doc/examples/anim05/anim_05.sh
+++ b/doc/examples/anim05/anim_05.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# GMT ANIMATION 05
-# $Id: anim_05.sh 16662 2016-06-29 00:37:30Z pwessel $
+# $Id: anim_05.sh 17556 2017-02-17 20:23:27Z pwessel $
#
# Purpose: Make web page with simple animated GIF of gridding
# GMT modules: grdcontour, greenspline, psxy, pstext, psconvert
@@ -10,7 +10,7 @@
# 1. Initialization
# 1a) Assign movie parameters
. gmt_shell_functions.sh
-n_eigen=`gmt_get_ndatarecords table_5.11`
+n_eigen=`gmt_get_ndatarecords ${src:-.}/table_5.11`
dpi=100
name=anim_05
ps=${name}.ps
@@ -20,7 +20,7 @@ frame=0
let k=1
while [ $k -le $n_eigen ]; do
file=`gmt_set_framename ${name} ${frame}`
- gmt greenspline table_5.11 -R0/6.5/0/6.5 -I0.05 -Sc -Gt.nc -D1 -Cn${k} -Emisfit.txt 2> /dev/null
+ gmt greenspline ${src:-.}/table_5.11 -R0/6.5/0/6.5 -I0.05 -Sc -Gt.nc -D1 -Cn${k} -Emisfit.txt 2> /dev/null
gmt grdcontour t.nc -C25 -A50 -Baf -BWSnE -JX4i -P -K -Gl3.6/6.5/4.05/0.75 -X0.25i -Y0.8i --PS_MEDIA=4.5ix5.0i > $$.ps
gmt psxy misfit.txt -R -J -O -K -Ct.cpt -Sc0.15c -Wfaint -i0,1,4 >> $$.ps
echo $k | gmt pstext -R -J -O -K -F+cTR+jTR+f18p -Dj0.1i >> $$.ps
diff --git a/doc/examples/ex18/example_18.bat b/doc/examples/ex18/example_18.bat
index 5e2a103..dcda18b 100755
--- a/doc/examples/ex18/example_18.bat
+++ b/doc/examples/ex18/example_18.bat
@@ -1,6 +1,6 @@
REM GMT EXAMPLE 18
REM
-REM $Id: example_18.bat 16758 2016-07-09 20:51:28Z pwessel $
+REM $Id: example_18.bat 17434 2017-01-12 22:59:32Z pwessel $
REM
REM Purpose: Illustrates volumes of grids inside contours and spatial
REM selection of data
@@ -25,8 +25,7 @@ gmt grdgradient AK_gulf_grav.nc -Nt1 -A45 -GAK_gulf_grav_i.nc
gmt grdimage AK_gulf_grav.nc -IAK_gulf_grav_i.nc -JM5.5i -Cgrav.cpt -B2f1 -P -K -X1.5i -Y5.85i > %ps%
gmt pscoast -RAK_gulf_grav.nc -J -O -K -Di -Ggray -Wthinnest >> %ps%
gmt psscale -DjCB+o0/0.4i+jTC+w4i/0.15i+h -R -J -Cgrav.cpt -Bx20f10 -By+l"mGal" -O -K >> %ps%
-echo {print $1, $2, "Pratt"} > t
-gawk -f t pratt.txt | gmt pstext -R -J -O -K -D0.1i/0.1i -F+f12p,Helvetica-Bold+jLB >> %ps%
+gmt pstext pratt.txt -R -J -O -K -D0.1i/0.1i -F+f12p,Helvetica-Bold+jLB+tPratt >> %ps%
gmt psxy pratt.txt -R -J -O -K -SE- -Wthinnest >> %ps%
REM Then draw 10 mGal contours and overlay 50 mGal contour in green
diff --git a/doc/examples/ex18/example_18.sh b/doc/examples/ex18/example_18.sh
index fba9256..79099fe 100755
--- a/doc/examples/ex18/example_18.sh
+++ b/doc/examples/ex18/example_18.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# GMT EXAMPLE 18
-# $Id: example_18.sh 16758 2016-07-09 20:51:28Z pwessel $
+# $Id: example_18.sh 17434 2017-01-12 22:59:32Z pwessel $
#
# Purpose: Illustrates volumes of grids inside contours and spatial
# selection of data
@@ -25,8 +25,7 @@ gmt grdimage AK_gulf_grav.nc -IAK_gulf_grav_i.nc -JM5.5i -Cgrav.cpt -B2f1 -P -K
-Y5.85i > $ps
gmt pscoast -RAK_gulf_grav.nc -J -O -K -Di -Ggray -Wthinnest >> $ps
gmt psscale -DJBC+o0/0.4i+w4i/0.15i+h -R -J -Cgrav.cpt -Bx20f10 -By+l"mGal" -O -K >> $ps
-$AWK '{print $1, $2, "Pratt"}' pratt.txt | gmt pstext -R -J -O -K -D0.1i/0.1i \
- -F+f12p,Helvetica-Bold+jLB >> $ps
+gmt pstext pratt.txt -R -J -O -K -D0.1i/0.1i -F+f12p,Helvetica-Bold+jLB+tPratt >> $ps
gmt psxy pratt.txt -R -J -O -K -SE- -Wthinnest >> $ps
# Then draw 10 mGal contours and overlay 50 mGal contour in green
diff --git a/doc/examples/ex21/example_21.sh b/doc/examples/ex21/example_21.sh
index 719b9b8..0b2c0f2 100755
--- a/doc/examples/ex21/example_21.sh
+++ b/doc/examples/ex21/example_21.sh
@@ -1,10 +1,10 @@
#!/bin/bash
# GMT EXAMPLE 21
-# $Id: example_21.sh 16750 2016-07-09 05:44:02Z pwessel $
+# $Id: example_21.sh 17434 2017-01-12 22:59:32Z pwessel $
#
# Purpose: Plot a time-series
# GMT modules: gmtset, gmtconvert, gmtinfo, psbasemap, psxy
-# Unix progs: cut, echo
+# Unix progs: echo
#
ps=example_21.ps
@@ -15,12 +15,8 @@ gmt set FORMAT_TIME_PRIMARY_MAP abbreviated PS_CHAR_ENCODING ISOLatin1+
# Pull out a suitable region string in yyy-mm-dd format
-gmt info -fT -I50 -C RHAT_price.csv > RHAT.info
-w=`cut -f1 RHAT.info`
-e=`cut -f2 RHAT.info`
-s=`cut -f3 RHAT.info`
-n=`cut -f4 RHAT.info`
-R="-R$w/$e/$s/$n"
+wesn=(`gmt info -fT -I50 -C RHAT_price.csv --FORMAT_DATE_IN=dd-o-yy`)
+R="-R${wesn[0]}/${wesn[1]}/${wesn[2]}/${wesn[3]}"
# Lay down the basemap:
@@ -45,7 +41,7 @@ echo "01-Jan-99 25" > RHAT.pw
echo "01-Jan-02 25" >> RHAT.pw
gmt psxy -R -J RHAT.pw -Wthick,- -O -K >> $ps
gmt set FORMAT_DATE_IN yyyy-mm-dd
-echo "$w 25 PW buy" | gmt pstext -R -J -O -K -D1.5i/0.05i -N -F+f12p,Bookman-Demi+jLB >> $ps
+echo "${wesn[0]} 25 PW buy" | gmt pstext -R -J -O -K -D1.5i/0.05i -N -F+f12p,Bookman-Demi+jLB >> $ps
gmt set FORMAT_DATE_IN dd-o-yy
# Draw P Wessel's sales price as line and label it.
@@ -57,13 +53,13 @@ echo "01-Aug-06 23.8852" > RHAT.pw
echo "01-Jan-08 23.8852" >> RHAT.pw
gmt psxy -R -J RHAT.pw -Wthick,- -O -K >> $ps
gmt set FORMAT_DATE_IN yyyy-mm-dd
-echo "$e 23.8852 PW sell" | gmt pstext -R -J -O -K -Dj0.8i/0.05i -N \
+echo "${wesn[1]} 23.8852 PW sell" | gmt pstext -R -J -O -K -Dj0.8i/0.05i -N \
-F+f12p,Bookman-Demi+jRB >> $ps
gmt set FORMAT_DATE_IN dd-o-yy
# Get smaller region for insert for trend since 2004
-R="-R2004T/$e/$s/40"
+R="-R2004T/${wesn[1]}/${wesn[2]}/40"
# Lay down the basemap, using Finnish annotations and place the insert in the upper right
diff --git a/doc/examples/ex23/example_23.bat b/doc/examples/ex23/example_23.bat
index 4040daf..16bd09a 100755
--- a/doc/examples/ex23/example_23.bat
+++ b/doc/examples/ex23/example_23.bat
@@ -1,7 +1,7 @@
REM
REM GMT EXAMPLE 23
REM
-REM $Id: example_23.bat 12820 2014-01-31 21:01:19Z remko $
+REM $Id: example_23.bat 17434 2017-01-12 22:59:32Z pwessel $
REM
REM Purpose: Plot distances from Rome and draw shortest paths
REM
@@ -34,22 +34,7 @@ gmt pscoast -Rg -JH90/9i -Glightgreen -Sblue -A1000 -Bg30 -B+t"Distances from $n
gmt grdcontour dist.nc -A1000+v+ukm+fwhite -Glz-/z+ -S8 -C500 -O -K -J -Wathin,white -Wcthinnest,white,- >> %ps%
REM For each of the cities, plot great circle arc to Rome with gmt psxy
-
-echo 105.87 21.02 > pts.d
-echo %lon% %lat% >> pts.d
-gmt psxy -R -J -O -K -Wthickest,red pts.d >> %ps%
-echo 282.95 -12.1 > pts.d
-echo %lon% %lat% >> pts.d
-gmt psxy -R -J -O -K -Wthickest,red pts.d >> %ps%
-echo 178.42 -18.13 > pts.d
-echo %lon% %lat% >> pts.d
-gmt psxy -R -J -O -K -Wthickest,red pts.d >> %ps%
-echo 237.67 47.58 > pts.d
-echo %lon% %lat% >> pts.d
-gmt psxy -R -J -O -K -Wthickest,red pts.d >> %ps%
-echo 28.20 -25.75 > pts.d
-echo %lon% %lat% >> pts.d
-gmt psxy -R -J -O -K -Wthickest,red pts.d >> %ps%
+gmt psxy -R -J -O -K -Wthickest,red -Fr%lon%/%lat% cities.d >> %ps%
REM Plot red squares at cities and plot names:
gmt psxy -R -J -O -K -Ss0.2 -Gred -Wthinnest cities.d >> %ps%
diff --git a/doc/examples/ex23/example_23.sh b/doc/examples/ex23/example_23.sh
index 65edea9..c434f40 100755
--- a/doc/examples/ex23/example_23.sh
+++ b/doc/examples/ex23/example_23.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# GMT EXAMPLE 23
-# $Id: example_23.sh 16652 2016-06-28 21:02:26Z pwessel $
+# $Id: example_23.sh 17434 2017-01-12 22:59:32Z pwessel $
#
# Purpose: Plot distances from Rome and draw shortest paths
# GMT modules: grdmath, grdcontour, pscoast, psxy, pstext, grdtrack
@@ -35,10 +35,7 @@ gmt grdcontour dist.nc -A1000+v+u" km"+fwhite -Glz-/z+ -S8 -C500 -O -K -J \
-Wathin,white -Wcthinnest,white,- >> $ps
# For each of the cities, plot great circle arc to Rome with gmt psxy
-
-while read clon clat city; do
- (echo $lon $lat; echo $clon $clat) | gmt psxy -R -J -O -K -Wthickest,red >> $ps
-done < cities.d
+gmt psxy -R -J -O -K -Wthickest,red -Fr$lon/$lat cities.d >> $ps
# Plot red squares at cities and plot names:
gmt psxy -R -J -O -K -Ss0.2 -Gred -Wthinnest cities.d >> $ps
diff --git a/doc/examples/ex24/example_24.bat b/doc/examples/ex24/example_24.bat
index 33a1da7..8c46308 100755
--- a/doc/examples/ex24/example_24.bat
+++ b/doc/examples/ex24/example_24.bat
@@ -1,7 +1,7 @@
REM
REM GMT EXAMPLE 24
REM
-REM $Id: example_24.bat 16750 2016-07-09 05:44:02Z pwessel $
+REM $Id: example_24.bat 17434 2017-01-12 22:59:32Z pwessel $
REM
REM Purpose: Extract subsets of data based on geospatial criteria
REM
@@ -12,7 +12,7 @@ echo GMT EXAMPLE 24
set ps=example_24.ps
REM Highlight oceanic earthquakes within 3000 km of Hobart and > 1000 km from dateline
-echo 147:13 -42:48 6000 Hobart > point.txt
+echo 147:13 -42:48 6000 > point.txt
REM Our proxy for the dateline
echo 62 | gawk "{printf \"%%c\n\", $1}" > dateline.txt
echo 180 0 >> dateline.txt
@@ -22,8 +22,7 @@ gmt pscoast %R% -JM9i -K -Gtan -Sdarkblue -Wthin,white -Dl -A500 -Ba20f10g10 -BW
gmt psxy -R -J -O -K oz_quakes.txt -Sc0.05i -Gred >> %ps%
gmt select oz_quakes.txt -Ldateline.txt+d1000k -Nk/s -Cpoint.txt+d3000k -fg -R -Il | gmt psxy -R -JM -O -K -Sc0.05i -Ggreen >> %ps%
gmt psxy point.txt -R -J -O -K -SE- -Wfat,white >> %ps%
-echo {print $1, $2, $4} > awk.txt
-gawk -f awk.txt point.txt | gmt pstext -R -J -O -K -D0.1i/-0.1i -F+f14p,Helvetica-Bold,white+jLT >> %ps%
+gmt pstext point.txt -R -J -O -K -D0.1i/-0.1i -F+f14p,Helvetica-Bold,white+jLT+tHobart >> %ps%
gmt psxy -R -J -O -K point.txt -Wfat,white -S+0.2i >> %ps%
gmt psxy -R -J -O dateline.txt -Wfat,white -A >> %ps%
del point.txt
diff --git a/doc/examples/ex24/example_24.sh b/doc/examples/ex24/example_24.sh
index bde5234..3328bf3 100755
--- a/doc/examples/ex24/example_24.sh
+++ b/doc/examples/ex24/example_24.sh
@@ -1,14 +1,14 @@
#!/bin/bash
# GMT EXAMPLE 24
-# $Id: example_24.sh 16750 2016-07-09 05:44:02Z pwessel $
+# $Id: example_24.sh 17434 2017-01-12 22:59:32Z pwessel $
#
# Purpose: Extract subsets of data based on geospatial criteria
# GMT modules: gmtselect, pscoast, psxy, gmtinfo
-# Unix progs: echo, cat, awk
+# Unix progs: echo, cat
#
# Highlight oceanic earthquakes within 3000 km of Hobart and > 1000 km from dateline
ps=example_24.ps
-echo "147:13 -42:48 6000 Hobart" > point.txt
+echo "147:13 -42:48 6000" > point.txt
cat << END > dateline.txt
> Our proxy for the dateline
180 0
@@ -20,8 +20,8 @@ gmt psxy -R -J -O -K oz_quakes.txt -Sc0.05i -Gred >> $ps
gmt select oz_quakes.txt -Ldateline.txt+d1000k -Nk/s -Cpoint.txt+d3000k -fg -R -Il \
| gmt psxy -R -JM -O -K -Sc0.05i -Ggreen >> $ps
gmt psxy point.txt -R -J -O -K -SE- -Wfat,white >> $ps
-$AWK '{print $1, $2, $4}' point.txt | gmt pstext -R -J -O -K -F+f14p,Helvetica-Bold,white+jLT \
- -D0.1i/-0.1i >> $ps
+gmt pstext point.txt -R -J -F+f14p,Helvetica-Bold,white+jLT+tHobart \
+ -O -K -D0.1i/-0.1i >> $ps
gmt psxy -R -J -O -K point.txt -Wfat,white -S+0.2i >> $ps
gmt psxy -R -J -O dateline.txt -Wfat,white -A >> $ps
rm -f point.txt dateline.txt
diff --git a/doc/examples/ex30/example_30.bat b/doc/examples/ex30/example_30.bat
index 3b900b2..a2525d8 100755
--- a/doc/examples/ex30/example_30.bat
+++ b/doc/examples/ex30/example_30.bat
@@ -1,5 +1,5 @@
REM GMT EXAMPLE 30
-REM $Id: example_30.bat 16750 2016-07-09 05:44:02Z pwessel $
+REM $Id: example_30.bat 17378 2016-12-06 19:09:38Z jluis $
REM
REM Purpose: Show graph mode and math angles
REM GMT progs: gmtmath, psbasemap, pstext and psxy
@@ -10,7 +10,7 @@ echo GMT EXAMPLE 30
set ps=example_30.ps
gmt set PS_CHAR_ENCODING Standard+
-gmt psbasemap -R0/360/-1.25/1.75 -JX8i/6i -Bx90f30+u"\\312" -By1g10 -BWS+t"Two Trigonometric Functions" -K --MAP_FRAME_TYPE=graph --MAP_VECTOR_SHAPE=0.5 > %ps%
+gmt psbasemap -R0/360/-1.25/1.75 -JX8i/6i -Bx90f30+u"\312" -By1g10 -BWS+t"Two Trigonometric Functions" -K --MAP_FRAME_TYPE=graph --MAP_VECTOR_SHAPE=0.5 > %ps%
REM Draw sine an cosine curves
diff --git a/doc/examples/ex31/fonts/LICENCE.txt b/doc/examples/ex31/fonts/LICENCE.txt
index dd8b672..68655df 100644
--- a/doc/examples/ex31/fonts/LICENCE.txt
+++ b/doc/examples/ex31/fonts/LICENCE.txt
@@ -3,5 +3,5 @@
Unsere Schriften sind frei im Sinne der GPL, d.h. (stark vereinfacht) dass Veränderungen an der Schriftart erlaubt sind unter der Bedingung, dass diese wieder der Öffentlichkeit unter gleicher Lizenz freigegeben werden. Querdenker behaupten oft, dass bei der Verwendung einer GPL-Schrift eingebettet in beispielsweise eine PDF auch diese freigestellt werden müsse. Deshalb gibt es die sogenannte "Font-exception" der GPL (welche diesem Lizenztext hinzugefügt wurde). Weitere Informationen zur [...]
Zusätzlich stehen die Schriften unter der Open Font License (siehe OFL.txt).
-Our fonts are free in the sense of the GPL. In short: Changing the font is allowed as long as the derivative work is published under the same licence again. Pedantics keep claiming that the embedded use of GPL-fonts in i.e. PDFs requires the free publication of the PDF as well. This is why our GPL contains the so called "font exception". Further information about the GPL (licence text with font exception see GPL.txt in this package).
-Additionally our fonts are licensed under the Open Fonts License (see OFL.txt).
\ No newline at end of file
+Our fonts are free in the sense of the GPL. In short: Changing the font is allowed as long as the derivative work is published under the same license again. Pedantics keep claiming that the embedded use of GPL-fonts in i.e. PDFs requires the free publication of the PDF as well. This is why our GPL contains the so called "font exception". Further information about the GPL (license text with font exception see GPL.txt in this package).
+Additionally our fonts are licensed under the Open Fonts License (see OFL.txt).
diff --git a/doc/examples/ex31/fonts/README.txt b/doc/examples/ex31/fonts/README.txt
index 39f2c95..a9853dd 100644
--- a/doc/examples/ex31/fonts/README.txt
+++ b/doc/examples/ex31/fonts/README.txt
@@ -15,14 +15,14 @@ The font files are available as TTF (TrueType) and OTF (OpenType) fonts. The TTF
and the OTF
"LinuxLibertine O" and "Linux Biolinum O".
-So that both types can be installed and used parallely.
+So that both types can be installed and used parallelly.
Most often TTF is the better supported format though OTF has advances in printing. Decide yourself what is better for your purpose. OpenType-features are equally available in both fonts. Note that OpenOffice doesn't support OTFs, yet.
4. THE LINUX BIOLINUM FONT FACE
Please note: The Biolinum is a very early version. While you use Libertine-Fonts without any warranty anyway, take special care with this young font face.
5. HINTING
-The TrueType-hinting is a complex technique and our editor FontForge doesn't support full possibilities (but it becomes alot better version by version)...
+The TrueType-hinting is a complex technique and our editor FontForge doesn't support full possibilities (but it becomes a lot better version by version)...
Since version 2.7 also the normal TTFs are hinted. If you don't like this, send me a mail. You may also try the OpenTypes (which contain PS-Hintings which are quite good supported by FontForge).
6. DOWNLOAD AND CONTACT
diff --git a/doc/examples/ex42/example_42.bat b/doc/examples/ex42/example_42.bat
index 7453f63..88069b7 100755
--- a/doc/examples/ex42/example_42.bat
+++ b/doc/examples/ex42/example_42.bat
@@ -1,8 +1,8 @@
REM GMT EXAMPLE 42
-REM $Id: example_42.bat 16750 2016-07-09 05:44:02Z pwessel $
+REM $Id: example_42.bat 17434 2017-01-12 22:59:32Z pwessel $
REM
REM Purpose: Illustrate Antarctica and stereographic projection
-REM GMT progs: gmtset, makecpt, grdimage, pscoast, pslegend, psscale, pstext, psxy [grdreformat]
+REM GMT progs: gmtset, makecpt, grdimage, pscoast, pslegend, psscale, pstext, psxy [grdconvert]
REM DOS calls: [curl]
REM
@@ -13,7 +13,7 @@ gmt set FONT_ANNOT_PRIMARY 12p FONT_LABEL 12p PROJ_ELLIPSOID WGS-84 FORMAT_GEO_M
REM Data obtained via website and converted to netCDF thus:
REM curl http://www.antarctica.ac.uk//bas_research/data/access/bedmap/download/bedelev.asc.gz
REM gunzip bedelev.asc.gz
-REM grdreformat bedelev.asc BEDMAP_elevation.nc=ns -V
+REM grdconvert bedelev.asc BEDMAP_elevation.nc=ns -V
gmt makecpt -Cearth -T-7000/4000 > t.cpt
gmt grdimage -Ct.cpt BEDMAP_elevation.nc -Jx1:60000000 -Q -P -K > %ps%
diff --git a/doc/examples/ex42/example_42.sh b/doc/examples/ex42/example_42.sh
index be44f97..ae7a2aa 100755
--- a/doc/examples/ex42/example_42.sh
+++ b/doc/examples/ex42/example_42.sh
@@ -1,10 +1,10 @@
#!/bin/bash
# GMT EXAMPLE 42
-# $Id: example_42.sh 16673 2016-06-29 20:54:35Z pwessel $
+# $Id: example_42.sh 17434 2017-01-12 22:59:32Z pwessel $
#
# Purpose: Illustrate Antarctica and stereographic projection
# GMT modules: makecpt, grdimage, pscoast, pslegend, psscale, pstext, psxy
-# Unix progs: [curl grdreformat]
+# Unix progs: [curl grdconvert]
#
ps=example_42.ps
@@ -12,7 +12,7 @@ gmt set FONT_ANNOT_PRIMARY 12p FONT_LABEL 12p PROJ_ELLIPSOID WGS-84 FORMAT_GEO_M
# Data obtained via website and converted to netCDF thus:
# curl http://www.antarctica.ac.uk//bas_research/data/access/bedmap/download/bedelev.asc.gz
# gunzip bedelev.asc.gz
-# grdreformat bedelev.asc BEDMAP_elevation.nc=ns -V
+# grdconvert bedelev.asc BEDMAP_elevation.nc=ns -V
gmt makecpt -Cearth -T-7000/4000 > t.cpt
gmt grdimage -Ct.cpt BEDMAP_elevation.nc -Jx1:60000000 -Q -P -K > $ps
gmt pscoast -R-180/180/-90/-60 -Js0/-90/-71/1:60000000 -Bafg -Di -W0.25p -O -K >> $ps
diff --git a/doc/examples/ex43/example_43.bat b/doc/examples/ex43/example_43.bat
index 0bd21df..a7fc942 100755
--- a/doc/examples/ex43/example_43.bat
+++ b/doc/examples/ex43/example_43.bat
@@ -1,5 +1,5 @@
REM GMT EXAMPLE 43
-REM $Id: example_43.bat 16793 2016-07-13 23:30:30Z pwessel $
+REM $Id: example_43.bat 17434 2017-01-12 22:59:32Z pwessel $
REM
REM Purpose: Illustrate regression and outlier detection
REM GMT progs: gmtregress, psbasemap, pstext, psxy
@@ -23,7 +23,7 @@ gmt psxy -R-2/6/-1/5 -JX6i -O -K -L+d+p0.25p,- -Gcornsilk1 rls_line.txt >> %ps%
gmt psxy -R -J -O -K rls_line.txt -W3p >> %ps%
gmt psxy -R -J -O -K ls_line.txt -W1p,- >> %ps%
gmt psxy -R -J -O -K -Sc0.15i -Ct.cpt -Wfaint -i0,1,6 model.txt >> %ps%
-awk '{print $1, $2, NR}' A.txt | gmt pstext -R -J -O -K -F+f8p+jCM -B0 >> %ps%
+gmt pstext A.txt -R -J -O -K -F+f8p+jCM+r1 -B0 >> %ps%
REM Build legend
echo H 18 Times-Roman Index of Animals > legend.txt
echo D 1p >> legend.txt
diff --git a/doc/examples/ex43/example_43.ps b/doc/examples/ex43/example_43.ps
index c6f12f4..911ee87 100644
--- a/doc/examples/ex43/example_43.ps
+++ b/doc/examples/ex43/example_43.ps
@@ -1,11 +1,11 @@
%!PS-Adobe-3.0
%%BoundingBox: 0 0 612 792
-%%HiResBoundingBox: 0 0 612 792
-%%Title: GMT v5.2.0_r14419 [64-bit] Document from psbasemap
+%%HiResBoundingBox: 0 0 612 792
+%%Title: GMT v5.3.2_r17374 [64-bit] Document from psbasemap
%%Creator: GMT5
%%For: pwessel
%%DocumentNeededResources: font Helvetica
-%%CreationDate: Mon Jun 29 14:12:17 2015
+%%CreationDate: Tue Jan 3 23:53:37 2017
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Orientation: Portrait
@@ -272,7 +272,6 @@ end
PSL_heights psl_k PSL_height put
} for
} def
-%%%%%%%%%%%%%%%%%%% CURVED BASELINE TEXT PLACEMENT FUNCTIONS
/PSL_curved_path_labels
{ /psl_bits exch def
/PSL_placetext psl_bits 2 and 2 eq def
@@ -523,7 +522,6 @@ end
{PSL_xp 0 get PSL_yp 0 get M
1 1 j { /ii exch def PSL_xp ii get PSL_yp ii get L} for
} def
-%%%%%%%%%%%%%%%%%%% DRAW BASELINE TEXT SEGMENT LINES
/PSL_draw_path_lines
{
/PSL_n_paths1 PSL_n_paths 1 sub def
@@ -549,7 +547,6 @@ end
} for
U
} def
-%%%%%%%%%%%%%%%%%%% STRAIGHT BASELINE TEXT PLACEMENT FUNCTIONS
/PSL_straight_path_labels
{
/psl_bits exch def
@@ -666,8 +663,8 @@ O0
1800 4800 TM
% PostScript produced by:
-%%GMT: psbasemap -R0.01/1e6/0.1/1e5 -JX6il -P -Ba1pf3 '-Bx+lLog at -10@- body weight (kg)' '-By+lLog at -10@- brain weight (g)' -BWSne+glightblue -K -X1.5i -Y4i
-%%PROJ: xy 0.01000000 1000000.00000000 0.10000000 100000.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psbasemap -R0.01/1e6/0.1/1e5 -JX6il -P -Ba1pf3 '-Bx+lLog at -10@- body weight (kg)' '-By+lLog at -10@- brain weight (g)' -BWSne+glightblue -K -X1.5i -Y4i
+%@PROJ: xy 0.01000000 1000000.00000000 0.10000000 100000.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_1
0 setlinecap
0 setlinejoin
@@ -1088,8 +1085,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R-2/6/-1/5 -JX6i -O -K rls_line.txt -L+yt -Glightgoldenrod
-%%PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R-2/6/-1/5 -JX6i -O -K rls_line.txt -L+yt -Glightgoldenrod
+%@PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_2
0 setlinecap
0 setlinejoin
@@ -1108,8 +1105,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: pstext -R0.01/1e6/0.1/1e5 -JX6il -O -K -F+f12p+jRM -Dj0.15i
-%%PROJ: xy 0.01000000 1000000.00000000 0.10000000 100000.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: pstext -R0.01/1e6/0.1/1e5 -JX6il -O -K -F+f12p+jRM -Dj0.15i
+%@PROJ: xy 0.01000000 1000000.00000000 0.10000000 100000.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_3
0 setlinecap
0 setlinejoin
@@ -1135,8 +1132,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R-2/6/-1/5 -JX6i -O -K -L+d+p0.25p,- -Gcornsilk1 rls_line.txt
-%%PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R-2/6/-1/5 -JX6i -O -K -L+d+p0.25p,- -Gcornsilk1 rls_line.txt
+%@PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_4
0 setlinecap
0 setlinejoin
@@ -1214,8 +1211,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R-2/6/-1/5 -JX6i -O -K rls_line.txt -W3p
-%%PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R-2/6/-1/5 -JX6i -O -K rls_line.txt -W3p
+%@PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_5
0 setlinecap
0 setlinejoin
@@ -1231,8 +1228,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R-2/6/-1/5 -JX6i -O -K ls_line.txt -W1p,-
-%%PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R-2/6/-1/5 -JX6i -O -K ls_line.txt -W1p,-
+%@PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_6
0 setlinecap
0 setlinejoin
@@ -1250,8 +1247,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R-2/6/-1/5 -JX6i -O -K -Sc0.15i -Ct.cpt -Wfaint -i0,1,6 model.txt
-%%PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R-2/6/-1/5 -JX6i -O -K -Sc0.15i -Ct.cpt -Wfaint -i0,1,6 model.txt
+%@PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_7
0 setlinecap
0 setlinejoin
@@ -1311,8 +1308,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: pstext -R-2/6/-1/5 -JX6i -O -K -F+f8p+jCM -B0
-%%PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: pstext A.txt -R-2/6/-1/5 -JX6i -O -K -F+f8p+jCM+r1 -B0
+%@PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_8
0 setlinecap
0 setlinejoin
@@ -1384,8 +1381,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: pslegend -DjBR+w2.5i+o0.4c -R-2/6/-1/5 -JX6i -O -K -F+p1p+gwhite+s+c3p+r legend.txt --FONT_LABEL=8p
-%%PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: pslegend -DjBR+w2.5i+o0.4c -R-2/6/-1/5 -JX6i -O -K -F+p1p+gwhite+s+c3p+r legend.txt --FONT_LABEL=8p
+%@PROJ: xy -2.00000000 6.00000000 -1.00000000 5.00000000 -2.000 6.000 -1.000 5.000 +xy
%%BeginObject PSL_Layer_9
0 setlinecap
0 setlinejoin
@@ -1406,73 +1403,73 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: pstext -R0/6/0/6 -Jx1i -O -K -N -F+f+j @GMTAPI at -000001
-%%PROJ: xy 0.00000000 6.00000000 0.00000000 6.00000000 0.000 6.000 0.000 6.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: pstext -R0/6/0/6 -Jx1i -O -K -N -F+f+j @GMTAPI at -000001
+%@PROJ: xy 0.00000000 6.00000000 0.00000000 6.00000000 0.000 6.000 0.000 6.000 +xy
%%BeginObject PSL_Layer_10
0 setlinecap
0 setlinejoin
3.32551 setmiterlimit
-1500 2294 M PSL_font_encode 4 get 0 eq {Standard+_Encoding /Times-Roman /Times-Roman PSL_reencode PSL_font_encode 4 1 put} if
-300 F4
+PSL_font_encode 4 get 0 eq {Standard+_Encoding /Times-Roman /Times-Roman PSL_reencode PSL_font_encode 4 1 put} if
+1500 2294 M 300 F4
(Index of Animals) bc Z
-105 2000 M PSL_font_encode 0 get 0 eq {Standard+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
-133 F0
+PSL_font_encode 0 get 0 eq {Standard+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
+105 2000 M 133 F0
(1.) bc Z
-277 2000 M (Mountain beaver) Z
+277 2000 M (Mountain beaver) bl Z
1605 2000 M (2.) bc Z
-1777 2000 M (Cow) Z
+1777 2000 M (Cow) bl Z
105 1853 M (3.) bc Z
-277 1853 M (Gray wolf) Z
+277 1853 M (Gray wolf) bl Z
1605 1853 M (4.) bc Z
-1777 1853 M (Goat) Z
+1777 1853 M (Goat) bl Z
105 1707 M (5.) bc Z
-277 1707 M (Guinea pig) Z
+277 1707 M (Guinea pig) bl Z
1605 1707 M (6.) bc Z
-1777 1707 M (Diplodocus) Z
+1777 1707 M (Diplodocus) bl Z
105 1560 M (7.) bc Z
-277 1560 M (Asian elephant) Z
+277 1560 M (Asian elephant) bl Z
1605 1560 M (8.) bc Z
-1777 1560 M (Donkey) Z
+1777 1560 M (Donkey) bl Z
105 1413 M (9.) bc Z
-277 1413 M (Horse) Z
+277 1413 M (Horse) bl Z
1605 1413 M (10.) bc Z
-1777 1413 M (Potar monkey) Z
+1777 1413 M (Potar monkey) bl Z
105 1267 M (11.) bc Z
-277 1267 M (Cat) Z
+277 1267 M (Cat) bl Z
1605 1267 M (12.) bc Z
-1777 1267 M (Giraffe) Z
+1777 1267 M (Giraffe) bl Z
105 1120 M (13.) bc Z
-277 1120 M (Gorilla) Z
+277 1120 M (Gorilla) bl Z
1605 1120 M (14.) bc Z
-1777 1120 M (Human) Z
+1777 1120 M (Human) bl Z
105 973 M (15.) bc Z
-277 973 M (African elephant) Z
+277 973 M (African elephant) bl Z
1605 973 M (16.) bc Z
-1777 973 M (Triceratops) Z
+1777 973 M (Triceratops) bl Z
105 827 M (17.) bc Z
-277 827 M (Rhesus monkey) Z
+277 827 M (Rhesus monkey) bl Z
1605 827 M (18.) bc Z
-1777 827 M (Kangaroo) Z
+1777 827 M (Kangaroo) bl Z
105 680 M (19.) bc Z
-277 680 M (Hamster) Z
+277 680 M (Hamster) bl Z
1605 680 M (20.) bc Z
-1777 680 M (Mouse) Z
+1777 680 M (Mouse) bl Z
105 533 M (21.) bc Z
-277 533 M (Rabbit) Z
+277 533 M (Rabbit) bl Z
1605 533 M (22.) bc Z
-1777 533 M (Sheep) Z
+1777 533 M (Sheep) bl Z
105 387 M (23.) bc Z
-277 387 M (Jaguar) Z
+277 387 M (Jaguar) bl Z
1605 387 M (24.) bc Z
-1777 387 M (Chimpanzee) Z
+1777 387 M (Chimpanzee) bl Z
105 240 M (25.) bc Z
-277 240 M (Brachiosaurus) Z
+277 240 M (Brachiosaurus) bl Z
1605 240 M (26.) bc Z
-1777 240 M (Rat) Z
+1777 240 M (Rat) bl Z
105 93 M (27.) bc Z
-277 93 M (Mole) Z
+277 93 M (Mole) bl Z
1605 93 M (28.) bc Z
-1777 93 M (Pig) Z
+1777 93 M (Pig) bl Z
%%EndObject
-4011 -189 T
%%EndObject
@@ -1482,8 +1479,8 @@ O0
0 -3480 TM
% PostScript produced by:
-%%GMT: psbasemap -R0.5/28.5/-10/4 -JX6i/2i -O -K -Y-2.9i -B+glightgoldenrod
-%%PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psbasemap -R0.5/28.5/-10/4 -JX6i/2i -O -K -Y-2.9i -B+glightgoldenrod
+%@PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy
%%BeginObject PSL_Layer_11
0 setlinecap
0 setlinejoin
@@ -1498,8 +1495,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R0.5/28.5/-10/4 -JX6i/2i -O -K -Gcornsilk1 -W0.25p,-
-%%PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R0.5/28.5/-10/4 -JX6i/2i -O -K -Gcornsilk1 -W0.25p,-
+%@PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy
%%BeginObject PSL_Layer_12
0 setlinecap
0 setlinejoin
@@ -1525,8 +1522,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R0.5/28.5/-10/4 -JX6i/2i -O -K -Sb1ub0 -W0.25p -Ct.cpt
-%%PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R0.5/28.5/-10/4 -JX6i/2i -O -K -Sb1ub0 -W0.25p -Ct.cpt
+%@PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy
%%BeginObject PSL_Layer_13
0 setlinecap
0 setlinejoin
@@ -1586,8 +1583,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psbasemap -R0.5/28.5/-10/4 -JX6i/2i -O -K -Bafg100 '-Bx+lAnimal index number' -By+lz-zcore -BWSne
-%%PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psbasemap -R0.5/28.5/-10/4 -JX6i/2i -O -K -Bafg100 '-Bx+lAnimal index number' -By+lz-zcore -BWSne
+%@PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy
%%BeginObject PSL_Layer_14
0 setlinecap
0 setlinejoin
@@ -1764,8 +1761,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R0.5/28.5/-10/4 -JX6i/2i -O -T
-%%PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R0.5/28.5/-10/4 -JX6i/2i -O -T
+%@PROJ: xy 0.50000000 28.50000000 -10.00000000 4.00000000 0.500 28.500 -10.000 4.000 +xy
%%BeginObject PSL_Layer_15
0 setlinecap
0 setlinejoin
diff --git a/doc/examples/ex43/example_43.sh b/doc/examples/ex43/example_43.sh
index 20664de..29a3292 100755
--- a/doc/examples/ex43/example_43.sh
+++ b/doc/examples/ex43/example_43.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# GMT EXAMPLE 43
-# $Id: example_43.sh 16793 2016-07-13 23:30:30Z pwessel $
+# $Id: example_43.sh 17434 2017-01-12 22:59:32Z pwessel $
#
# Purpose: Illustrate regression and outlier detection
# GMT modules: gmtregress, psbasemap, pslegend, pstext, psxy
@@ -24,7 +24,7 @@ gmt psxy -R-2/6/-1/5 -JX6i -O -K -L+d+p0.25p,- -Gcornsilk1 rls_line.txt >> $ps
gmt psxy -R -J -O -K rls_line.txt -W3p >> $ps
gmt psxy -R -J -O -K ls_line.txt -W1p,- >> $ps
gmt psxy -R -J -O -K -Sc0.15i -Ct.cpt -Wfaint -i0,1,6 model.txt >> $ps
-awk '{print $1, $2, NR}' A.txt | gmt pstext -R -J -O -K -F+f8p+jCM -B0 >> $ps
+gmt pstext A.txt -R -J -O -K -F+f8p+jCM+r1 -B0 >> $ps
# Build legend
cat << EOF > legend.txt
H 18 Times-Roman Index of Animals
diff --git a/doc/fig/CMakeLists.txt b/doc/fig/CMakeLists.txt
index ff10660..53376e9 100644
--- a/doc/fig/CMakeLists.txt
+++ b/doc/fig/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 17032 2016-08-30 05:00:34Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/doc/rst/CMakeLists.txt b/doc/rst/CMakeLists.txt
index d4a5e4f..2d03f68 100644
--- a/doc/rst/CMakeLists.txt
+++ b/doc/rst/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/doc/rst/conf.py.in b/doc/rst/conf.py.in
index 4326409..d3b63b8 100644
--- a/doc/rst/conf.py.in
+++ b/doc/rst/conf.py.in
@@ -25,7 +25,7 @@ import sys, os
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.pngmath', 'sphinx.ext.ifconfig']
+extensions = ['sphinx.ext.imgmath', 'sphinx.ext.ifconfig']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
diff --git a/doc/rst/source/GMT_API.rst b/doc/rst/source/GMT_API.rst
index c3fa1d8..3d58728 100644
--- a/doc/rst/source/GMT_API.rst
+++ b/doc/rst/source/GMT_API.rst
@@ -831,6 +831,8 @@ any of them to see the full syntax of each function.
+--------------------------+-------------------------------------------------------+
| GMT_Set_Columns_ | Specify how many output columns to use for rec-by-rec |
+--------------------------+-------------------------------------------------------+
+ | GMT_Set_Geometry_ | Specify data geometry for rec-by-rec i/o |
+ +--------------------------+-------------------------------------------------------+
| GMT_Set_Index_ | Convert row, col into a grid or image index |
+--------------------------+-------------------------------------------------------+
| GMT_Status_IO_ | Check status of record-by-record i/o |
@@ -1325,7 +1327,10 @@ are addressed by
which returns a pointer to the allocated resource. Specify which
:ref:`family <tbl-family>` and select ``mode`` from ``GMT_DUPLICATE_DATA``,
``GMT_DUPLICATE_ALLOC``, and ``GMT_DUPLICATE_NONE``, as discussed above
-(also see ``mode`` discussion above). For :ref:`GMT_DATASET <struct-dataset>` and :ref:`GMT_TEXTSET <struct-textset>` you can
+(also see ``mode`` discussion above). For :ref:`GMT_GRID <struct-grid>`
+you may add ``GMT_DUPLICATE_RESET`` which will ensure the duplicate grid
+will have normal padding (useful when the original has non-standard padding).
+For :ref:`GMT_DATASET <struct-dataset>` and :ref:`GMT_TEXTSET <struct-textset>` you can
add modifiers ``GMT_ALLOC_VERTICAL`` or ``GMT_ALLOC_HORIZONTAL`` to the ``mode`` if you
wish to put all the data into a single long table or to paste all tables
side-by-side, respectively (thus getting one wide table instead).
@@ -1354,7 +1359,7 @@ In this case you will use
void *GMT_Convert_Data (void *API, void *In, unsigned int family_in,
void *Out, unsigned int family_out, unsigned int flag[]);
-which returns a pointer to the converted resource. Specify the neeeded
+which returns a pointer to the converted resource. Specify the needed
:ref:`family <tbl-family>` for both the input and output resources and set the
(up to) three flags passed via the ``flag`` array. The first ``flag[0]``
determines how table headers and segment headers should be handled.
@@ -1652,6 +1657,22 @@ written during initialization; choose between ``GMT_HEADER_ON`` and
``GMT_HEADER_OFF``. The function returns 1 if there is an
error; otherwise it returns 0.
+Set data geometry
+~~~~~~~~~~~~~~~~~
+
+Typically only done for output data written record by record, we designate
+the data set's geometry by calling
+
+.. _GMT_Set_Geometry:
+
+ ::
+
+ int _GMT_Set_Geometry (void *API, unsigned int direction, unsigned int geometry);
+
+where ``direction`` is either ``GMT_IN`` or ``GMT_OUT`` and :ref:`geometry <tbl-geometry>`
+sets the geometry that will be produced (or read).
+
+
Importing a data record
~~~~~~~~~~~~~~~~~~~~~~~
@@ -1674,7 +1695,7 @@ identify segment headers we instead return a NULL pointer. The ``nfields``
integer pointer will return the number of fields returned; pass NULL if your
program should ignore this information.
-Normally (i.e., ``mode`` = ``GMT_READ_DOUBLE``), we return a pointer to
+Normally (i.e., ``mode`` = ``GMT_READ_DATA``), we return a pointer to
a double array. To read text records, supply instead ``mode`` =
``GMT_READ_TEXT`` and we will return a pointer to the text
record. However, if you have input records that mixes organized
@@ -2204,7 +2225,10 @@ where ``data`` is a pointer to any of the four structures discussed previously.
using GMT_Put_Row_. By default the rows will be automatically
processed in order. To completely specify which row to be written,
use ``GMT_GRID_ROW_BY_ROW_MANUAL`` instead; this requires a file format
- that supports direct writes, such as netCDF.
+ that supports direct writes, such as netCDF. Finally, if you are
+ preparing a geographic grid outside of GMT you need to add the mode
+ ``GMT_GRID_IS_GEO`` to ensure that the proper metadata will be written
+ to the netCDF header, thus letting the grid be recognized as such.
Note: If ``method`` is GMT_IS_FILE, :ref:`family <tbl-family>` is ``GMT_IS_GRID``,
and the filename implies a change from NaN to another value then the grid is
@@ -2281,8 +2305,8 @@ initialize the destination with GMT_Init_IO_. Note that for families
:ref:`GMT_DATASET <struct-dataset>` structure directly. As mentioned, ``mode`` affects what is
actually written:
-**GMT_WRITE_DOUBLE**.
- Normal operation that builds the current output record from the values in ``rec``.
+**GMT_WRITE_DATA**.
+ Normal operation that builds the current output record from the numerical values in ``rec``.
**GMT_WRITE_TEXT**.
For ASCII output mode we write the text string ``rec``. If ``rec``
@@ -2863,11 +2887,11 @@ as other languages (Python, Java, Julia, etc.) or tools (MATLAB, Octave,
etc.) need to manipulate linked options in a special way. For instance,
a GMT call in the MATLAB or Octave application might look like
- ::
+.. code-block:: none
- table = gmt ('blockmean -R30W/30E/10S/10N -I2m', [x y z]);
- grid = gmt ('surface -R -I2m -Lu', table, high_limit_grid);
- grid2 = gmt ('grdmath ? LOG10 ? MUL', grid, grid);
+ table = gmt('blockmean -R30W/30E/10S/10N -I2m', [x y z]);
+ grid = gmt('surface -R -I2m -Lu', table, high_limit_grid);
+ grid2 = gmt('grdmath ? LOG10 ? MUL', grid, grid);
Most of the time our implicit rules will take care of the ordering. The
rule says that all required input data items must be listed before any
@@ -2889,7 +2913,7 @@ The prototype is
::
struct GMT_RESOURCE *GMT_Encode_Options (void *API, const char *module, int n_in,
- struct GMT_OPTION **head, int *n_items);
+ struct GMT_OPTION **head, int *n_items);
where ``module`` is the name of the module whose linked options are
pointed to by ``*head``, ``n_in`` contains the number of *input*
@@ -2962,7 +2986,7 @@ your program needs to present the FFT option usage you can call
::
unsigned int GMT_FFT_Option (void *API, char option, unsigned int dim,
- const char *string);
+ const char *string);
Here, ``option`` is the unique character used for this particular
program option (most GMT programs have standardized on using 'N' but
@@ -2996,7 +3020,7 @@ conveniently performed for you by
::
void *GMT_FFT_Create (void *API, void *X, unsigned int dim,
- unsigned int mode, void *F);
+ unsigned int mode, void *F);
Here, ``X`` is either your dataset or grid pointer, ``dim`` is the
dimension of the transform (1 or 2 only), ``mode`` passes various flags to the setup, such as whether
@@ -3062,7 +3086,7 @@ A lower-level 2-D FFT is also available via
::
int GMT_FFT_2D (void *API, float *data, unsigned int n_columns,
- unsigned int n_rows, int direction, unsigned int mode);
+ unsigned int n_rows, int direction, unsigned int mode);
which takes as ``direction`` either ``GMT_FFT_FWD`` or ``GMT_FFT_INV``. The
``mode`` is used to specify if we pass a real (``GMT_FFT_REAL``) or complex
@@ -3167,7 +3191,7 @@ To inquire about the range of information in a grid, use
::
int GMT_F77_readgrdinfo (unsigned int dim[], double limits[], double inc[],
- char *title, char *remark, const char *file)
+ char *title, char *remark, const char *file)
where ``dim`` returns the grid width, height, and registration, ``limits`` returns the min and max values for x, y, and z
as three consecutive pairs, ``inc`` returns the x and y increments, while the ``title`` and ``remark``
@@ -3182,7 +3206,7 @@ To actually read the grid, we use
::
int GMT_F77_readgrd (float *array, unsigned int dim[], double wesn[],
- double inc[], char *title, char *remark, const char *file)
+ double inc[], char *title, char *remark, const char *file)
where ``array`` is the 1-D grid data array, ``dim`` returns the grid width, height, and registration,
``limits`` returns the min and max values for x, y, and z, ``inc`` returns the x and y increments, and
@@ -3198,8 +3222,8 @@ Finally, to write a grid to file you can use
::
- int GMT_F77_writegrd_(float *array, unsigned int dim[], double wesn[],
- double inc[], const char *title, const char *remark, const char *file)
+ int GMT_F77_writegrd_(float *array, unsigned int dim[], double wesn[], double inc[],
+ const char *title, const char *remark, const char *file)
where ``array`` is the 1-D grid data array, ``dim`` specifies the grid width, height, and registration,
``limits`` may be used to specify a subset (normally, just pass zeros), ``inc`` specifies the x and y increments,
@@ -3442,8 +3466,8 @@ The full definition of the ``GMT_GRID_HEADER`` structure. Most of these members
size_t z_chunksize[2]; /* chunk size (lat,lon) */
unsigned int z_shuffle; /* if shuffle filter is turned on */
unsigned int z_deflate_level; /* if deflate filter is in use */
- unsigned int z_scale_autoadust; /* if z_scale_factor should be auto-detected */
- unsigned int z_offset_autoadust; /* if z_add_offset should be auto-detected */
+ unsigned int z_scale_autoadjust; /* if z_scale_factor should be auto-detected */
+ unsigned int z_offset_autoadjust;/* if z_add_offset should be auto-detected */
/* xy_*[] is separate settings for GMT_IN and GMT_OUT */
unsigned int xy_adjust[2]; /* 1 if +u<unit> was parsed and scale set, 3 if xy has been adjusted, 0 otherwise */
unsigned int xy_mode[2]; /* 1 if +U<unit> was parsed, 0 otherwise */
diff --git a/doc/rst/source/GMT_Docs.rst b/doc/rst/source/GMT_Docs.rst
index 27bc82f..2fc0bfe 100644
--- a/doc/rst/source/GMT_Docs.rst
+++ b/doc/rst/source/GMT_Docs.rst
@@ -159,7 +159,7 @@ such decisions by supporting the GMT project.
Copyright and Caveat Emptor!
============================
-Copyright ©1991--2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J.
+Copyright ©1991--2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J.
Luis and F. Wobbe
The Generic Mapping Tools (GMT) is free software; you can
@@ -448,9 +448,12 @@ We have added two new lower-case GMT common options:
available cores (only available if compiled with OpenMP support).
Those modules will offer the new option **-x**\ [[-]\ *n*] to reduce
how many cores to assign to the task. The modules that currently
- have this option are greenspline, grdmask, grdmath, grdfilter,
- grdsample, sph2grd, the potential supplement's grdgravmag3d,
- talwani2d and talwani3d, and the x2sys supplement's x2sys_solve.
+ have this option are :doc:`greenspline`, :doc:`grdmask`, :doc:`grdmath`,
+ :doc:`grdfilter`, :doc:`grdsample`, :doc:`sph2grd`, the potential supplement's
+ :doc:`grdgravmag3d <supplements/potential/grdgravmag3d>`,
+ :doc:`talwani2d <supplements/potential/talwani2d>` and
+ :doc:`talwani3d <supplements/potential/talwani3d>`, and the x2sys
+ supplement's :doc:`x2sys_solve <supplements/x2sys/x2sys_solve>`.
This list will grow longer with time.
New default parameters
@@ -502,8 +505,10 @@ General improvements
Several changes have affects across GMT; these are:
* Added optional multi-threading capabilities to several modules, such as
- greenspline, grdfilter, grdmask, grdsample, the potential supplement's
- grdgravmag3d, talwani2d and talwani3d and x2sys's x2sys_solve.
+ :doc:`greenspline`, :doc:`grdfilter`, :doc:`grdmask`, :doc:`grdsample`,
+ the potential supplement's :doc:`grdgravmag3d <supplements/potential/grdgravmag3d>`,
+ :doc:`talwani2d <supplements/potential/talwani2d>` and
+ :doc:`talwani3d <supplements/potential/talwani2d>` and x2sys's :doc:`x2sys_solve <supplements/x2sys/x2sys_solve>`.
* Optional prerequisite LAPACK means SVD decomposition in greenspline is
now very fast, as is true for the regular Gauss-Jordan solution via a
@@ -1439,7 +1444,7 @@ with a warning under compatibility mode:
* :doc:`grdsample`: **-Q** is deprecated;
use **-n**\ *mode*\ [**+a**][\ **+t**\ *threshold*] instead. Also,
**-L** is deprecated; use common option **-n** instead, and
- **-N**\ *nx>/<ny* is deprecated; use **-I**\ *nx+>/<ny+* instead.
+ **-N**\ *nx/ny* is deprecated; use **-I**\ *nx+/ny+* instead.
* :doc:`grdtrack`: **-Q** is deprecated;
use **-n**\ *mode*\ [**+a**][\ **+t**\ *threshold*] instead. Also,
@@ -1779,7 +1784,7 @@ For further details the user should read the entire help section at the header o
``gmtswitch.bat``.
The ``gmtswitch.bat`` solution, however, has the drawback that the batch file must be located
-elsewhere and in a directory that is on the user's PATH, otherwise it wont be located after
+elsewhere and in a directory that is on the user's PATH, otherwise it won't be located after
first use unless the other GMT bin directory has a similar batch file. A better solution is to install the
`Windows console enhancement <http://sourceforge.net/projects/console>`_
that includes multiple tabs and configure the different tabs to start the different GMT versions.
@@ -2102,7 +2107,7 @@ GMT units
---------
While GMT has default units for both actual Earth distances and plot
-lengths (dimensions) of maps, it is recommended that you specifically
+lengths (i.e., dimensions) of maps, it is recommended that you explicitly
indicate the units of your arguments by appending the unit character, as
discussed below. This will aid you in debugging, let others understand your
scripts, and remove any uncertainty as to what unit you thought you wanted.
@@ -2127,7 +2132,7 @@ Distance units
For Cartesian data and scaling the data units do not normally matter
(they could be kg or Lumens for all we know) and are never entered.
-Geographic data are different as distances can be specified in a variety
+Geographic data are different, as distances can be specified in a variety
of ways. GMT programs that accept actual Earth length scales like
search radii or distances can therefore handle a variety of units. These
choices are listed in Table :ref:`distunits <tbl-distunits>`; simply append the desired
@@ -2196,7 +2201,9 @@ converts geodetic latitudes into one of several possible auxiliary
latitudes that are better suited for the spherical approximation. While
both settings have default values to best approximate geodesic distances
(*authalic* mean radius and latitudes), expert users can choose from a
-range of options as detailed in the :doc:`gmt.conf` man page.
+range of options as detailed in the :doc:`gmt.conf` man page. Note that
+these last two settings are only used if the :ref:`PROJ_ELLIPSOID <PROJ_ELLIPSOID>`
+is not set to "sphere".
Geodesic distances
^^^^^^^^^^^^^^^^^^
@@ -2238,7 +2245,7 @@ GMT defaults
Overview and the gmt.conf file
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-There are about 100 parameters which can be adjusted individually to
+There are almost 150 parameters which can be adjusted individually to
modify the appearance of plots or affect the manipulation of data. When
a program is run, it initializes all parameters to the
GMT\ defaults [9]_, then tries to open the file ``gmt.conf`` in the current
@@ -2258,11 +2265,12 @@ parameters and their default values can be found in the
plots. You may create your own ``gmt.conf`` files by running
:doc:`gmtdefaults` and then modify those
parameters you want to change. If you want to use the parameter settings
-in another file you can do so by specifying ``+<defaultfile>`` on the
-command line. This makes it easy to maintain several distinct parameter
+in another file you can do so by copying that file to the current
+directory and call it gmt.conf. This makes it easy to maintain several distinct parameter
settings, corresponding perhaps to the unique styles required by
different journals or simply reflecting font changes necessary to make
-readable overheads and slides. Note that any arguments given on the
+readable overheads and slides. At the end of such scripts you should then
+delete the (temporary) gmt.conf file. Note that any arguments given on the
command line (see below) will take precedent over the default values.
E.g., if your ``gmt.conf`` file has *x* offset = 1\ **i** as default, the
**-X**\ 1.5\ **i** option will override the default and set the offset to 1.5 inches.
@@ -2488,7 +2496,7 @@ data), the boundary coordinates may take on several different formats:
Geographic coordinates:
These are longitudes and latitudes and may be given in decimal
degrees (e.g., -123.45417) or in the
- []*ddd*\ [:*mm*\ [:*ss*\ [*.xxx*]]][\ **W**\ \|\ **E**\ \|\ **S**\ \|\ **N**]
+ [+\ \|\ -]\ *ddd*\ [:*mm*\ [:*ss*\ [*.xxx*]]][\ **W**\ \|\ **E**\ \|\ **S**\ \|\ **N**]
format (e.g., 123:27:15W). Note that **-Rg** and **-Rd** are
shorthands for "global domain" **-R**\ *0*/*360*/*-90*/*90* and
**-R**\ *-180*/*180*/*-90*/*90*, respectively.
@@ -2558,7 +2566,7 @@ Other coordinates:
These are simply any coordinates that are not related to geographic
or calendar time or relative time and are expected to be simple
floating point values such as
- []\ *xxx.xxx*\ [E: \| \ e\ \| \ D\ \| \ d[]xx], i.e.,
+ [+\ \|\ -]\ *xxx.xxx*\ [E\ \|\ e\ \|\ D\ \|\ d[+\ \|\ -]xx], i.e.,
regular or exponential notations, with the enhancement to understand
FORTRAN double precision output which may use D instead of E for
exponents. These values are simply converted as they are to internal
@@ -2610,7 +2618,7 @@ syntax was given in Chapter `GMT Overview and Quick Reference`_.
:width: 500 px
:align: center
- The 30+ map projections and coordinate transformations available in GMT
+ The over-30 map projections and coordinate transformations available in GMT
Map frame and axes annotations: The **-B** option
@@ -2627,7 +2635,7 @@ tick, and gridline intervals, axes labels, and annotation units.
The Frame settings are specified by
-- **-B**\ [*axes*][**+b**][**+g**\ *fill*][**+o**\ *lon/lat*][**+t**\ *title*]
+- **-B**\ [*axes*][**+b**][**+g**\ *fill*][**+n**][**+o**\ *lon/lat*][**+t**\ *title*]
Here, the optional *axes* dictates which of the axes should be drawn
and possibly annotated. By default, all 4 map boundaries (or plot axes)
@@ -2648,6 +2656,7 @@ If gridlines are specified via the Axes parameters (discussed below) then
by default these are referenced to the North pole. If, however, you wish
to produce oblique gridlines about another pole you can append **+o**\ *lon/lat*
to change this behavior (the modifier is ignored if no gridlines are requested).
+Append **+n** to have no frame and annotations at all [Default is controlled by the codes].
Finally, you may optionally add **+t**\ *title* to place a title that
will appear centered above the plot frame.
@@ -3457,6 +3466,8 @@ columns to write on output and in what order. By default, GMT will
write all the data columns produced by the program. Using **-o**
modifies that process. For instance, to write just the 4th and 2nd data
column to the output you would use **-o**\ 3,1 (since 0 is the first column).
+You can also use a column more than once, e.g., **-o**\ 3,1,3, to
+duplicate a column on output.
Perspective view: The **-p** option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -3483,10 +3494,15 @@ Grid registration: The **-r** option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
All 2-D grids in GMT have their nodes
-organized in one of two ways, known as *gridline*- and *pixel*
+organized in one of two ways, known as *gridline*- and *pixel*-
registration. The GMT default is gridline registration; programs that
allow for the creation of grids can use the **-r** option to select
-pixel registration instead.
+pixel registration instead. Most observed data tend to be in gridline
+registration while processed data sometime may be distributed in
+pixel registration. While you may convert between the two registrations
+this conversion looses the Nyquist frequency and dampens the other
+high frequencies. It is best to avoid any registration conversion if you
+can help it. Planning ahead may be important.
Gridline registration
^^^^^^^^^^^^^^^^^^^^^
@@ -3714,7 +3730,7 @@ the same form as the arguments to the **-R** option (see
Section `Data domain or map region: The -R option`_), with additional flexibility for calendar data.
Geographical coordinates, for example, can be given in decimal degrees
(e.g., -123.45417) or in the
-[]*ddd*\ [:*mm*\ [:*ss*\ [*.xxx*\ ]]][\ **W**\ \| \ **E**\ \| \ **S**\ \| \ **N**]
+[+\ \|\ -]\ *ddd*\ [:*mm*\ [:*ss*\ [*.xxx*\ ]]][\ **W**\ \| \ **E**\ \| \ **S**\ \| \ **N**]
format (e.g., 123:27:15W). With **-fp** you may even supply projected
data like UTM coordinates.
@@ -3783,7 +3799,7 @@ plot file. By default, GMT will produce freeform *PostScript* output
with embedded printer directives. To produce Encapsulated
*PostScript* (EPS) that can be imported into graphics programs such as
**CorelDraw**, **Illustrator** or **InkScape** for further
-embellishment, simply run :doc:`psconvert`
+embellishment, simply run gmt :doc:`psconvert`
**-Te**. See Chapter `Including GMT Graphics into your Documents`_ for an extensive discussion of converting
*PostScript* to other formats.
@@ -3801,7 +3817,9 @@ option argument, with commas separating the given attributes, e.g.,
*Width* is by default measured in points (1/72 of an inch). Append
**c**, **i**, or **p** to specify pen width in cm, inch, or points,
respectively. Minimum-thickness pens can be achieved by giving zero
- width, but the result is device-dependent. Finally, a few predefined
+ width. The result is device-dependent but typically means that as
+ you zoom in on the feature in a display, the line thickness stays
+ at the minimum. Finally, a few predefined
pen names can be used: default, faint, and {thin, thick,
fat}[er\ \|\ est], and obese. Table :ref:`pennames <tbl-pennames>` shows this
list and the corresponding pen widths.
@@ -3823,6 +3841,8 @@ option argument, with commas separating the given attributes, e.g.,
| thick | 1.0p | obese | 18p |
+------------+---------+------------+--------+
+.. _color_attrib:
+
The *color* can be specified in five different ways:
#. Gray. Specify a *gray* shade in the range 0--255 (linearly going
@@ -3840,7 +3860,7 @@ option argument, with commas separating the given attributes, e.g.,
#. Name. Specify one of 663 valid color names. Use **man
gmtcolors** to list all valid names. A very small yet versatile
subset consists of the 29 choices *white*, *black*, and
- [light:\|\ dark]{*red, orange, yellow, green, cyan, blue,
+ [light\ \|\ dark]{*red, orange, yellow, green, cyan, blue,
magenta, gray\ \|\ grey, brown*\ }. The color names are
case-insensitive, so mixed upper and lower case can be used (like
*DarkGreen*).
@@ -3936,9 +3956,9 @@ specification. The line attribute modifiers are:
:width: 500 px
:align: center
- The thin red line shows an original line segment, whereas the thick pen illustrates the effect
+ The thin red line shows an original line segment, whereas the 2-point thick pen illustrates the effect
of plotting the same line while requesting offsets of 1 cm at the beginning and 500 km
- at the end, via **-W2p+o**\ 1c/500k.
+ at the end, via **-W**\ 2p\ **+o**\ 1c/500k.
* **+s**
Normally, all *PostScript* line drawing is implemented as a linear spline, i.e., we simply
@@ -3951,16 +3971,16 @@ specification. The line attribute modifiers are:
:width: 500 px
:align: center
- (left) Normal plotting of line given input points (red circles) via **-W2p**. (right) Letting
- the points be interpolated by a Bezier cubic spline via **-W2p+s**.
+ (left) Normal plotting of line given input points (red circles) via **-W**\ 2p. (right) Letting
+ the points be interpolated by a Bezier cubic spline via **-W**\ 2p\ **+s**.
* **+v**\ [**b**\ \|\ **e**]\ *vspecs*
- By default, nothing special takes place at the ends of the lines. Using this modifier you can
- place arrow-heads pointing outward at one (or both) ends of the line. Use **v** if you
- want the same vector attributes for both ends, or use **vb** and **ve** to specify a vector
- only at the beginning or end of the line, respectively. Finally, these two may both be given
+ By default, lines are normally drawn from start to end. Using the **+v** modifier you can
+ place arrow-heads pointing outward at one (or both) ends of the line. Use **+v** if you
+ want the same vector attributes for both ends, or use **+vb** and **+ve** to specify a vector
+ only at the beginning or end of the line, respectively. Finally, these two modifiers may both be given
to specify different attributes for the two vectors. The vector specification is very rich
- and you may place other symbols, such as circle, square, or a terminal line, in lieu of the
+ and you may place other symbols, such as circle, square, or a terminal cross-line, in lieu of the
vector head (see :doc:`psxy` for more details).
.. _Line_vector:
@@ -3970,7 +3990,7 @@ specification. The line attribute modifiers are:
:align: center
Same line as above but now we have requested a blue vector head at the end of the line and a
- red circle at the beginning of the line, made possible by the **+vb** and **+ve** modifiers.
+ red circle at the beginning of the line with **-W**\ 2p\ **+o**\ 1c/500k\ **+vb**\ 0.2i+gred+pfaint+bc\ **+ve**\ 0.3i+gblue.
Note that we also prescribed the line offsets in addition to the symbol endings.
Specifying area fill attributes
@@ -4077,7 +4097,7 @@ The *PostScript* language has no built-in mechanism for transparency.
However, *PostScript* extensions make it possible to request
transparency, and tools that can render such extensions will produce
transparency effects. We specify transparency in percent: 0 is opaque
-[Default] while 100 is fully transparent (i.e., nothing will show). As
+[Default] while 100 is fully transparent (i.e., the feature will be invisible). As
noted in section `Layer PDF transparency: The -t option`_, we can control transparency on a
layer-by-layer basis using the **-t** option. However, we may also set
transparency as an attribute of stroke or fill (including for fonts)
@@ -4336,9 +4356,9 @@ The CPTs distributed with GMT are *dynamic*. This means they have several
special properties that modify the behavior of programs that use them.
All dynamic CPTs are normalized in one of two ways: If a CPT was designed
to behave differently across a *hinge* value (e.g., a CPT designed specifically
-for topographic relief may include a discontinuity in color across the the
-coastline at *z = 0*) then the CPT's *z*-values will range from -1, via 0
-at the hinge, to +1 at the end. The hinge value is specified via the special
+for topographic relief may include a discontinuity in color across the
+coastline at *z = 0*), then the CPT's *z*-values will range from -1, via 0
+at the hinge, to +1 at the other end. The hinge value is specified via the special
comment
| ``# HINGE = <hinge-value>``
@@ -4367,11 +4387,43 @@ while :doc:`grd2cpt` can derive the range from one or more grids.
:width: 500 px
:align: center
- The top color bar is a dynamic master CPT (globe) with a hinge at sea level and
+ The top color bar is a dynamic master CPT (here, globe) with a hinge at sea level and
a natural range from -10,000 to +10,000 meters. However, our data range
is asymmetrical, going from -8,000 meter depths up to +3,000 meter elevations.
Because of the hinge, the two sides of the CPT will be stretched separately
- to honor the desired range.
+ to honor the desired range while utilizing the full color range.
+
+.. _manipulating_CPTs:
+
+Manipulating CPTs
+~~~~~~~~~~~~~~~~~
+
+There are many ways to turn a master CPT into a custom CPT that works for your
+particular data range. The tools :doc:`makecpt` and :doc:`grd2cpt` allow
+several types of transformations to take place:
+
+ #. You can reverse the *z*-direction of the CPT using option **-Iz**.
+ This is useful when your data use a different convention for
+ positive and negative (e.g., perhaps using positive depths instead of
+ negative relief).
+ #. You can invert the order of the colors in the CPT using option **-Ic**.
+ This is different from the previous option in that only the colors
+ are rearranged (it is also possible to issue **-Icz** to combine both effects.)
+ #. You can select just a subset of a master CPT with **-G**, in effect creating
+ a modified master CPT that can be scaled further.
+ #. Finally, you can scale and translate the (modified) master CPT range to
+ your actual data range or a sub-range thereof.
+
+The order of these transformations is important. For instance, if **-Iz** is given
+then all other *z*-values need to be referred to the new sign convention. For most
+applications only the last transformation is needed.
+
+.. figure:: /_images/GMT_CPTscale.*
+ :width: 500 px
+ :align: center
+
+ Examples of two user CPTs for the range -0.5 to 3 created from the same master. One (left) extracted a
+ subset of the master before scaling while the other (right) used the entire range.
The Drawing of Vectors
----------------------
@@ -4503,7 +4555,7 @@ GMT strings using the Standard+ encoding:
| ``2@~p@~r at +2@+h at -0@- E\363tv\363s`` = 2\ :math:`\pi r^2h_0` Eötvös
| ``10 at +-3 @Angstr at om`` = 10\ :math:`^{-3}` Ångstrøm
-| ``Stresses are @~s@~@+*@+ at -xx@- MPa`` = :math:`\sigma^{*}_{xx}` MPa
+| ``Stresses are @~s@~@+*@+ at -xx@- MPa`` = Stresses are :math:`\sigma^{*}_{xx}` MPa
| ``Se at nor Gar at con`` = Señor Garçon
| ``M@!\305anoa stra at se`` = Manoa straße
| ``A@\#cceleration@\# (ms at +-2@+)`` = ACCELERATION
@@ -4551,17 +4603,17 @@ Reference and anchor point specification
:width: 500 px
:align: center
- The placement of a map feature (here abstracted by a green rectangle) in relation
+ The placement of a map feature (here represented by a green rectangle) in relation
to the underlying map. The nine named *reference* points (blue circles) on the map perimeter (and center)
can be used to specify a location. Using the same system of nine points on the map feature
(cyan circles) we select one of these as our *anchor* point (here TL, indicated by the orange square).
- The anchor point can optionally be shifted away from the anchor point by an amount *dx/dy* in the direction
+ The anchor point can optionally be shifted away from the reference point by an amount *dx/dy* in the direction
implied by the anchor point (in this case to the top and left), yielding the adjusted
anchor point (red square).
The feature is then placed such that its adjusted anchor point matches the reference point.
-Placing a feature on the map means selecting a *reference* point somewhere on the map and an
-*anchor* point somewhere on the feature, and positioning the feature so that the two points overlap.
+Placing a feature on the map means selecting a *reference* point somewhere on the map, an
+*anchor* point somewhere on the feature, and then positioning the feature so that the two points overlap.
It may be helpful to consider the analog of a boat dropping an anchor: The boat navigates to the
reference point and then, depending on where on the boat the anchor is located, moves so that the
anchor connection point overlies the reference point, then drops the anchor.
@@ -4569,21 +4621,21 @@ There are four different ways to specify the reference point on a map, allowing
to select any location inside or outside the map. The reference point syntax is [**g**\ \|\ **j**\ \|\ **J**\ \|\ **n**\ \|\ **x**]\ *refpoint*;
the five codes **g**\ \|\ **j**\ \|\ **J**\ \|\ **n**\ \|\ **x** refer to the five ways:
-#. [**g**] Specify *refpoint* using *data* coordinates, e.g., the longitude and latitude of the origin.
+#. [**g**] Specify *refpoint* using *data* coordinates, e.g., the longitude and latitude of the reference point.
This mechanism is useful when you want to tie the location of the feature to an actual point
best described by data coordinates. An example of such a reference point might
be **g**\ 135W/20N.
-#. [**j**] Specify the location using one of the nine *justification codes*, equivalent to the justification
- codes for placing text strings in :doc:`pstext`. This mechanism is illustrated in the above figure.
- This mechanism is preferred when you just want to place the feature **inside** the basemap at
+#. [**j**] Specify *refpoint* using one of the nine *justification codes*, equivalent to the justification
+ codes for placing text strings in :doc:`pstext`. This mechanism is illustrated in the figure above and
+ is the preferred mechanism when you just want to place the feature **inside** the basemap at
one of the corners or centered at one of the sides (or even smack in the middle). Justification codes
are a combination of a horizontal (**L**, **C**, **R**) and a vertical (**T**, **M**, **B**) code.
An example of such a reference point might be **j**\ TL. When used, the anchor point on the map feature
will default to the same justification, i.e., TL in this example.
-#. [**J**] This is the same as **j**\ except it implies that the default anchor point is the mirror opposite of the
- justification code. So when using **J**\ TL, the anchor point on the map feature will default to BR.
+#. [**J**] This is the same as **j** except it implies that the default anchor point is the mirror opposite of the
+ justification code. Thus, when using **J**\ TL, the anchor point on the map feature will default to BR.
This is practical for features that are drawn **outside** of the basemap (like color bars often are).
#. [**x**] Specify *refpoint* using *plot* coordinates, i.e., the distances in inches, centimeters, or
@@ -4602,8 +4654,8 @@ With the reference point taken care of, it is time to select the anchor point.
While the reference point selection gives unlimited flexibility to pick
any point inside or outside the map region, the anchor point selection is limited to the nine justification points
discussed for the **j** reference point code above. Add **+j**\ *anchor* to indicate which justification
-point of the map feature should co-registered with the chosen reference point. If an anchor point is not
-specified then it defaults to the same justification point set for the reference point (if **j**\ *code* was
+point of the map feature should be co-registered with the chosen reference point. If an anchor point is not
+specified then it defaults to the justification point set for the reference point (if **j**\ *code* was
used to set it), or to the mirror opposite of the reference point (if **J**\ *code* was used); with all other
specifications of the reference point, the anchor point takes on the default value of MC (for map rose and
map scale) or BL (all other map features). Adding **+j**\ *anchor* overrules those defaults.
@@ -4634,7 +4686,7 @@ any of the map features you plan to add. Because the panel is linked to the map
you have selected, the parameters such as location and dimensions are handled automatically.
What remains is to specify the *attributes* of the panel. Typically, panels settings are
given via a module's **-F** option by appending one or more modifiers. Here is a list of
-the attributes that is under your control:
+the attributes that are under your control:
#. Color or pattern. You specify the fill you want with **+g**\ *fill* [Default is no fill].
For instance, paint the panel yellow with **+g**\ yellow.
@@ -4648,16 +4700,16 @@ the attributes that is under your control:
**+r**\ 0.2i.
#. Inner frame. A secondary, inner frame outline may be added as well with the modifier
- **+i**\ [[*gap*/]\ *pen*]. The default pen is a solid, 0.25p black pen, with a default
- *gap* between the outer and inner frames of 2 points. Add arguments to override these defaults,
- such as **+i**\ 0.1c/thin,dashed to get a thin, dashed inner frame offset by 0.1 cm from the
- main frame.
+ **+i**\ [[*gap*/]\ *pen*]. The default pen is given by :ref:`MAP_DEFAULT_PEN <MAP_DEFAULT_PEN>`,
+ with a default *gap* between the outer and inner frames of 2 points. Add arguments to override
+ these defaults, such as **+i**\ 0.1c/thin,dashed to get a thin, dashed inner frame offset by
+ 0.1 cm from the main (outer) frame.
#. Panel clearance. The panel's dimensions are automatically determined from knowledge of
- its contents. However, it is often required to add some extra clearance around most or
+ its contents. However, it is sometimes required to add some extra clearance around most or
all sides, and you can do so with **+c**\ [*clearance*], with a 4-point clearance being
the default. Add one (uniform), two (different horizontal and vertical clearances), or
- four (separate for each side) clearances, separated by slashes. For instance, to add
+ four (separate for sides west, east, south, and north) clearances, separated by slashes. For instance, to add
a 1 cm clearance in x and 5 points in y, use **+c**\ 1c/5p.
#. Drop-down shadow. Append **+s** to simulate a gray shadow cast toward the southeast.
@@ -4685,22 +4737,22 @@ the map projection the map scale will vary continuously but may be constant alon
latitude (e.g., Mercator projection). Thus, in placing the map scale on the map there are
two locations involved: (1) The *reference* point where the map scale's *anchor* should be
pinned, and (2) the *projection* point where the scale is computed and thus where the map
-scale is true. Map scales can be plotted by :doc:`psbasemap` or :doc:`pscoast` and in
-addition to the the required *refpoint* and anchor arguments for where the scale should be placed there
+scale is true. Map scales can be plotted by :doc:`psbasemap` or :doc:`pscoast`, and in
+addition to the the required *refpoint* and anchor arguments specifying where the scale should be placed there
are both required and optional modifiers. These are given via these modules' **-L** option.
Here is a list of the attributes that is under your control:
#. Scale bar length. Required modifier is given with **+w**\ *length*\ [*unit*], where
- *unit* is on of the recognized distance units. An example might be **+w**\ 250n for
+ *unit* is one of the recognized distance units. An example might be **+w**\ 250n for
a bar representing 250 nautical miles at the map scale origin.
#. Map scale origin. Required modifier given with **+c**\ [*slon*/]\ *slat*, where the longitude
of the scale origin is optional for projections with constant scale along parallels. For
- a Mercator projection it may look like **+c**\ 30N while an oblique projection may have **+c**\ 100W/23N,
+ a Mercator projection it may look like **+c**\ 30N while an oblique projection may need **+c**\ 100W/23N,
for instance.
-#. Fancy scale bar. By default a plain-looking scale bar is plotted. Upgrade to a fancier bar
- by appending **+f**. The fancier bar is, well, a bit fancier.
+#. Fancy scale bar. By default a plain-looking scale bar is plotted. For a free upgrade to a fancier bar,
+ append **+f**. The fancier bar is, well, a bit fancier.
#. Scale label. Turn on scale labels with **+l**. By default, the scale label is initialized to
equal the distance unit name. Use the **+l**\ *label* argument to supply your own scale label,
@@ -4736,14 +4788,17 @@ for oblique projections where north-south is not vertically aligned. However, t
have ornamental value and can be used on any map projection. As for map scales, a directional
map rose is added with :doc:`psbasemap` or :doc:`pscoast` and selected by the **-Td** option.
This option accepts the *reference* point where the map rose's *anchor* should be
-pinned. In addition to the required *refpoint* and *anchor* arguments (and their standard modifiers)
-there is one required and two optional modifiers:
+pinned. In addition to the required *refpoint* and *anchor* arguments (and their standard
+modifiers discussed earlier) there is one required and two optional modifiers. The required
+modifier sets the side:
#. Size of map rose. Use **+w**\ *size* to specify the full width and height of the rose. A 3 cm
rose would require **+w**\ 3c.
+The next two modifiers are optional:
+
#. Cardinal points. By default only the four cardinal points (W, E, S, N) are included in the rose.
- You can extend that with the **+f**\ *level* modifier where *level* is 1 [Default], 2, or 3. Selecting
+ You can extend that with the **+f**\ *level* modifier, where *level* is 1 [Default], 2, or 3. Selecting
2 will include the two intermediate orientations NW-SE and NE-SW, while 3 adds the four additional
orientations WNW-ESE, NNW-SSE, NNE-SSW, and ENE-WSW.
@@ -4761,7 +4816,8 @@ there is one required and two optional modifiers:
Plain and fancy directional map roses. (left) Bare-bones plain rose showing arrow towards north
and a cross indicating the cardinal directions, specified by **-Tdg**\ 0/0\ **+w**\ 1i. (middle) Fancy rose
- obtained by adding **+f**. (right) Fancy directional rose at level 3 with labels by adding **+f**\ 3\ **+l**.
+ obtained by adding **+f** and **+l**\ ,,,N to get the north label. (right) Fancy directional rose
+ at level 3 with labels by adding **+f**\ 3\ **+l**.
.. _Placing-mag-map-roses:
@@ -4776,19 +4832,21 @@ magnetic directions, which differ for nonzero declination. As for style, the two
bit like a standard compass. As for directional roses, a magnetic
map rose is added with :doc:`psbasemap` or :doc:`pscoast` and selected by the **-Tm** option.
As for other features, append the required *reference* point where the magnetic map rose's *anchor*
-should be pinned. There is one required and several optional modifiers:
+should be pinned. There is one required and several optional modifiers. First up is the size:
#. Specify size of map rose. Use **+w**\ *size* to specify the full width of the rose. A 3 cm
rose would imply **+w**\ 3c.
+The remaining modifiers are optional:
+
#. Specify Declination. To add the inner angular scale, append **d**\ *dec*\ [/\ *dlabel*\ ], where
*dec* is the declination value in decimal or ddd:mm:ss format, and *dlabel* is an optional string
that replaces the default label (which is "d = *dec*", with d being a Greek delta and we format
the specified declination). Append **d**\ *dec*/- to indicate you do not want any declination label.
- As an example consider **d**\ 11/"Honolulu declination".
+ As an example, consider **d**\ 11/"Honolulu declination".
#. Draw the secondary (outer) ring outline. Normally it is not drawn, but you can change that by appending
- **+p**\ *pen*. For instance, adding **+p**\ thin will draw the right with the selected thin pen.
+ **+p**\ *pen*. For instance, adding **+p**\ thin will draw the ring with the selected thin pen.
#. Add labels. As for directional roses you do so with **+l**, which places the current one-letter codes for west, east, south,
and north at the four cardinal points. These letters depend on the setting of :ref:`GMT_LANGUAGE <GMT_LANGUAGE>`
@@ -4798,7 +4856,7 @@ should be pinned. There is one required and several optional modifiers:
would write Down and Up at the south and north cardinal point, respectively.
#. Draw the primary (inner) ring outline. It is also not normally drawn; change that by appending
- **+i**\ *pen*. For instance, adding **+i**\ thin,blue will draw the right with the selected thin, blue pen.
+ **+i**\ *pen*. For instance, adding **+i**\ thin,blue will draw the ring with the selected thin, blue pen.
#. Set annotation, tick and grid intervals. Each ring has a default annotation [30], tick [5], and grid [1]
interval (although here "grid interval" is just a finer tick interval drawn at half tickmark length).
@@ -4823,7 +4881,7 @@ Placing color scale bars
Color scale bars are used in conjunction with color-coded surfaces, symbols, lines, or even text, to
relate the chosen color to a data value or category. For instance, color images of topography
-or other grids will need a mechanism for users to decode what the colors represent. Typically, we do this
+or other gridded data will need a mechanism for users to decode what the colors represent. Typically, we do this
by adding a color scale bar on the outside (or inside) of the map boundaries. The module
:doc:`psscale` places the color scale bar, with location and size determined by the **-D** attributes.
As for other map features we must specify the reference and anchor points and any adjustments to them, then
@@ -4837,7 +4895,7 @@ supply suitable required and optional modifiers:
#. Specify color bar label alignment. By default we place the chosen annotations, scale (i.e., x-axis) label
and unit (i.e., y-axis) label on the opposite side of the color scale bar anchor point. Change this
- with **+a** and append any combination of **a**, **l**, or **u** to flip the annotations or labels
+ with **+m** and append any combination of **a**, **l**, or **u** to flip the annotations or labels
to the opposite side. Append **c** to plot vertical labels as column text (this cannot be used with
**+h**, obviously).
@@ -4869,7 +4927,7 @@ first, then supply suitable required and optional modifiers:
#. Give legend dimensions. You must specify the required legend width, while legend height is optional
and if not given is computed based on the contents of the legend. The syntax is therefore
- **+w**\ *width* \[/*height*] in your desired plot units. Thus, **+w**\ 12c sets the legend width
+ **+w**\ *width*\ [/*height*] in your desired plot units. Thus, **+w**\ 12c sets the legend width
as 12 cm but the hight will become whatever is needed to contain the information.
#. Set line-spacing. You may optionally specify the line-spacing used for the setting of the legend. The legend will
@@ -4937,9 +4995,7 @@ In addition, we require one modifier to set the logo's size.
:align: center
Placement of the GMT logo. The logo itself only has a size modifier but the :doc:`gmtlogo`
- module allows additional attributes such as a background map panel. Note: If no declination
- setting is provided then the inner scale is replaced with a plain directional rose as
- shown in the previous section.
+ module allows additional attributes such as a background map panel.
Placing map inserts
~~~~~~~~~~~~~~~~~~~
@@ -4948,7 +5004,7 @@ Our final map embellishment is the map insert.
A map insert may appear to be the easiest feature to add since it only consists of an empty map panel.
What you put in this panel is up to you (and we will show some examples). However, unlike
the other map features there are two ways to specify the placement of the map insert.
-The first is the standard way of specifying a reference and anchor points and the insert dimensions,
+The first is the standard way of specifying the reference and anchor points and the insert dimensions,
while the second specifies a *subregion* in the current plot that should be designated the
map insert area. Depending on the map projection this may or may not be a rectangular area.
Map inserts are produced by the module :doc:`psbasemap` via the **-D** option. Unless you
@@ -5020,6 +5076,8 @@ by other programs that conform to those conventions. Three such programs are
<http://www.giss.nasa.gov/tools/panoply/>`_, and `ncBrowse
<http://www.epic.noaa.gov/java/ncBrowse/>`_ ; others can be found on the
`netCDF website <http://www.unidata.ucar.edu/software/netcdf/software.html>`_.
+Note that although many additional programs can read netCDF files, some are unable
+to read netcdf 4 files (if data compression has been applied).
In addition, users with some C-programming experience may add their own
read/write functions and link them with the GMT library to extend the
@@ -5190,8 +5248,8 @@ filename ``wet.mask`` means wet.mask=bm/1/0/0. For a file intended for masking,
the nodes are either 1 or NaN, the bit or mask format file may be as
small as 1/32 the size of the corresponding grid float format file.
-Modifiers for changing the grid coordinates
--------------------------------------------
+Modifiers for changing units of grid coordinates
+------------------------------------------------
A few GMT tools require that the two horizontal dimensions be
specified in meters. One example is
@@ -5209,9 +5267,9 @@ the coordinates of the grid passed to such programs:
- You have a Cartesian grid but the units are not meters (e.g., they
may perhaps be in km or miles). In this case you may append the file
- modifier **+u**\ *unit*, where *unit* is one of non-arc units listed
+ modifier **+u**\ *unit*, where *unit* is one of non-angular units listed
in Table :ref:`distunits <tbl-distunits>`. For example, reading in the grid (which has
- distance units of km) and converting them to meters is done by
+ distance units of km) and converting distances to meters is done by
specifying the filename as *filename*\ **+u**\ k. On output, any derived grids will revert
to their original units *unless* you specify another unit modifier to
the output grid. This may be used, for instance, to save the original
@@ -5480,22 +5538,22 @@ instance, coast lines) or text will not be saved. To save an image with
name used by GDAL (e.g. GTiff).
For all other programs that create grids, it is also possible to save
-them using GDAL. To do it one need to use the =gd appended with the
-necessary information regarding the driver and the data type to use.
-Generically, =\ **gd**\ [/*scale*/*offset*\ [/*nan*][:<*driver*\ >[/\ *dataType*]]
+them using GDAL. To do this one needs to use the =gd suffix appended with the
+necessary information regarding the desired driver and data type.
+The syntax is =\ **gd**\ [/*scale*/*offset*\ [/*nan*][:<*driver*\ >[/\ *dataType*]]
where *driver* is the same as explained above and *dataType* is a 2 or 3
chars code from: u8\|u16\|i16\|u32\|i32\|float32, and where i\|u denotes
signed\|unsigned. If not provided the default type is float32. Both
-driver names and data types are case insensitive. Note, that you have to
-specify *nan* for integer types unless you whish that all NaN data values
-are replaced by zero.
+driver names and data types are case insensitive. Note: you will have to
+specify a *nan* value for integer data types unless you wish that all NaN data values
+should be replaced by zero.
The NaN data value
------------------
For a variety of data processing and plotting tasks there is a need to
acknowledge that a data point is missing or unassigned. In the "old
-days" such information was passed by letting a value like -9999.99 take
+days", such information was passed by letting a value like -9999.99 take
on the special meaning of "this is not really a value, it is missing".
The problem with this scheme is that -9999.99 (or any other floating
point value) may be a perfectly reasonable data value and in such a
@@ -7385,7 +7443,9 @@ Table data
These files have *N* records which have *M* fields each. All programs
that handle tables can read multicolumn files. GMT can read both
-ASCII, native binary, and netCDF table data.
+ASCII, native binary, and netCDF table data. For other formats (e.g.,
+ESRI shapefiles), convert them to GMT/OGR format via GDAL's ogr2ogr tool
+first.
ASCII tables
~~~~~~~~~~~~
@@ -7554,7 +7614,7 @@ Chunking and compression with netCDF
GMT supports reading and writing of netCDF-4 files since release 5.0. For
performance reasons with ever-increasing grid sizes, the default output format
of GMT is netCDF-4 with chunking enabled for grids with more than 16384 cells.
-Chunking means that the data is not stored sequentially in rows along latitude
+Chunking means that the data are not stored sequentially in rows along latitude
but rather split up into tiles. Figure :ref:`netcdf_chunking` illustrates
the layout in a chunked netCDF file. To access a subset of the data (e.g.,
the four blue tiles in the lower left), netCDF only reads those tiles
@@ -7579,7 +7639,7 @@ configuration parameters :ref:`IO_NC4_CHUNK_SIZE <IO_NC4_CHUNK_SIZE>`
and :ref:`IO_NC 4_DEFLATION_LEVEL <IO_NC4_DEFLATION_LEVEL>` as specified in
:doc:`gmt.conf` and you can check the netCDF format with :doc:`grdinfo`.
-Classic netCDF files were the de facto standard until netCDF 4.0 was released
+Classic netCDF files were the *de facto* standard until netCDF 4.0 was released
in 2008. Most programs supporting netCDF by now are using the netCDF-4
library and are thus capable of reading netCDF files generated with GMT 5,
this includes official GMT releases since revision 4.5.8. In rare occasions,
@@ -7686,7 +7746,7 @@ Default
Native binary grid files
~~~~~~~~~~~~~~~~~~~~~~~~
-The old style native grid file format that was common in earlier version
+The old-style native grid file format that was common in earlier version
of GMT is still supported, although the use of netCDF files is
strongly recommended. The file starts with a header of 892 bytes
containing a number of attributes defining the content. The
@@ -7852,7 +7912,7 @@ Making GMT Encapsulated *PostScript* Files
GMT produces freeform *PostScript* files. Note that a freeform
*PostScript* file may contain special operators (such as
``Setpagedevice``) that is specific to printers (e.g., selection of
-paper tray). Some previewers (among them, Sun's pageview) may not
+paper tray). Some previewers may not
understand these valid instructions and may fail to image the file.
Also, embedding freeform *PostScript* with such instructions in it into
a larger document can cause printing to fail. While you could choose
@@ -7916,7 +7976,7 @@ If you do not want to modify your illustration but just include it in a
text document: many word processors (such as Microsoft Word or Apple Pages) will let you include a
*PostScript* file that you may place but not edit. Newer versions of
those programs also allow you to include PDF versions of your graphics.
-Except for Pages, you will not be able to view the figure
+Except for Pages, you will not be able to view the EPS figure
on-screen, but it will print correctly.
Converting GMT *PostScript* to PDF or raster images
@@ -7947,7 +8007,7 @@ The are a number of programs that will convert *PostScript* files to PDF
or raster formats, like Aladdin's **pstopdf**, pbmplus' **pstoimg**,
or GraphicsMagick's and ImageMagick's **convert**, most of which run ghostscript
behind the scenes. The same is true for viewers like **ghostview** and
-Apple's Preview*. So a lot of the times when people report that
+Apple's **Preview**. So a lot of the times when people report that
their *PostScript* plot does not look right but prints fine, it is the
way ghostscript is used with its most basic settings that is to blame.
@@ -8057,6 +8117,9 @@ on a Portrait mode page when coming out of the printer. The **-P**
option of :doc:`psconvert` will undo that
rotation, so that you do not have to do so within your document. This
will only affect Landscape plots; Portrait plots will not be rotated.
+We should note that the **-A** option in :doc:`psconvert` has many modifiers
+that can be used to control background color, framing, padding, and overall
+scaling of the result.
Examples
--------
@@ -8170,7 +8233,7 @@ Concluding remarks
These examples do not constitute endorsements of the products mentioned
above; they only represent our limited experience with adding
*PostScript* to various types of documents. For other solutions and
-further help, please post messages to.
+further help, please post messages to the GMT user forum.
Predefined Bit and Hachure Patterns in GMT
@@ -8345,6 +8408,7 @@ codes, e.g., \\265 instead of μ. Note, that *PostScript* fonts support
only a small range of glyphs and you may have to switch the
:ref:`PS_CHAR_ENCODING <PS_CHAR_ENCODING>` within your script.
+.. _Color Space:
Color Space: The Final Frontier
===============================
@@ -9547,7 +9611,7 @@ they share the same algorithm but differ in some other ways). In what
follows, the phrase "line segment" is taken to mean either a contour or
a line to be labeled. The codes are:
-d:
+**d**:
Full syntax is
**d**\ *dist*\ [**c\ \|\ i\ \|\ p**][/\ *frac*].
Place labels according to the distance measured along the projected
@@ -9560,7 +9624,7 @@ d:
:math:`\times` *frac* from the start of a closed line (and every
*dist* thereafter). If not given, *frac* defaults to 0.25.
-D:
+**D**:
Full syntax is
**D**\ *dist*\ [**d\ \|\ m\ \|\ s\ \|\ e\ \|\ f\ \|\ k\ \|\ M\ \|\ n**][/\ *frac*].
This option is similar to **d** except the original data must be
@@ -9572,7 +9636,7 @@ D:
**M**\ iles, or **n**\ autical miles. Other aspects are similar to
code **d**.
-f:
+**f**:
Full syntax is
**f**\ *fix.txt*\ [/*slop*\ [**c\ \|\ i\ \|\ p**]].
Here, an ASCII file *fix.txt* is given which must contain records
@@ -9583,7 +9647,7 @@ f:
:ref:`PROJ_LENGTH_UNIT <PROJ_LENGTH_UNIT>`). The default *slop* is zero, meaning only
exact coordinate matches will do.
-l:
+**l**:
Full syntax is **l**\ *line1*\ [,\ *line2*\ [, ...]]. One or more
straight line segments are specified separated by commas, and labels
will be placed at the intersections between these lines and our line
@@ -9603,12 +9667,12 @@ l:
lower right map corner, while **Z-**/135W/15S is a line from the
grid minimum to the point (135ºW, 15ºS).
-L:
+**L**:
Same as **l** except we will treat the lines given as great circle
start/stop coordinates and fill in the points between before looking
for intersections.
-n:
+**n**:
Full syntax is
**n**\ *number*\ [/*minlength*\ [**c\ \|\ i\ \|\ p**]].
Place *number* of labels along each line regardless of total line
@@ -9617,7 +9681,7 @@ n:
give a *minlength* distance to ensure that no labels are placed
closer than this distance to its neighbors.
-N:
+**N**:
Full syntax is
**N**\ *number*\ [/*minlength*\ [**c\ \|\ i\ \|\ p**]].
Similar to code **n** but here labels are placed at the ends of each
@@ -9627,12 +9691,21 @@ N:
start of the line, while +1 places one label justified at
the end of the line.
-x:
+**s**:
+ Similar to **n** but splits input lines into a series of two-point
+ line segments first. The rest of the algorithm them operates on
+ these sets of lines. This code (and **S**) are specific to
+ quoted lines.
+
+**S**:
+ Similar to **N** but with the modification described for **s**.
+
+**x**:
Full syntax is **x**\ *cross.d*. Here, an ASCII file *cross.d* is a
multi-segment file whose lines will intersect our segment lines;
labels will be placed at these intersections.
-X:
+**X**:
Same as **x** except we treat the lines given as great circle
start/stop coordinates and fill in the points between before looking
for intersections.
@@ -9654,7 +9727,7 @@ the label codes from the placement algorithm. Several of the attributes
do not apply to contours so we start off with listing those that apply
universally. These codes are:
-+a:
+**+a**:
Controls the angle of the label relative to the angle of the line.
Append **n** for normal to the line, give a fixed *angle* measured
counter-clockwise relative to the horizontal. or append **p** for
@@ -9663,7 +9736,7 @@ universally. These codes are:
you may further append **u** or **d** to get annotations whose upper
edge always face the next higher or lower contour line.
-+c:
+**+c**:
Surrounding each label is an imaginary label "textbox" which defines
a region in which no segment lines should be visible. The initial
box provides an exact fit to the enclosed text but clearance may be
@@ -9675,25 +9748,25 @@ universally. These codes are:
give % to indicate that the clearance should be this fixed
percentage of the label font size in use. The default is 15%.
-+d:
+**+d**:
Debug mode. This is useful when testing contour placement as it will
draw the normally invisible helper lines and points in the label
placement algorithms above.
-+d:
+**+e**:
Delayed mode, to delay the plotting of the text as text clipping is set instead.
-+f:
+**+f**:
Specifies the desired label font, including size or color. See
:doc:`pstext` for font names or numbers.
The default font is given by :ref:`FONT_ANNOT_PRIMARY <FONT_ANNOT_PRIMARY>`.
-+g:
+**+g**:
Selects opaque rather than the default transparent text boxes. You
may optionally append the color you want to fill the label boxes;
the default is the same as :ref:`PS_PAGE_COLOR <PS_PAGE_COLOR>`.
-+j:
+**+j**:
Selects the justification of the label relative to the placement
points determined above. Normally this is center/mid justified
(**CM** in :doc:`pstext` justification
@@ -9703,23 +9776,23 @@ universally. These codes are:
Note for curved text (**+v**) only vertical justification will be
affected.
-+o:
+**+o**:
Request a rounded, rectangular label box shape; the default is
rectangular. This is only manifested if the box is filled or
outlined, neither of which is implied by this option alone (see
**+g** and **+p**). As this option only applies to straight text, it
is ignored if **+v** is given.
-+p:
+**+p**:
Selects the drawing of the label box outline; append your preferred
*pen* unless you want the default GMT pen [0.25p,black].
-+r:
- Do not place labels at points along the line whose local radius of
+**+r**:
+ Do *not* place labels at points along the line whose local radius of
curvature falls below the given threshold value. Append the radius
unit of your choice (**c\ \|\ i\ \|\ p**) [Default is 0].
-+u:
+**+u**:
Append the chosen *unit* to the label. Normally a space will
separate the label and the unit. If you want to close this gap,
append a *unit* that begins with a hyphen (-). If you are contouring
@@ -9727,34 +9800,34 @@ universally. These codes are:
this option without appending a unit, the unit will be taken from
the *z*-unit attribute of the grid header.
-+v:
+**+v**:
Place curved labels that follow the wiggles of the line segments.
This is especially useful if the labels are long relative to the
length-scale of the wiggles. The default places labels on an
invisible straight line at the angle determined.
-+w:
+**+w**:
The angle of the line at the point of straight label placement is
calculated by a least-squares fit to the *width* closest points. If
not specified, *width* defaults to 10.
-+=:
+**+=**:
Similar in most regards to **+u** but applies instead to a label
*prefix* which you must append.
For contours, the label will be the value of the contour (possibly
modified by **+u** or **+=**). However, for quoted lines other options apply:
-+l:
+**+l**:
Append a fixed *label* that will be placed at all label locations.
If the label contains spaces you must place it inside matching
quotes.
-+L:
+**+L**:
Append a code *flag* that will determine the label. Available codes
are:
- +Lh:
+ **+Lh**:
Take the label from the current multi-segment header (hence it
is assumed that the input line segments are given in the
multi-segment file format; if not we pick the single label from
@@ -9762,7 +9835,7 @@ modified by **+u** or **+=**). However, for quoted lines other options apply:
embedded **-L**\ *label* option; if none is found we instead use
the first word following the segment marker [>].
- +Ld:
+ **+Ld**:
Take the Cartesian plot distances along the line as the label;
append **c\ \|\ i\ \|\ p** as the unit [Default is
:ref:`PROJ_LENGTH_UNIT <PROJ_LENGTH_UNIT>`]. The label will be formatted according
@@ -9771,7 +9844,7 @@ modified by **+u** or **+=**). However, for quoted lines other options apply:
which case we determine the appropriate format from the distance
value itself.
- +LD:
+ **+LD**:
Calculate actual Earth surface distances and use the distance at
the label placement point as the label; append
**d\ \|\ e\ \|\ f\ \|\ k\ \|\ m\ \|\ M\ \|\ n\ \|\ s**
@@ -9780,19 +9853,19 @@ modified by **+u** or **+=**). However, for quoted lines other options apply:
the segment lines, in which case we use the same unit specified
for that algorithm]. Requires a map projection to be used.
- +Lf:
+ **+Lf**:
Use all text after the 2nd column in the fixed label location
file *fix.txt* as labels. This choice obviously requires the
fixed label location algorithm (code **f**) to be in effect.
- +Ln:
+ **+Ln**:
Use the running number of the current multi-segment as label.
- +LN:
+ **+LN**:
Use a slash-separated combination of the current file number and
the current multi-segment number as label.
- +Lx:
+ **+Lx**:
As **h** but use the multi-segment headers in the *cross.d* file
instead. This choice obviously requires the crossing segments
location algorithm (code **x\ \|\ X**) to be in effect.
@@ -10113,7 +10186,7 @@ several (temporary) files to communicate between the different commands
that make up the script that finally creates a plot. Among those files
are:
- **gmt.conf** This file covers about 100 different settings that influence the
+ **gmt.conf** This file covers about 150 different settings that influence the
layout of your plot, from font sizes to tick lengths and date
formats (See Section `GMT defaults`_). Those settings can be altered
by editing the file, or by running the
@@ -10178,7 +10251,8 @@ The files ``gmt.conf`` and ``gmt.history`` are automatically created in the temp
``lat.cpt`` are created in that directory as well. To make things even more easy,
GMT now provides a set of handy shell functions in :doc:`gmt_shell_functions.sh`:
simply include that file in the script and the creation and the removal
-of the temporary directory is reduced to a single command.
+of the temporary directory is reduced to the single commands **gmt_init_tmpdir** and
+**gmt_remove_tmpdir**, respectively.
The GMT Vector Data Format for OGR Compatibility
diff --git a/doc/rst/source/blockmean.rst b/doc/rst/source/blockmean.rst
index 704ec3c..073a0f9 100644
--- a/doc/rst/source/blockmean.rst
+++ b/doc/rst/source/blockmean.rst
@@ -94,13 +94,13 @@ Optional Arguments
.. _-W:
**-W**\ [**i**\ \|\ **o**][**+s**]
- Weighted modifier[s]. Unweighted input and output has 3 columns
+ Weighted modifier[s]. Unweighted input and output have 3 columns
*x*,\ *y*,\ *z*; Weighted i/o has 4 columns *x*,\ *y*,\ *z*,\ *w*.
- Weights can be used in input to construct weighted mean values in
- blocks. Weight sums can be reported in output for later combining
+ Weights can be used in input to construct weighted mean values for
+ each block. Weight sums can be reported in output for later combining
several runs, etc. Use **-W** for weighted i/o, **-Wi** for weighted
- input only, **-Wo** for weighted output only. [Default uses
- unweighted i/o]. If your weights are actually uncertainties (sigma)
+ input only, and **-Wo** for weighted output only. [Default uses
+ unweighted i/o]. If your weights are actually uncertainties (one sigma)
then append **+s** and we compute weight = 1/sigma.
.. |Add_-bi| replace:: [Default is 3 (or 4 if **-Wi** is set)].
@@ -125,8 +125,8 @@ Optional Arguments
.. include:: explain_-ocols.rst_
.. |Add_nodereg| replace::
- Each block is the locus of points nearest the grid value location. For example, with
- **-R**\ 10/15/10/15 and **-I**\ 1: with the **-r** option 10 <=
+ Each block is the locus of points nearest the grid value location. Consider an example with
+ **-R**\ 10/15/10/15 and **-I**\ 1: With the **-r** option, 10 <=
(*x*,\ *y*) < 11 is one of 25 blocks; without it 9.5 <= (*x*,\ *y*)
< 10.5 is one of 36 blocks.
.. include:: explain_nodereg.rst_
diff --git a/doc/rst/source/blockmedian.rst b/doc/rst/source/blockmedian.rst
index 361a269..ebea8ce 100644
--- a/doc/rst/source/blockmedian.rst
+++ b/doc/rst/source/blockmedian.rst
@@ -80,7 +80,7 @@ Optional Arguments
*x*,\ *y*,\ *z*,\ *s*,\ *l*,\ *h*\ [,\ *w*]. [Default outputs
*x*,\ *y*,\ *z*\ [,\ *w*]. For box-and-whisker calculation, use
**-Eb** which will output
- *x*,\ *y*,\ *z*,\ *l*,\ *q25*,\ *q75*,\ *h*\ [,*w*], where *q25* and
+ *x*,\ *y*,\ *z*,\ *l*,\ *q25*,\ *q75*,\ *h*\ [,\ *w*], where *q25* and
*q75* are the 25% and 75% quantiles, respectively. See **-W** for
*w* output.
**-E**\ **r**\ \|\ **s**\ [**-**\ ]
@@ -113,13 +113,13 @@ Optional Arguments
.. _-W:
**-W**\ [**i**\ \|\ **o**][**+s**]
- Weighted modifier[s]. Unweighted input and output has 3 columns
+ Weighted modifier[s]. Unweighted input and output have 3 columns
*x*,\ *y*,\ *z*; Weighted i/o has 4 columns *x*,\ *y*,\ *z*,\ *w*.
- Weights can be used in input to construct weighted mean values in
- blocks. Weight sums can be reported in output for later combining
+ Weights can be used in input to construct weighted median values for each
+ block. Weight sums can be reported in output for later combining
several runs, etc. Use **-W** for weighted i/o, **-Wi** for weighted
- input only, **-Wo** for weighted output only. [Default uses
- unweighted i/o]. If your weights are actually uncertainties (sigma)
+ input only, and **-Wo** for weighted output only. [Default uses
+ unweighted i/o]. If your weights are actually uncertainties (one sigma)
then append **+s** and we compute weight = 1/sigma.
.. |Add_-bi| replace:: [Default is 3 (or 4 if **-Wi** is set)].
@@ -141,8 +141,8 @@ Optional Arguments
.. include:: explain_-ocols.rst_
.. |Add_nodereg| replace::
- Each block is the locus of points nearest the grid value location. For example, with
- **-R**\ 10/15/10/15 and **-I**\ 1: with the **-r** option 10 <=
+ Each block is the locus of points nearest the grid value location. Consider an example with
+ **-R**\ 10/15/10/15 and **-I**\ 1: With the **-r** option, 10 <=
(*x*,\ *y*) < 11 is one of 25 blocks; without it 9.5 <= (*x*,\ *y*)
< 10.5 is one of 36 blocks.
.. include:: explain_nodereg.rst_
diff --git a/doc/rst/source/blockmode.rst b/doc/rst/source/blockmode.rst
index 2676ead..103dd2e 100644
--- a/doc/rst/source/blockmode.rst
+++ b/doc/rst/source/blockmode.rst
@@ -116,13 +116,13 @@ Optional Arguments
.. _-W:
**-W**\ [**i**\ \|\ **o**][**+s**]
- Weighted modifier[s]. Unweighted input and output has 3 columns
+ Weighted modifier[s]. Unweighted input and output have 3 columns
*x*,\ *y*,\ *z*; Weighted i/o has 4 columns *x*,\ *y*,\ *z*,\ *w*.
- Weights can be used in input to construct weighted mean values in
- blocks. Weight sums can be reported in output for later combining
+ Weights can be used in input to construct weighted modal values for each
+ block. Weight sums can be reported in output for later combining
several runs, etc. Use **-W** for weighted i/o, **-Wi** for weighted
- input only, **-Wo** for weighted output only. [Default uses unweighted i/o].
- If your weights are actually uncertainties (sigma)
+ input only, and **-Wo** for weighted output only. [Default uses unweighted i/o].
+ If your weights are actually uncertainties (one sigma)
then append **+s** and we compute weight = 1/sigma.
.. |Add_-bi| replace:: [Default is 3 (or 4 if **-Wi** is set)].
@@ -144,8 +144,8 @@ Optional Arguments
.. include:: explain_-ocols.rst_
.. |Add_nodereg| replace::
- Each block is the locus of points nearest the grid value location. For example, with
- **-R**\ 10/15/10/15 and **-I**\ 1: with the **-r** option 10 <=
+ Each block is the locus of points nearest the grid value location. Consider an example with
+ **-R**\ 10/15/10/15 and **-I**\ 1: With the **-r** option, 10 <=
(*x*,\ *y*) < 11 is one of 25 blocks; without it 9.5 <= (*x*,\ *y*)
< 10.5 is one of 36 blocks.
.. include:: explain_nodereg.rst_
diff --git a/doc/rst/source/examples_chapter.rst_ b/doc/rst/source/examples_chapter.rst_
index c35bd84..d0a49e9 100644
--- a/doc/rst/source/examples_chapter.rst_
+++ b/doc/rst/source/examples_chapter.rst_
@@ -926,7 +926,7 @@ Creating GMT Graphics
*D* to a smaller increment (try 5 and wait a few minutes).
The call to :doc:`grdimage` includes the
- ``-Sn`` to suspend interpolation and only return the value of the
+ ``-nn`` to suspend interpolation and only return the value of the
nearest neighbor. This option is particularly practical for plotting
categorical data, like these, that should not be interpolated.
diff --git a/doc/rst/source/explain_-B.rst_ b/doc/rst/source/explain_-B.rst_
index 92c7e53..4fec927 100644
--- a/doc/rst/source/explain_-B.rst_
+++ b/doc/rst/source/explain_-B.rst_
@@ -1,2 +1,2 @@
**-B**\ [**p**\ \|\ **s**]\ *parameters* :ref:`(more ...) <-B_full>`
- Set map boundary intervals.
+ Set map boundary frame and axes attributes.
diff --git a/doc/rst/source/explain_-B_full.rst_ b/doc/rst/source/explain_-B_full.rst_
index 23a4ff9..b4c1999 100644
--- a/doc/rst/source/explain_-B_full.rst_
+++ b/doc/rst/source/explain_-B_full.rst_
@@ -30,7 +30,7 @@
but you may also split this into two separate invocations for clarity, i.e.,
-- **-B**\ [**p**\|\ **s**][**x**\|\ **y**\|\ **z**][**+l**\ *label*][**+p**\ *prefix*][**+u**\ *unit*]
+- **-B**\ [**p**\|\ **s**][**x**\|\ **y**\|\ **z**][**+l**\ \|\ **L**\ *label*][**+p**\ *prefix*][**+u**\ *unit*]
- **-B**\ [**p**\|\ **s**][**x**\|\ **y**\|\ **z**]\ *intervals*
The first optional flag following **-B** selects **p** (rimary) [Default] or
diff --git a/doc/rst/source/explain_-L_scale.rst_ b/doc/rst/source/explain_-L_scale.rst_
index 3b129ed..54a8b72 100644
--- a/doc/rst/source/explain_-L_scale.rst_
+++ b/doc/rst/source/explain_-L_scale.rst_
@@ -1,9 +1,9 @@
-**-L**\ [**g**\ \|\ **j**\ \|\ **J**\ \|\ **n**\ \|\ **x**]\ *refpoint*\ **+c**\ [*slon*/]\ *slat*\ **+w**\ *length*\ [**e**\ \|\ **f**\ \|\ **k**\ \|\ **M**\ \|\ **n**\ \|\ **u**]\ [\ **+a**\ *align*]\ [**+f**]\ [\ **+l**\ [*label*]\ ]\ [**+u**]
+**-L**\ [**g**\ \|\ **j**\ \|\ **J**\ \|\ **n**\ \|\ **x**]\ *refpoint*\ **+c**\ [*slon*/]\ *slat*\ **+w**\ *length*\ [**e**\ \|\ **f**\ \|\ **k**\ \|\ **M**\ \|\ **n**\ \|\ **u**]\ [\ **+a**\ *align*]\ [**+f**]\ [**+j**\ *justify*]\ [\ **+l**\ [*label*]\ ]\ [**+o**\ *dx*\ [/*dy*]]\ [**+u**]
Draws a simple map scale centered on the reference point specified
using one of four coordinate systems:
- (1) Use **-Dg** for map (user) coordinates, (2) use **-Dj** or **-DJ** for setting *refpoint* via
+ (1) Use **-Lg** for map (user) coordinates, (2) use **-Lj** or **-LJ** for setting *refpoint* via
a 2-char justification code that refers to the (invisible) map domain rectangle,
- (3) use **-Dn** for normalized (0-1) coordinates, or (4) use **-Dx** for plot coordinates
+ (3) use **-Ln** for normalized (0-1) coordinates, or (4) use **-Lx** for plot coordinates
(inches, cm, etc.). Scale is calculated for latitude *slat*
(optionally supply longitude *slon* for oblique projections [Default
is central meridian]), *length* is in km, or append unit from
@@ -11,10 +11,15 @@
Change the label alignment with **+a**\ *align* (choose among
**l**\ (eft), **r**\ (ight), **t**\ (op), and **b**\ (ottom)).
Append **+f** to get a "fancy" scale [Default is plain].
+ By default, the anchor point on the map scale is assumed to be the center of the scale (MC), but this
+ can be changed by appending **+j** followed by a 2-char justification code *justify*
+ (see :doc:`pstext` for list and explanation of codes).
Append **+l** to select the default label, which equals the distance
unit (meter, foot, km, mile, nautical mile, US survey foot) and is
justified on top of the scale [t]. Change this by giving your own
label (append **+l**\ *label*).
+ Add **+o** to offset the map scale by *dx*/*dy* away from the *refpoint* in
+ the direction implied by *justify* (or the direction implied by **-Dj** or **-DJ**).
Select **+u** to append the unit to all distance annotations along the
scale (for the plain scale, **+u** will instead select the unit to be
appended to the distance length). Note:
diff --git a/doc/rst/source/explain_-P_full.rst_ b/doc/rst/source/explain_-P_full.rst_
index f74fa97..a504dc7 100644
--- a/doc/rst/source/explain_-P_full.rst_
+++ b/doc/rst/source/explain_-P_full.rst_
@@ -2,6 +2,6 @@
**-P**
Select "Portrait" plot orientation [Default is "Landscape"; see
- **gmt.conf** or **gmtset** to change the **PS_PAGE_ORIENTATION**
+ :doc:`gmt.conf` or :doc:`gmtset` to change the **PS_PAGE_ORIENTATION**
parameter, or supply **-**\ **-PS_PAGE_ORIENTATION=**\ *orientation* on the
command line].
diff --git a/doc/rst/source/explain_-T_rose.rst_ b/doc/rst/source/explain_-T_rose.rst_
index 807903b..2d33c82 100644
--- a/doc/rst/source/explain_-T_rose.rst_
+++ b/doc/rst/source/explain_-T_rose.rst_
@@ -8,20 +8,21 @@
(inches, cm, etc.) [Default]. You can offset the reference point by *dx*/*dy* in
the direction implied by *justify*.
By default, the anchor point on the scale is assumed to be the center of the rose (MC), but this
- can be changed by appending **+j** followed by a 2-char justification code *justify* (see :doc:`pstext`).
+ can be changed by appending **+j** followed by a 2-char justification code *justify*
+ (see :doc:`pstext` for list and explanation of codes).
Note: If **-Dj** is used then *justify* defaults to the same as *refpoint*,
if **-DJ** is used then *justify* defaults to the mirror opposite of *refpoint*.
- Add **+o** to offset the color scale by *dx*/*dy* away from the *refpoint* point in
+ Add **+o** to offset the color scale by *dx*/*dy* away from the *refpoint* in
the direction implied by *justify* (or the direction implied by **-Dj** or **-DJ**).
- Append **+w**\ *width*\ to set the width of the rose in plot coordinates (inches, cm, etc.).
+ Append **+w**\ *width* to set the width of the rose in plot coordinates (in inches, cm, or points).
Add **+f** to get a "fancy" rose, and specify in *level* what
you want drawn. The default [1] draws the two principal E-W,
N-S orientations, 2 adds the two intermediate NW-SE and NE-SW
orientations, while 3 adds the eight minor orientations WNW-ESE,
NNW-SSE, NNE-SSW, and ENE-WSW.
Label the cardinal points W,E,S,N by adding **+l** and append your own four
- comma-separated strings to override the default.
- See :ref:`Placing-dir-map-roses` and **-F** on how to place a panel behind the scale.
+ comma-separated strings to override the default. Skip a specific label by leaving it blank.
+ See :ref:`Placing-dir-map-roses` and **-F** on how to place a panel behind the scale.
**-Tm**\ [**g**\ \|\ **j**\ \|\ **J**\ \|\ **n**\ \|\ **x**]\ *refpoint*\ **+w**\ *width*\ [**+d**\ *dec*\ [/\ *dlabel*]]]\ [**+i**\ *pen*]\ [**+j**\ *justify*][**+l**\ *w,e,s,n*][**+p**\ *pen*]\ [**+t**\ *ints*][**+o**\ *dx*\ [/*dy*]]
@@ -34,22 +35,24 @@
(inches, cm, etc.) [Default]. You can offset the reference point by *dx*/*dy* in
the direction implied by *justify*.
By default, the anchor point on the scale is assumed to be the center of the rose (MC), but this
- can be changed by appending **+j** followed by a 2-char justification code *justify* (see :doc:`pstext`).
+ can be changed by appending **+j** followed by a 2-char justification code *justify*
+ (see :doc:`pstext` for list and explanation of codes).
Note: If **-Dj** is used then *justify* defaults to the same as *refpoint*,
if **-DJ** is used then *justify* defaults to the mirror opposite of *refpoint*.
- Add **+o** to offset the color scale by *dx*/*dy* away from the *refpoint* point in
+ Add **+o** to offset the color scale by *dx*/*dy* away from the *refpoint* in
the direction implied by *justify* (or the direction implied by **-Dj** or **-DJ**).
- Append **+w**\ *width*\ to set the width of the rose in plot coordinates (inches, cm, etc.).
+ Append **+w**\ *width* to set the width of the rose in plot coordinates (in inches, cm, or points).
Use **+d** to assign the magnetic declination and set *dlabel*, which is a label for
the magnetic compass needle (Leave empty to format a label from
*dec*, or give - to bypass labeling). With **+d**, both directions to geographic and magnetic north are
plotted [Default is geographic only]. If the north label is **\***
then a north star is plotted instead of the north label. Annotation
and two levels of tick intervals for both geographic and magnetic
- directions are 30/5/1 degrees; override these settings by appending
- **+t**\ *ints*, and append six intervals to set both the geographic and magnetic intervals.
+ directions default to 30/5/1 degrees; override these settings by appending
+ **+t**\ *ints*, and append six slash-separated intervals to set both the
+ geographic (first three) and magnetic (last three) intervals.
Label the cardinal points W,E,S,N by adding **+l** and append your own four comma-separated
- strings to override the default.
- Number GMT default parameters control pens, fonts, and color;
- see the :ref:`Placing-mag-map-roses` section in the Cookbook.
- See **-F** on how to place a panel behind the scale.
+ strings to override the default. Skip a specific label by leaving it blank.
+ Number GMT default parameters control pens, fonts, and color.
+ See :ref:`Placing-dir-map-roses` and **-F** on how to place a panel behind the scale.
+
\ No newline at end of file
diff --git a/doc/rst/source/explain_-U.rst_ b/doc/rst/source/explain_-U.rst_
index 807c161..2fc22aa 100644
--- a/doc/rst/source/explain_-U.rst_
+++ b/doc/rst/source/explain_-U.rst_
@@ -1,2 +1,2 @@
-**-U**\ [*just*/*dx*/*dy*/][**c**\ \|\ *label*] :ref:`(more ...) <-U_full>`
+**-U**\ [[*just*\ ]/*dx*/*dy*/][**c**\ \|\ *label*] :ref:`(more ...) <-U_full>`
Draw GMT time stamp logo on plot.
diff --git a/doc/rst/source/explain_-U_full.rst_ b/doc/rst/source/explain_-U_full.rst_
index 1f4cfb0..5f54d82 100644
--- a/doc/rst/source/explain_-U_full.rst_
+++ b/doc/rst/source/explain_-U_full.rst_
@@ -1,11 +1,11 @@
.. _-U_full:
-**-U**\ [*just*/*dx*/*dy*/][**c**\ \|\ *label*]
- Draw Unix System time stamp on plot. By adding *just/dx/dy/*, the
+**-U**\ [[*just*\ ]/*dx*/*dy*/][**c**\ \|\ *label*]
+ Draw Unix System time stamp on plot. By adding [*just*\ ]\ */dx/dy/*, the
user may specify the justification of the stamp and where the stamp
should fall on the page relative to lower left corner of the plot.
For example, BL/0/0 will align the lower left corner of the time
- stamp with the lower left corner of the plot. Optionally, append a
+ stamp with the lower left corner of the plot [LL]. Optionally, append a
*label*, or **c** (which will plot the command string.). The GMT
parameters :ref:`MAP_LOGO <MAP_LOGO>`, :ref:`MAP_LOGO_POS <MAP_LOGO_POS>`, and
:ref:`FORMAT_TIME_STAMP <FORMAT_TIME_STAMP>` can affect the appearance; see the
diff --git a/doc/rst/source/explain_-aspatial_full.rst_ b/doc/rst/source/explain_-aspatial_full.rst_
index e99db50..db1c6d2 100644
--- a/doc/rst/source/explain_-aspatial_full.rst_
+++ b/doc/rst/source/explain_-aspatial_full.rst_
@@ -6,15 +6,14 @@
items to GMT data columns, give one or more comma-separated
associations *col*\ =\ *name*, where *name* is the name of an
aspatial attribute field in a OGR/GMT file and whose value we wish
- to as data input for column *col*. In addition, to assign an
+ to use as data input for column *col*. In addition, to assign an
aspatial value to non-column data, you may specify *col* as **D**
for *distance*, **G** for *fill*, **I** for *ID*, **L** for *label*,
**T** for *text*, **W** for *pen*, and **Z** for *value* [e.g., used
- to look-up color via a CPT]. If you skip the leading "*col*\ =" in
+ to look up color via a CPT]. If you skip the leading "*col*\ =" in
the argument then we supply (and automatically increment) a column
value starting at 2.
- *Writing OGR/GMT-formatted files*: Give one or more comma-separated
- associations *col*\ =\ *name*\ [:*type*], To write OGR/GMT-formatted
+ *Writing OGR/GMT-formatted files*: To write OGR/GMT-formatted
files, give one or more comma-separated associations
*col*\ =\ *name*\ [:*type*], with an optional data type from DOUBLE,
FLOAT, INTEGER, CHAR, STRING, DATETIME, or LOGICAL [DOUBLE]. To
diff --git a/doc/rst/source/explain_color.rst_ b/doc/rst/source/explain_color.rst_
index 0abd372..3d28646 100644
--- a/doc/rst/source/explain_color.rst_
+++ b/doc/rst/source/explain_color.rst_
@@ -3,11 +3,10 @@
*color*
The *color* of lines, areas and patterns can be specified by a valid
- color name; by a gray shade (in the range 0-255); by a decimal color
+ color name, by a gray shade (in the range 0-255), by a decimal color
code (r/g/b, each in range 0-255; h-s-v, ranges 0-360, 0-1, 0-1; or
- c/m/y/k, each in range 0-1); or by a hexadecimal color code
+ c/m/y/k, each in range 0-1), or by a hexadecimal color code
(#rrggbb, as used in HTML). For PDF transparency, append
- @\ *transparency* in the 0-100 percent range [0 or opaque]. See the
+ @\ *transparency* in the 0-100 percent range [0 or opaque]. See
:doc:`gmtcolors` for more information and a full list of color
- names. See GMT Cookbook & Technical Reference Chapter 4 for more
- information.
+ names.
diff --git a/doc/rst/source/explain_contlabel.rst_ b/doc/rst/source/explain_contlabel.rst_
index ef943df..62cd184 100644
--- a/doc/rst/source/explain_contlabel.rst_
+++ b/doc/rst/source/explain_contlabel.rst_
@@ -22,7 +22,7 @@
where these lines intersect the quoted lines. The format of each
*line* specification is *start/stop*, where *start* and *stop*
are either a specified point *lon/lat* or a 2-character **XY**
- key that uses the justification format employed in **pstext** to
+ key that uses the justification format employed in :doc:`pstext` to
indicate a point on the map, given as [LCR][BMT].
In addition, you can use Z-, Z+ to mean the global minimum and
maximum locations in the grid. **L** will interpret the point pairs
diff --git a/doc/rst/source/explain_core_full.rst_ b/doc/rst/source/explain_core_full.rst_
index 3566063..ebec93d 100644
--- a/doc/rst/source/explain_core_full.rst_
+++ b/doc/rst/source/explain_core_full.rst_
@@ -6,6 +6,6 @@
to use all available cores. Append *n* to only use *n* cores
(if too large it will be truncated to the maximum cores
available). Finally, give a negative *n* to select
- (all - *n*) cores (or at least 1 if *n equals or exceeds
+ (all - *n*) cores (or at least 1 if *n* equals or exceeds
all). The **-x** option is only available to GMT modules
compiled with OpenMP support.
diff --git a/doc/rst/source/explain_fft.rst_ b/doc/rst/source/explain_fft.rst_
index 40d2774..6443cf7 100644
--- a/doc/rst/source/explain_fft.rst_
+++ b/doc/rst/source/explain_fft.rst_
@@ -1,11 +1,9 @@
-**-N**\ [**f**\ \|\ **q**\ \|\ **s**\ \|\ *nx/ny*][\ **+a**\ \|\ [\ **+d**\ \|\ **h**\ \|\ **l**][\ **+e**\ \|\ **n**\ \|\ **m**][\ **+t**\ *width*][**+w**\ [*suffix*]][\ **+z**\ [**p**]]
+**-N**\ [**f**\ \|\ **s**\ \|\ *nx/ny*][\ **+a**\ \|\ [\ **+d**\ \|\ **h**\ \|\ **l**][\ **+e**\ \|\ **n**\ \|\ **m**][\ **+t**\ *width*][**+v**][**+w**\ [*suffix*]][\ **+z**\ [**p**]]
Choose or inquire about suitable grid dimensions for FFT and set
optional parameters. Control the FFT dimension:
**-Nf** will force the FFT to use the actual dimensions of the data.
- **-Nq** will inQuire about more suitable dimensions, report those, then continue.
-
**-Ns** will present a list of optional dimensions, then exit.
**-N**\ *nx/ny* will do FFT on array size *nx/ny* (must be >= grid file size). Default chooses
@@ -36,6 +34,9 @@
the tapering is applied instead to the data margins as no extension is
available [0%].
+ Control messages being reported:
+ **+v** will report suitable dimensions during processing.
+
Control writing of temporary results:
For detailed investigation you can write the intermediate grid being passed
to the forward FFT; this is likely to have been detrended, extended by
diff --git a/doc/rst/source/explain_help.rst_ b/doc/rst/source/explain_help.rst_
index b8e2a56..a8e099d 100644
--- a/doc/rst/source/explain_help.rst_
+++ b/doc/rst/source/explain_help.rst_
@@ -1,7 +1,7 @@
**-^** or just **-**
- Print a short message about the syntax of the command, then exits (NOTE: on Windows use just **-**).
+ Print a short message about the syntax of the command, then exits (NOTE: on Windows just use **-**).
**-+** or just **+**
Print an extensive usage (help) message, including the explanation of
any module-specific option (but not the GMT common options), then exits.
**-?** or no arguments
- Print a complete usage (help) message, including the explanation of options, then exits.
+ Print a complete usage (help) message, including the explanation of all options, then exits.
diff --git a/doc/rst/source/explain_pen.rst_ b/doc/rst/source/explain_pen.rst_
index 14d2d54..8f907b2 100644
--- a/doc/rst/source/explain_pen.rst_
+++ b/doc/rst/source/explain_pen.rst_
@@ -11,7 +11,8 @@ Specifying Pens
**faint**, **default**, **thin**\ [**ner**\ \|\ **nest**],
**thick**\ [**er**\ \|\ **est**], **fat**\ [**ter**\ \|\ **test**],
or **obese**. *color* specifies a gray shade or color (see
- `Specifying Color`_ above). *style* is a combination of dashes '-' and
+ `Specifying Color`_ above). *style* can be any of 'solid', 'dashed'
+ or 'dotted', or a custom combination of dashes '-' and
dots '.'. If any of the attributes is omitted their default or
previous setting will be retained. See GMT Cookbook & Technical
- Reference Chapter 4 for more information.
+ Reference :ref:`Specifying pen attributes <-Wpen_attrib>` for more information.
diff --git a/doc/rst/source/explain_precision.rst_ b/doc/rst/source/explain_precision.rst_
index 5f43d7d..728a78a 100644
--- a/doc/rst/source/explain_precision.rst_
+++ b/doc/rst/source/explain_precision.rst_
@@ -3,9 +3,11 @@ ASCII Format Precision
The ASCII output formats of numerical data are controlled by parameters
in your :doc:`gmt.conf` file. Longitude and latitude are formatted
-according to :ref:`FORMAT_GEO_OUT <FORMAT_GEO_OUT>`, whereas other values are formatted
+according to :ref:`FORMAT_GEO_OUT <FORMAT_GEO_OUT>`, absolute time is
+under the control of :ref:`FORMAT_DATE_OUT <FORMAT_DATE_OUT>` and
+:ref:`FORMAT_CLOCK_OUT <FORMAT_CLOCK_OUT>`, whereas general floating point values are formatted
according to :ref:`FORMAT_FLOAT_OUT <FORMAT_FLOAT_OUT>`. Be aware that the format in effect
-can lead to loss of precision in the output, which can lead to various
+can lead to loss of precision in ASCII output, which can lead to various
problems downstream. If you find the output is not written with enough
precision, consider switching to binary output (**-bo** if available) or
specify more decimals using the :ref:`FORMAT_FLOAT_OUT <FORMAT_FLOAT_OUT>` setting.
diff --git a/doc/rst/source/fitcircle.rst b/doc/rst/source/fitcircle.rst
index 927d539..ace0abf 100644
--- a/doc/rst/source/fitcircle.rst
+++ b/doc/rst/source/fitcircle.rst
@@ -83,8 +83,7 @@ Optional Arguments
coordinates, and append *flags* to specify which coordinates you would like. You
can choose from **f** (Flat Earth mean location), **m** (mean location),
**n** (north pole of great circle), **s** (south pole of great circle), and
- **c
- ** (pole of small circle and its colatitude, which requires **-S**).
+ **c** (pole of small circle and its colatitude, which requires **-S**).
.. _-S:
diff --git a/doc/rst/source/gmt.conf.rst b/doc/rst/source/gmt.conf.rst
index 75d1e57..134274d 100644
--- a/doc/rst/source/gmt.conf.rst
+++ b/doc/rst/source/gmt.conf.rst
@@ -706,7 +706,9 @@ fonts can be found in the :doc:`gmt` man page.
parallel the longitude and latitude directions (e.g., rectangular
projections, polar projections). For situations where all boundary
ticks and annotations must be inside the maps (e.g., for preparing
- geotiffs), chose **inside**.
+ geotiffs), chose **inside**. Finally, for Cartesian plots you can
+ also choose **graph**\ , which adds a vector to the end of each axis.
+ This works best when you reduce the number of axes plotted.
.. _MAP_FRAME_WIDTH:
@@ -811,7 +813,7 @@ fonts can be found in the :doc:`gmt` man page.
.. _MAP_TICK_LENGTH:
**MAP_TICK_LENGTH**
- Sets both **MAP_TICK_LENGTH_PRIMARY** and **MAP_TICK_LENGH_SECONDARY** to the value specified.
+ Sets both **MAP_TICK_LENGTH_PRIMARY** and **MAP_TICK_LENGTH_SECONDARY** to the value specified.
This setting is not included in the **gmt.conf** file.
.. _MAP_TICK_LENGTH_PRIMARY:
@@ -998,7 +1000,7 @@ fonts can be found in the :doc:`gmt` man page.
Applies when geodesics are approximated by great circle distances on
an equivalent sphere or when surface areas are computed. Select from
mean (R_1), authalic (R_2), volumetric (R_3), meridional, or
- quadratic [authalic]. See also PROJ_MEAN_RADIUS.
+ quadratic [authalic].
.. _PROJ_SCALE_FACTOR:
diff --git a/doc/rst/source/gmt2kml.rst b/doc/rst/source/gmt2kml.rst
index f25bfbc..e7838e8 100644
--- a/doc/rst/source/gmt2kml.rst
+++ b/doc/rst/source/gmt2kml.rst
@@ -20,7 +20,7 @@ Synopsis
[ |-G|\ **f\|n**\ **-**\ \|\ *fill* ]
[ |-I|\ *icon* ] [ **-K**]
[ |-L|\ *col1:name1*,\ *col2:name2*,... ]
-[ |-N|\ [+\|*name\_template*\ \|\ *name*] ] [ **-O**]
+[ |-N|\ [+\|\ *name\_template*\ \|\ *name*] ] [ **-O**]
[ |-R|\ **a**\ \|\ *w/e/s/n* ]
[ |-S|\ **c**\ \|\ **n**\ *scale*] ]
[ |-T|\ *title*\ [/*foldername*] ]
diff --git a/doc/rst/source/gmtcolors.rst b/doc/rst/source/gmtcolors.rst
index 6a9e3ff..79e6eea 100644
--- a/doc/rst/source/gmtcolors.rst
+++ b/doc/rst/source/gmtcolors.rst
@@ -32,7 +32,7 @@ GMT allows several ways to represent a color:
ranging from 00 (dark) to FF (light). Upper and lower case are allowed.
**Graylevel**
- For shades of gray, R = G = B, and only one number needs to be used.
+ For shades of gray, **R** = **G** = **B**\ , and only one number needs to be used.
This representation is popular with black and white printers.
**H-S-V**
@@ -42,7 +42,7 @@ GMT allows several ways to represent a color:
This representation can be helpful when hue varies a lot.
**C/M/Y/K**
- Specify **C**\ yan, **M**\ agenta, **Y**\ ellow, and blacBD(K). Each
+ Specify **C**\ yan, **M**\ agenta, **Y**\ ellow, and blac\ **K**\ . Each
number is in the range from 0 (no paint) to 1 (maximum paint). This
representation is used by most color printers.
@@ -1066,8 +1066,7 @@ and their equivalent color codes.
Further Information
-------------------
-For more information on the use of color, read Appendix I of the **GMT
-TECHNICAL REFERENCE AND COOKBOOK**.
+For more information on the use of color, read Chapter :ref:`Color Space` of the **CookBook**.
See Also
--------
diff --git a/doc/rst/source/gmtdefaults.rst b/doc/rst/source/gmtdefaults.rst
index cb7dadb..565945f 100644
--- a/doc/rst/source/gmtdefaults.rst
+++ b/doc/rst/source/gmtdefaults.rst
@@ -73,7 +73,7 @@ To get a copy of the GMT parameter defaults in your home directory, run
gmt defaults -D > ~/gmt.conf
You may now change the settings by editing this file using a text editor
-of your choice, or use **gmtset** to change specified parameters on the
+of your choice, or use :doc:`gmtset` to change specified parameters on the
command line.
Bugs
diff --git a/doc/rst/source/gmtinfo.rst b/doc/rst/source/gmtinfo.rst
index ccac07f..7eb8755 100644
--- a/doc/rst/source/gmtinfo.rst
+++ b/doc/rst/source/gmtinfo.rst
@@ -120,7 +120,7 @@ Optional Arguments
**-S**\ [**x**][**y**]
Add extra space for error bars. Useful together with **-I** option
- and when later plotting with **psxy** **-E**. **-Sx** leaves space
+ and when later plotting with :doc:`psxy` **-E**. **-Sx** leaves space
for horizontal error bars using the values in third
(2) column. **-Sy** leaves space for vertical error
bars using the values in third (2) column. **-S**
@@ -218,5 +218,6 @@ See Also
--------
:doc:`gmt`,
-:doc:`gmtconvert`
+:doc:`gmtconvert`,
+:doc:`psxy`,
diff --git a/doc/rst/source/gmtlogo.rst b/doc/rst/source/gmtlogo.rst
index a164c6c..3db33b4 100644
--- a/doc/rst/source/gmtlogo.rst
+++ b/doc/rst/source/gmtlogo.rst
@@ -14,7 +14,7 @@ Synopsis
.. include:: common_SYN_OPTs.rst_
**gmtlogo** [ |-D|\ [**g**\ \|\ **j**\ \|\ **J**\ \|\ **n**\ \|\ **x**]\ *refpoint*\ **+w**\ *width*\ [**+j**\ *justify*]\ [**+o**\ *dx*\ [/*dy*]] ]
-[ |-F|\ [\ **+c**\ *clearances*][\ **+g**\ *fill*][**+i**\ [[*gap*/]*pen*]][\ **+p**\ [*pen*]][\ **+r**\ [*radius*\ ]][\ **+s**\ [[*dx*/*dy*/][*shade*\ ]]] ]
+[ |-F|\ [\ **+c**\ *clearances*][\ **+g**\ *fill*][**+i**\ [[*gap*/]\ *pen*]][\ **+p**\ [*pen*]][\ **+r**\ [*radius*\ ]][\ **+s**\ [[*dx*/*dy*/][*shade*\ ]]] ]
[ |-J|\ *parameters* ] [ |-J|\ **z**\ \|\ **Z**\ *parameters* ] [ |-K| ]
[ |-O| ] [ |-P| ]
[ |SYN_OPT-Rz| ]
diff --git a/doc/rst/source/gmtmath.rst b/doc/rst/source/gmtmath.rst
index ea7946c..3bee052 100644
--- a/doc/rst/source/gmtmath.rst
+++ b/doc/rst/source/gmtmath.rst
@@ -176,7 +176,7 @@ Optional Arguments
Operators
---------
-Choose among the following 176 operators. "args" are the number of input
+Choose among the following 183 operators. "args" are the number of input
and output arguments.
+-----------------+--------+--------------------------------------------------------------------------------------------+
diff --git a/doc/rst/source/gmtspatial.rst b/doc/rst/source/gmtspatial.rst
index 95cb9bb..121ada1 100644
--- a/doc/rst/source/gmtspatial.rst
+++ b/doc/rst/source/gmtspatial.rst
@@ -20,7 +20,7 @@ Synopsis
[ |-F|\ [**l**] ]
[ |-I|\ [**e**\ \|\ **i**] ]
[ |-N|\ *pfile*\ [**+a**][\ **+p**\ *start*][**+r**][**+z**] ]
-[ |-Q|\ [[**-**\ \|\ **+**\ ]*unit*\ ][**+c**\ *min*\ [/*max*]][**+h**\ ][**+l**\ ][**+p**\ ][**+s**\ [**a**\ \|\ **d**]] ]
+[ |-Q|\ [[**-**\ \|\ **+**\ ]\ *unit*\ ][**+c**\ *min*\ [/*max*]][**+h**\ ][**+l**\ ][**+p**\ ][**+s**\ [**a**\ \|\ **d**]] ]
[ |SYN_OPT-R| ]
[ |-S|\ **i**\ \|\ **u**\ \|\ **s**\ \|\ **j** ]
[ |-T|\ [*clippolygon*] ]
@@ -142,7 +142,7 @@ Optional Arguments
.. _-Q:
-**-Q**\ [[**-**\ \|\ **+**\ ]*unit*\ ][**+c**\ *min*\ [/*max*]][**+h**\ ][**+l**\ ][**+p**\ ][**+s**\ [**a**\ \|\ **d**]]
+**-Q**\ [[**-**\ \|\ **+**\ ]\ *unit*\ ][**+c**\ *min*\ [/*max*]][**+h**\ ][**+l**\ ][**+p**\ ][**+s**\ [**a**\ \|\ **d**]]
Measure the area of all polygons or length of line segments. Use
**-Q+h** to append the area to each polygons segment header [Default
simply writes the area to stdout]. For polygons we also compute the
diff --git a/doc/rst/source/grd2cpt.rst b/doc/rst/source/grd2cpt.rst
index f823173..3b0c422 100644
--- a/doc/rst/source/grd2cpt.rst
+++ b/doc/rst/source/grd2cpt.rst
@@ -14,10 +14,10 @@ Synopsis
.. include:: common_SYN_OPTs.rst_
**grd2cpt** *grid* [ |-A|\ [**+**\ ]\ *transparency* ]
-[ |-C|\ *cpt* ] [ |-D|\ [**i**\ \|\ **o**] ]
+[ |-C|\ *cpt* ] [ |-D|\ [**i**] ]
[ |-E|\ [*nlevels*] ]
[ |-F|\ [**R**\ \|\ **r**\ \|\ **h**\ \|\ **c** ][**+c**\ ]]
-[ |-G|\ *zlo*\ /\ *zhi* ] [ |-I| ]
+[ |-G|\ *zlo*\ /\ *zhi* ] [ |-I|\ [**c**][**z**] ]
[ |-L|\ *minlimit/maxlimit* ]
[ |-M| ] [ |-N| ]
[ |-Q|\ [**i**\ \|\ **o**] ]
@@ -97,7 +97,7 @@ Optional Arguments
.. _-D:
-**-D**\ [**i**\ \|\ **o**]
+**-D**\ [**i**]
Select the back- and foreground colors to match the colors for
lowest and highest *z*-values in the output CPT [Default uses
the colors specified in the master file, or those defined by the
@@ -126,15 +126,18 @@ Optional Arguments
Truncate the incoming CPT so that the lowest and highest z-levels
are to *zlo* and *zhi*. If one of these equal NaN then
we leave that end of the CPT alone. The truncation takes place
- before any resampling.
+ before any resampling. See also :ref:`manipulating_CPTs`
.. _-I:
-**-I**
- Reverses the sense of color progression in the master CPT. Also
+**-I**\ [**c**][**z**]
+ Append **c** [Default] to reverse the sense of color progression in the master CPT. Also
exchanges the foreground and background colors, including those
specified by the parameters :ref:`COLOR_BACKGROUND <COLOR_BACKGROUND>` and
:ref:`COLOR_FOREGROUND <COLOR_FOREGROUND>`.
+ Append **z** to reverse the sign of z-values in the color table. Note that
+ this change of *z*-direction happens before **-G** and **-T** values are used
+ so the latter much be compatible with the changed *z*-range. See also :ref:`manipulating_CPTs`
.. _-L:
diff --git a/doc/rst/source/grdblend.rst b/doc/rst/source/grdblend.rst
index 2a1bf8b..d0b55d6 100644
--- a/doc/rst/source/grdblend.rst
+++ b/doc/rst/source/grdblend.rst
@@ -36,7 +36,7 @@ not filled in with data. Such unconstrained nodes are set to a value
specified by the user [Default is NaN]. Nodes with more than one value
will be set to the weighted average value. Any input grid that does not
share the final output grid's node registration and grid spacing will
-automatically be resampled via calls to grdsample. Note: Due to the
+automatically be resampled via calls to :doc:`grdsample`. Note: Due to the
row-by-row i/o nature of operations in grdblend we only support the
netCDF and native binary grid formats for both input and output.
@@ -84,8 +84,8 @@ Optional Arguments
*blendfile*. You must specify at least 2 input grids for this
mechanism to work. Any grid that is not co-registered with the
desired output layout implied by **-R**, **-I** (and **-r**) will
- first be resampled via **grdsample**. Also, grids that are not in
- netCDF or native binary format will first be reformatted via **grdconvert**.
+ first be resampled via :doc:`grdsample`. Also, grids that are not in
+ netCDF or native binary format will first be reformatted via :doc:`grdconvert`.
.. _-C:
@@ -107,7 +107,7 @@ Optional Arguments
.. _-Q:
**-Q**
- Create a header-less grid file suitable for use with **grdraster**.
+ Create a header-less grid file suitable for use with :doc:`grdraster`.
Requires that the output grid file is a native format (i.e., not netCDF).
.. _-V:
@@ -187,5 +187,9 @@ documentation for how to change system limits.
See Also
--------
-:doc:`gmt`, :doc:`grd2xyz`,
-:doc:`grdedit` :doc:`grdraster`
+:doc:`gmt`,
+:doc:`grd2xyz`,
+:doc:`grdconvert`,
+:doc:`grdedit`,
+:doc:`grdsample`,
+:doc:`grdraster`
diff --git a/doc/rst/source/grdcontour.rst b/doc/rst/source/grdcontour.rst
index b98b1de..7149a1b 100644
--- a/doc/rst/source/grdcontour.rst
+++ b/doc/rst/source/grdcontour.rst
@@ -16,7 +16,7 @@ Synopsis
**grdcontour** *grid* |-C|\ [+]\ *cont_int*\ \|\ *cpt*
|-J|\ *parameters* [ |-A|\ [**-**\ \|\ [+]\ *annot_int*][*labelinfo*] ]
[ |SYN_OPT-B| ]
-[ |-D|\ *<template>* ]
+[ |-D|\ *template* ]
[ |-F|\ [**l**\ \|\ **r**] ]
[ |-G|\ [**d**\ \|\ **f**\ \|\ **n**\ \|\ **l**\ \|\ **L**\ \|\ **x**\ \|\ **X**]\ *params* ]
[ |-J|\ **z**\ \|\ **Z**\ *parameters* ] [ |-K| ] [ |-L|\ *low/high* ]
@@ -29,7 +29,7 @@ Synopsis
[ |-W|\ [*type*]\ *pen* ][**+c**\ [**l**\ \|\ **f**]]
[ |SYN_OPT-X| ]
[ |SYN_OPT-Y| ]
-[ |-Z|\ [*factor*\ [/*shift*]][**p**] ]
+[ |-Z|\ [\*factor*\ [/*offset*]][**p**] ]
[ |SYN_OPT-bo| ]
[ |SYN_OPT-c| ]
[ |SYN_OPT-do| ]
@@ -113,7 +113,7 @@ Optional Arguments
.. _-D:
-**-D**\ *<template>*
+**-D**\ *template*
Dump contours as data line segments; no plotting takes place.
Append filename template which may contain C-format specifiers.
If no filename template is given we write all lines to stdout.
@@ -221,8 +221,8 @@ Optional Arguments
.. _-Z:
-**-Z**\ [*factor*\ [/*shift*]][**p**]
- Use to subtract *shift* from the data and multiply the results by
+**-Z**\ [\ *factor*\ [/*offset*]][**p**]
+ Use to subtract *offset* from the data and multiply the results by
*factor* before contouring starts [1/0]. (Numbers in **-A**, **-C**,
**-L** refer to values after this scaling has occurred.) Append
**p** to indicate that this grid file contains z-values that are
diff --git a/doc/rst/source/grdconvert.rst b/doc/rst/source/grdconvert.rst
index de3cf0e..df746c6 100644
--- a/doc/rst/source/grdconvert.rst
+++ b/doc/rst/source/grdconvert.rst
@@ -88,7 +88,7 @@ Optional Arguments
**-N**
Suppress the writing of the GMT header structure. This is useful
- when you want to write a native grid to be used by **grdraster**. It
+ when you want to write a native grid to be used by :doc:`grdraster`. It
only applies to native grids and is ignored for netCDF output.
.. _-R:
@@ -262,19 +262,17 @@ image.nc, assuming the range in image.nc is 0-1 and we need 0-255, run
gmt grdconvert image.nc -R-60/-40/-40/-30 image.ras8=rb/255/0 -V
-To convert etopo2.nc to etopo2.i2 that can be used by **grdraster**, try
+To convert etopo2.nc to etopo2.i2 that can be used by :doc:`grdraster`, try
::
gmt grdconvert etopo2.nc etopo2.i2=bs -N -V
-To creat a dumb file saved as a 32 bits float GeoTiff using GDAL, run
-
- ::
-
- gmt grdmath -Rd -I10 X Y MUL = lixo.tiff=gd:GTiff
-
See Also
--------
-:doc:`gmt.conf`, :doc:`gmt`, :doc:`grdmath`
+:doc:`gmt.conf`,
+:doc:`gmt`,
+:doc:`grdmath`,
+:doc:`grdraster`
+
diff --git a/doc/rst/source/grdcut.rst b/doc/rst/source/grdcut.rst
index ec88049..7ee9986 100644
--- a/doc/rst/source/grdcut.rst
+++ b/doc/rst/source/grdcut.rst
@@ -29,9 +29,9 @@ Description
**grdcut** will produce a new *outgrid* file which is a subregion of
*ingrid*. The subregion is specified with **-R** as in other programs;
the specified range must not exceed the range of *ingrid* (but see **-N**).
-If in doubt, run **grdinfo** to check range. Alternatively, define the subregion
+If in doubt, run :doc:`grdinfo` to check range. Alternatively, define the subregion
indirectly via a range check on the node values or via distances from a
-given point. Complementary to **grdcut** there is **grdpaste**, which
+given point. Complementary to **grdcut** there is :doc:`grdpaste`, which
will join together two grid files along a common edge.
Required Arguments
@@ -99,7 +99,7 @@ Optional Arguments
Examples
--------
-Suppose you have used **surface** to grid ship gravity in the region
+Suppose you have used :doc:`surface` to grid ship gravity in the region
between 148E - 162E and 8N - 32N, and you do not trust the gridding near
the edges, so you want to keep only the area between 150E - 160E and 10N - 30N, then:
@@ -127,4 +127,5 @@ See Also
:doc:`gmt`,
:doc:`grdclip`,
:doc:`grdpaste`,
-:doc:`grdinfo`
+:doc:`grdinfo`,
+:doc:`surface`
diff --git a/doc/rst/source/grdgradient.rst b/doc/rst/source/grdgradient.rst
index adfb53b..4c09689 100644
--- a/doc/rst/source/grdgradient.rst
+++ b/doc/rst/source/grdgradient.rst
@@ -172,7 +172,7 @@ If you want to make several illuminated maps of subregions of a large
data set, and you need the illumination effects to be consistent across
all the maps, use the **-N** option and supply the same value of *sigma*
and *offset* to **grdgradient** for each map. A good guess is *offset* =
-0 and *sigma* found by **grdinfo** **-L2** or **-L1** applied to an
+0 and *sigma* found by :doc:`grdinfo` **-L2** or **-L1** applied to an
unnormalized gradient grd.
If you simply need the *x*- or *y*-derivatives of the grid, use :doc:`grdmath`.
@@ -208,6 +208,7 @@ See Also
:doc:`gmt`, :doc:`gmt.conf`
:doc:`grdhisteq`,
+:doc:`grdinfo`,
:doc:`grdmath`,
:doc:`grdimage`, :doc:`grdview`,
:doc:`grdvector`
diff --git a/doc/rst/source/grdhisteq.rst b/doc/rst/source/grdhisteq.rst
index b0da84c..7c56a75 100644
--- a/doc/rst/source/grdhisteq.rst
+++ b/doc/rst/source/grdhisteq.rst
@@ -141,7 +141,7 @@ gradients to the range [-1, 1], you will get correct shading of 68% of
your data, while 16% of them will be clipped to -1 and 16% of them
clipped to +1. If this makes too much of the image too light or too
dark, you should take the output of **grdhisteq** and rescale it using
-**grdmath** and multiplying by something less than 1.0, to shrink the
+:doc:`grdmath` and multiplying by something less than 1.0, to shrink the
range of the values, thus bringing more than 68% of the image into the
range [-1, 1]. Alternatively, supply a normalization factor with **-N**.
diff --git a/doc/rst/source/grdimage.rst b/doc/rst/source/grdimage.rst
index 5f4cf26..e66a769 100644
--- a/doc/rst/source/grdimage.rst
+++ b/doc/rst/source/grdimage.rst
@@ -15,7 +15,7 @@ Synopsis
**grdimage** *grd_z* \| *grd_r grd_g grd_b*
[ |-A|\ *out_img*\ [**=**\ *driver*] ] [ |-C|\ *cpt* ]
-[ |-D|\ [**r**\ ] ] [ |-E|\ **i**\ [\|\ *dpi*] ] |-J|\ *parameters*
+[ |-D|\ [**r**\ ] ] [ |-E|\ [\ **i**\ \|\ *dpi*] ] |-J|\ *parameters*
[ |-G|\ [**f**\ \|\ **b**]\ *color* ]
[ |-I|\ [*intensfile*\ \|\ *intensity*] ]
[ |-J|\ **z**\ \|\ **-Z**\ *parameters* ]
@@ -132,7 +132,7 @@ Optional Arguments
.. _-E:
-**-Ei**\ [\|\ *dpi*]
+**-E**\ [\ **i**\ \|\ *dpi*]
Sets the resolution of the projected grid that will be created if a
map projection other than Linear or Mercator was selected [100]. By
default, the projected grid will be of the same size (rows and
@@ -154,7 +154,7 @@ Optional Arguments
or a constant intensity to apply everywhere; this simply affects the
ambient light. If no argument is given then we derive an intensity
grid from the input data grid *grd_z* via a call to :doc:`grdgradient`
- using the arguments **-A-45** and **-Nt1** for that module. If you want
+ using the arguments **-A**\ -45 and **-Nt**\ 1 for that module. If you want
other settings then run :doc:`grdgradient` separately first.
[Default is no illumination].
diff --git a/doc/rst/source/grdinfo.rst b/doc/rst/source/grdinfo.rst
index 2020bdc..085829c 100644
--- a/doc/rst/source/grdinfo.rst
+++ b/doc/rst/source/grdinfo.rst
@@ -17,7 +17,7 @@ Synopsis
[ |-I|\ [*dx*\ [/*dy*]\|\ **r**\ \|\ **b**] ]
[ |-L|\ [**0**\ \|\ **1**\ \|\ **2**] ] [ |-M| ]
[ |SYN_OPT-R| ]
-[ |-T|\ [*dz*]\ [**+a**\ [*alpha*]] [**+s**] ]
+[ |-T|\ [*dz*]\ [**+a**\ [*alpha*]]\ [**+s**] ]
[ |SYN_OPT-V| ]
[ |SYN_OPT-f| ]
@@ -98,7 +98,7 @@ Optional Arguments
.. _-T:
-|-T|\ [*dz*]\ [**+a**\ [*alpha*]] [**+s**]
+|-T|\ [*dz*]\ [**+a**\ [*alpha*]]\ [**+s**]
Determine min and max z-value. If *dz* is provided then we first round these
values off to multiples of *dz*. To exclude the two tails of the distribution
when determining the min and max you can add **+a** to set the *alpha*
diff --git a/doc/rst/source/grdmask.rst b/doc/rst/source/grdmask.rst
index 01425b3..43134c7 100644
--- a/doc/rst/source/grdmask.rst
+++ b/doc/rst/source/grdmask.rst
@@ -39,7 +39,7 @@ Description
specified region and lattice spacing will be set equal to one of three
possible values depending on whether the node is outside, on the polygon
perimeter, or inside the polygon. The resulting mask may be used in
-subsequent operations involving **grdmath** to mask out data from
+subsequent operations involving :doc:`grdmath` to mask out data from
polygonal areas. 2. The *pathfiles* simply represent data point locations
and the mask is set to the inside or outside value depending on whether
a node is within a maximum distance from the nearest data point. If the
@@ -143,6 +143,15 @@ Optional Arguments
.. include:: explain_grd_coord.rst_
+Save storage space
+------------------
+
+Since most uses of grdmask revolves around creating mask grids that hold just a few integer
+values (and perhaps NaN), we choose to write them to disk as byte grids by appending the
+suffix **=nb** to the desired grid filename. Some situations may store integers that exceed
+the range available in a byte and for those we specify a short integer grid with **=ns**.
+For larger integers you may consider **=ni**, otherwise use the default float grid format.
+
Examples
--------
@@ -164,13 +173,13 @@ in plates.gmt, based on the attribute POL_ID, do
::
- gmt grdmask plates.gmt -R-40/40/-40/40 -I2m -Nz -Gplate_IDs.nc -aZ=POL_ID -V
+ gmt grdmask plates.gmt -R-40/40/-40/40 -I2m -Nz -Gplate_IDs.nc=ns -aZ=POL_ID -V
Same exercise, but instead compute running polygon IDs starting at 100, do
::
- gmt grdmask plates.gmt -R-40/40/-40/40 -I2m -Np100 -Gplate_IDs.nc -V
+ gmt grdmask plates.gmt -R-40/40/-40/40 -I2m -Np100 -Gplate_IDs.nc=ns -V
See Also
--------
diff --git a/doc/rst/source/grdmath.rst b/doc/rst/source/grdmath.rst
index 0b7cf01..ec798f3 100644
--- a/doc/rst/source/grdmath.rst
+++ b/doc/rst/source/grdmath.rst
@@ -749,6 +749,12 @@ where we store and recall the normalized radial arguments in radians:
gmt grdmath -R0/10/0/10 -I0.25 5 5 CDIST 2 MUL PI MUL 5 DIV STO at r COS @r SIN MUL = wave.nc
+To creat a dumb file saved as a 32 bits float GeoTiff using GDAL, run
+
+ ::
+
+ gmt grdmath -Rd -I10 X Y MUL = lixo.tiff=gd:GTiff
+
References
----------
diff --git a/doc/rst/source/grdpaste.rst b/doc/rst/source/grdpaste.rst
index 1c597f3..7490cb4 100644
--- a/doc/rst/source/grdpaste.rst
+++ b/doc/rst/source/grdpaste.rst
@@ -25,8 +25,8 @@ Description
**grdpaste** will combine *file_a.nc* and *file_b.nc* into
*outfile.nc* by pasting them together along their common edge. Files
*file_a.nc* and *file_b.nc* must have the same dx, dy and have one
-edge in common. If in doubt, check with **grdinfo** and use **grdcut**
-and/or **grdsample** if necessary to prepare the edge joint. Note: For
+edge in common. If in doubt, check with :doc:`grdinfo` and use :doc:`grdcut`
+and/or :doc:`grdsample` if necessary to prepare the edge joint. Note: For
geographical grids, you may have to use **-f** to handle periodic longitudes
unless the input grids are properly recognized as such via their meta-data.
diff --git a/doc/rst/source/grdtrack.rst b/doc/rst/source/grdtrack.rst
index 00f3db4..572c786 100644
--- a/doc/rst/source/grdtrack.rst
+++ b/doc/rst/source/grdtrack.rst
@@ -149,6 +149,8 @@ Optional Arguments
great circle distances in km (if geographic). If working with geographic
data you can prepend - (Flat Earth) or + (Geodesic) to *inc*, *length*, or *radius*
to change the mode of distance calculation [Great Circle].
+ Note: If **-C** is set and *spacing* is given the that sampling scheme
+ overrules any modifier in **-E**.
.. _-N:
@@ -172,9 +174,9 @@ Optional Arguments
negative values [**a**]. The *modifiers* control the output;
choose one or more among these choices: **+a** : Append stacked
values to all cross-profiles. **+d** : Append stack deviations to
- all cross-profiles. **+d** : Append data residuals (data - stack) to
+ all cross-profiles. **+r** : Append data residuals (data - stack) to
all cross-profiles. **+s**\ [*file*] : Save stacked profile to
- *file* [grdtrack\_stacked_profile.txt]. **+c**\ *fact* : Compute
+ *file* [grdtrack_stacked_profile.txt]. **+c**\ *fact* : Compute
envelope on stacked profile as +/- *fact* \*\ *deviation* [2].
Notes: (1) Deviations depend on *method* and are st.dev (**a**), L1
scale (**m** and **p**), or half-range (upper-lower)/2. (2) The
diff --git a/doc/rst/source/grdtrend.rst b/doc/rst/source/grdtrend.rst
index 502b167..7a861a3 100644
--- a/doc/rst/source/grdtrend.rst
+++ b/doc/rst/source/grdtrend.rst
@@ -96,7 +96,7 @@ allow more accurate solutions. NOTE: The model parameters listed with
**-V** are Legendre polynomial coefficients; they are not numerically
equivalent to the m#s in the equation described above. The description
above is to allow the user to match **-N** with the order of the
-polynomial surface. See **grdmath** if you need to evaluate the trend
+polynomial surface. See :doc:`grdmath` if you need to evaluate the trend
using the reported coefficients.
.. include:: explain_grd_inout_short.rst_
diff --git a/doc/rst/source/grdview.rst b/doc/rst/source/grdview.rst
index f6249d4..751f1ba 100644
--- a/doc/rst/source/grdview.rst
+++ b/doc/rst/source/grdview.rst
@@ -148,7 +148,7 @@ Optional Arguments
.. _-S:
**-S**\ *smooth*
- Smooth the contours before plotting (see **grdcontour**) [Default is no smoothing].
+ Smooth the contours before plotting (see :doc:`grdcontour`) [Default is no smoothing].
.. _-t:
@@ -246,7 +246,7 @@ topo_intens.nc, and looking from the SE, run
gmt grdview topography.nc -JM6i -Gmagnetics.nc -Cmag_intens.cpt \
-Qs -p140/30 -Itopo_intens.nc > draped3D.ps
-Given topo.nc and the Landsat image veggies.ras, first run **grd2rgb**
+Given topo.nc and the Landsat image veggies.ras, first run :doc:`grd2rgb`
to get the red, green, and blue grids, and then drape this image over
the topography and shade the result for good measure. The commands are
@@ -262,8 +262,8 @@ Remarks
For the **-Qs** option: PostScript provides no way of smoothly varying
colors within a polygon, so colors can only vary from polygon to
polygon. To obtain smooth images this way you may resample the grid
-file(s) using **grdsample** or use a finer grid size when running
-gridding programs like **surface** or **nearneighbor**. Unfortunately,
+file(s) using :doc:`grdsample` or use a finer grid size when running
+gridding programs like **surface** or :doc:`nearneighbor`. Unfortunately,
this produces huge PostScript files. The alternative is to use the
**-Qi** option, which computes bilinear or bicubic continuous color
variations within polygons by using scanline conversion to image the polygons.
@@ -275,6 +275,7 @@ See Also
:doc:`gmtcolors`,
:doc:`grdcontour`,
:doc:`grdimage`,
+:doc:`grdsample`,
:doc:`nearneighbor`,
:doc:`psbasemap`,
:doc:`pscontour`, :doc:`pstext`,
diff --git a/doc/rst/source/grdvolume.rst b/doc/rst/source/grdvolume.rst
index ee226d7..0a17a47 100644
--- a/doc/rst/source/grdvolume.rst
+++ b/doc/rst/source/grdvolume.rst
@@ -32,7 +32,7 @@ Description
by the given contour (or zero if not given) and reports the area, volume, and maximum mean height (volume/area).
Alternatively, specify a range of contours to be tried and **grdvolume** will determine the volume and area inside
the contour for all contour values. Using **-T**, the contour that produced the maximum mean height (or maximum
-curvature of heights vs contour value) is reported as well. This feature may be used with **grdfilter**
+curvature of heights vs contour value) is reported as well. This feature may be used with :doc:`grdfilter`
in designing an Optimal Robust Separator [*Wessel*, 1998].
Required Arguments
diff --git a/doc/rst/source/greenspline.rst b/doc/rst/source/greenspline.rst
index 41bd72f..36f72bb 100644
--- a/doc/rst/source/greenspline.rst
+++ b/doc/rst/source/greenspline.rst
@@ -191,7 +191,7 @@ Optional Arguments
.. _-R:
-**-R**\ *xmin*/*xmax*\ [/*ymin*/*ymax*\ [/*zmin*\ *zmax*]]
+**-R**\ *xmin*/*xmax*\ [/*ymin*/*ymax*\ [/*zmin*/*zmax*\ ]]
Specify the domain for an equidistant lattice where output
predictions are required. Requires **-I** and optionally **-r**.
@@ -380,12 +380,12 @@ Considerations
double precision matrix for the Green function coefficients, where *n*
is the number of data constraints. Hence, your computer's memory may
place restrictions on how large data sets you can process with
- `greenspline <greenspline.html>`. Pre-processing your data with `blockmean <blockmean.html>`,
- `blockmedian <blockmedian.html>`, or `blockmode <blockmode.html>` is recommended to avoid aliasing and
+ greenspline. Pre-processing your data with doc:`blockmean`,
+ doc:`blockmedian`, or doc:`blockmode` is recommended to avoid aliasing and
may also control the size of *n*. For information, if *n* = 1024 then
only 8 Mb memory is needed, but for *n* = 10240 we need 800 Mb. Note
- that `greenspline <greenspline.html>` is fully 64-bit compliant if compiled as such.
- For spherical data you may consider decimating using `gmtspatial <gmtspatial.html>`
+ that greenspline is fully 64-bit compliant if compiled as such.
+ For spherical data you may consider decimating using doc:`gmtspatial`
nearest neighbor reduction.
#. The inversion for coefficients can become numerically unstable when
@@ -400,7 +400,7 @@ Considerations
gratefully acknowledge.
#. If you need to fit a certain 1-D spline through your data
- points you may wish to consider `sample1d <sample1d.html>` instead.
+ points you may wish to consider doc:`sample1d>` instead.
It will offer traditional splines with standard boundary conditions
(such as the natural cubic spline, which sets the curvatures at the ends
to zero). In contrast, greenspline's 1-D spline, as is explained in
diff --git a/doc/rst/source/julia_wrapper.rst b/doc/rst/source/julia_wrapper.rst
index 103302c..2bbdbe8 100644
--- a/doc/rst/source/julia_wrapper.rst
+++ b/doc/rst/source/julia_wrapper.rst
@@ -111,7 +111,7 @@ It is crucial that they are used in the **exact** same order as the options in t
To illustrate another aspect on the importance of the order of input data let us see how to plot a sinus curve
made of colored filled circles.
- ::
+.. code-block:: none
x = linspace(-pi, pi)'; # The *xx* var
seno = sin(x); # *yy*
@@ -168,28 +168,26 @@ just call them with
.. _grid-type:
-.. code-block:: c
-
- type GMTJL_GRID # The type holding a local header and data of a GMT grid
- ProjectionRefPROJ4::ASCIIString # Projection string in PROJ4 syntax (Optional)
- ProjectionRefWKT::ASCIIString # Projection string in WKT syntax (Optional)
- range::Array{Float64,1} # 1x6 vector with [x_min x_max y_min y_max z_min z_max]
- inc::Array{Float64,1} # 1x2 vector with [x_inc y_inc]
- n_rows::Int # Number of rows in grid
- n_columns::Int # Number of columns in grid
- n_bands::Int # Not-yet used (always == 1)
- registration::Int # Registration type: 0 -> Grid registration; 1 -> Pixel registration
- NoDataValue::Float64 # The value of nodata
- title::ASCIIString # Title (Optional)
- remark::ASCIIString # Remark (Optional)
- command::ASCIIString # Command used to create the grid (Optional)
- DataType::ASCIIString # 'float' or 'double'
- x::Array{Float64,1} # [1 x n_columns] vector with XX coordinates
- y::Array{Float64,1} # [1 x n_rows] vector with YY coordinates
- z::Array{Float32,2} # [n_rows x n_columns] grid array
- x_units::ASCIIString # Units of XX axis (Optional)
- y_units::ASCIIString # Units of YY axis (Optional)
- z_units::ASCIIString # Units of ZZ axis (Optional)
+.. code-block:: none
+
+ type GMTJL_GRID # The type holding a local header and data of a GMT grid
+ proj4::String # Projection string in PROJ4 syntax (Optional)
+ wkt::String # Projection string in WKT syntax (Optional)
+ range::Array{Float64,1} # 1x6 vector with [x_min x_max y_min y_max z_min z_max]
+ inc::Array{Float64,1} # 1x2 vector with [x_inc y_inc]
+ registration::Int # Registration type: 0 -> Grid registration; 1 -> Pixel registration
+ nodata::Float64 # The value of nodata
+ title::String # Title (Optional)
+ comment::String # Remark (Optional)
+ command::String # Command used to create the grid (Optional)
+ datatype::String # 'float' or 'double'
+ x::Array{Float64,1} # [1 x n_columns] vector with XX coordinates
+ y::Array{Float64,1} # [1 x n_rows] vector with YY coordinates
+ z::Array{Float32,2} # [n_rows x n_columns] grid array
+ x_units::String # Units of XX axis (Optional)
+ y_units::String # Units of YY axis (Optional)
+ z_units::String # Units of ZZ axis (Optional)
+ layout::String # A three character string describing the grid memory layout
end
Definition of the *grid type* that holds a grid and its metadata.
@@ -197,30 +195,28 @@ Definition of the *grid type* that holds a grid and its metadata.
.. _img-type:
-.. code-block:: c
-
- type GMTJL_IMAGE # The type holding a local header and data of a GMT image
- ProjectionRefPROJ4::ASCIIString # Projection string in PROJ4 syntax (Optional)
- ProjectionRefWKT::ASCIIString # Projection string in WKT syntax (Optional)
- range::Array{Float64,1} # 1x6 vector with [x_min x_max y_min y_max z_min z_max]
- inc::Array{Float64,1} # 1x2 vector with [x_inc y_inc]
- n_rows::Int # Number of rows in image
- n_columns::Int # Number of columns in image
- n_bands::Int # Number of bands in image
- registration::Int # Registration type: 0 -> Grid registration; 1 -> Pixel registration
- NoDataValue::Float64 # The value of nodata
- title::ASCIIString # Title (Optional)
- remark::ASCIIString # Remark (Optional)
- command::ASCIIString # Command used to create the image (Optional)
- DataType::ASCIIString # 'uint8' or 'int8' (needs checking)
- x::Array{Float64,1} # [1 x n_columns] vector with XX coordinates
- y::Array{Float64,1} # [1 x n_rows] vector with YY coordinates
- image::Array{UInt8,3} # [n_rows x n_columns x n_bands] image array
- x_units::ASCIIString # Units of XX axis (Optional)
- y_units::ASCIIString # Units of YY axis (Optional)
- z_units::ASCIIString # Units of ZZ axis (Optional) ==> MAKES NO SENSE
- colormap::Array{Clong,1} #
- alpha::Array{UInt8,2} # A [n_rows x n_columns] alpha array
+.. code-block:: none
+
+ type GMTimage # The type holding a local header and data of a GMT image
+ proj4::String # Projection string in PROJ4 syntax (Optional)
+ wkt::String # Projection string in WKT syntax (Optional)
+ range::Array{Float64,1} # 1x6 vector with [x_min x_max y_min y_max z_min z_max]
+ inc::Array{Float64,1} # 1x2 vector with [x_inc y_inc]
+ registration::Int # Registration type: 0 -> Grid registration; 1 -> Pixel registration
+ nodata::Float64 # The value of nodata
+ title::String # Title (Optional)
+ comment::String # Remark (Optional)
+ command::String # Command used to create the image (Optional)
+ datatype::String # 'uint8' or 'int8' (needs checking)
+ x::Array{Float64,1} # [1 x n_columns] vector with XX coordinates
+ y::Array{Float64,1} # [1 x n_rows] vector with YY coordinates
+ image::Array{UInt8,3} # [n_rows x n_columns x n_bands] image array
+ x_units::String # Units of XX axis (Optional)
+ y_units::String # Units of YY axis (Optional)
+ z_units::String # Units of ZZ axis (Optional) ==> MAKES NO SENSE
+ colormap::Array{Clong,1} #
+ alpha::Array{UInt8,2} # A [n_rows x n_columns] alpha array
+ layout::String # A four character string describing the image memory layout
end
Definition of the *image type* that holds an image and its metadata.
diff --git a/doc/rst/source/kml2gmt.rst b/doc/rst/source/kml2gmt.rst
index 05a9b42..46220f2 100644
--- a/doc/rst/source/kml2gmt.rst
+++ b/doc/rst/source/kml2gmt.rst
@@ -85,6 +85,7 @@ To extract the lon,lat values from the KML file google.kml, try
To separate the point and polygon geometries from the KML file google.kml, try
gmt kml2gmt google.kml -Fp -V > polygons.txt
+
gmt kml2gmt google.kml -Fs -V > points.txt
See Also
diff --git a/doc/rst/source/makecpt.rst b/doc/rst/source/makecpt.rst
index fc78c05..b95c437 100644
--- a/doc/rst/source/makecpt.rst
+++ b/doc/rst/source/makecpt.rst
@@ -19,7 +19,7 @@ Synopsis
[ |-E|\ [*nlevels*] ]
[ |-F|\ [**R**\ \|\ **r**\ \|\ **h**\ \|\ **c** ][**+c**\ ]]
[ |-G|\ *zlo*\ /\ *zhi* ]
-[ |-I| ] [ |-M| ]
+[ |-I|\ [**c**][**z**] ] [ |-M| ]
[ |-N| ] [ |-Q|\ [**i**\ \|\ **o**] ]
[ |-T|\ *z_min*/*z_max*\ [/*z_inc*\ [+]] \| **-T**\ *ztable* \| **-T**\ *z1,z2,...,zn* ]
[ |-V|\ [*level*\ ] ] [ |-W| ] [ |-Z| ]
@@ -117,15 +117,19 @@ Optional Arguments
Truncate the incoming CPT so that the lowest and highest z-levels
are to *zlo* and *zhi*. If one of these equal NaN then
we leave that end of the CPT alone. The truncation takes place
- before any resampling.
+ before any resampling. See also :ref:`manipulating_CPTs`
.. _-I:
-**-I**
- Reverses the sense of color progression in the master CPT. Also
+**-I**\ [**c**][**z**]
+ Append **c** [Default] to reverse the sense of color progression in the master CPT. Also
exchanges the foreground and background colors, including those
specified by the parameters :ref:`COLOR_BACKGROUND <COLOR_BACKGROUND>` and
:ref:`COLOR_FOREGROUND <COLOR_FOREGROUND>`.
+ Append **z** to reverse the sign of z-values in the color table. Note that
+ this change of *z*-direction happens before **-G** and **-T** values are used
+ so the latter much be compatible with the changed *z*-range.
+ See also :ref:`manipulating_CPTs`
.. _-M:
@@ -158,7 +162,7 @@ Optional Arguments
discretely at intervals *z_inc* between *z_min* and *z_max*;
append a trailing **+** to interpret *z_inc* as the number of desired intervals instead.
Alternatively, give the name of a ASCII file that has one z-value
- per record, or provide a list of comma-separated z-values instead
+ per record, or provide a list of comma-separated z-values instead.
If **-T** is not given, the existing range in the master
CPT will be used intact.
@@ -242,6 +246,16 @@ the data table depths.txt (with lon, lat, depths), run
gmt makecpt -Cgebco depths.txt -i2 -Z -E24 > my_depths.cpt
+To use the gebco color table but reverse the z-values so it can be used for
+positive depth values, try
+
+ ::
+
+ gmt makecpt -Cgebco -Iz > my_positive_gebco.cpt
+
+To create a 24-level rainbow color table suitable for plotting the depths in
+the data table depths.txt (with lon, lat, depths), run
+
To make a custom discrete color table for depth of seismicity, using red color for
hypocenters between 0 and 100 km, green for 100-300 km, and blue for deep (300-1000 km)
earthquakes, use
diff --git a/doc/rst/source/man_pages.rst b/doc/rst/source/man_pages.rst
index 9db5a47..a6b2ed5 100644
--- a/doc/rst/source/man_pages.rst
+++ b/doc/rst/source/man_pages.rst
@@ -123,6 +123,7 @@ Supplementary modules
supplements/misc/dimfilter
supplements/potential/gmtflexure
supplements/potential/gmtgravmag3d
+ supplements/potential/gpsgridder
supplements/potential/gravfft
supplements/potential/grdflexure
supplements/potential/grdgravmag3d
diff --git a/doc/rst/source/mapproject.rst b/doc/rst/source/mapproject.rst
index 75bf83a..a418869 100644
--- a/doc/rst/source/mapproject.rst
+++ b/doc/rst/source/mapproject.rst
@@ -187,7 +187,7 @@ Optional Arguments
has height above ellipsoid [Default assumes height = 0, i.e., on the
ellipsoid]. Specify datums using the datum ID (see **-Qd**) or give
*ellipsoid*:*dx*,\ *dy*,\ *dz* where *ellipsoid* may be an ellipsoid
- ID (see **-Qe**) or given as *a*\ [,*inv_f*], where *a* is the
+ ID (see **-Qe**) or given as *a*\ [,\ *inv_f*], where *a* is the
semi-major axis and *inv_f* is the inverse flattening (0 if
omitted). If *datum* is - or not given we assume WGS-84. **-T** may
be used in conjunction with **-R** **-J** to change the datum before
diff --git a/doc/rst/source/matlab_wrapper.rst b/doc/rst/source/matlab_wrapper.rst
index c33d35a..4fa64e9 100644
--- a/doc/rst/source/matlab_wrapper.rst
+++ b/doc/rst/source/matlab_wrapper.rst
@@ -80,7 +80,7 @@ all **GMT** options are put in a single text string that is passed, plus the dat
to the ``gmt()`` command. For example to reproduce the CookBook example of an Hemisphere map using a
Azimuthal projection
- ::
+.. code-block:: none
gmt('pscoast -Rg -JA280/30/3.5i -Bg -Dc -A1000 -Gnavy -P > GMT_lambert_az_hemi.ps')
@@ -88,7 +88,7 @@ but that is not particularly interesting as after all we could do the exact same
command line. Things start to get interesting when we can send data *in* and *out* from MATLAB to
**GMT**. So, consider the following example
- ::
+.. code-block:: none
t = rand(100,3) * 150;
G = gmt('surface -R0/150/0/150 -I1', t);
@@ -101,14 +101,14 @@ got the *G* variable that is a structure holding the grid and it's metadata. See
Imagining that we want to plot that random data art, we can do it with a call to *grdimage*\ , like
- ::
+.. code-block:: none
gmt('grdimage -JX8c -Ba -P -Cblue,red > crap_img.ps', G)
Note that we now sent the *G grid* as argument instead of the **-G**\ *gridname* that we would have
used in the command line. But for readability we could well had left the **-G** option in command string. E.g:
- ::
+.. code-block:: none
gmt('grdimage -JX8c -Ba -P -Cblue,red -G > crap_img.ps', G)
@@ -116,7 +116,7 @@ While for this particular case it makes no difference to use or not the **-G**,
one input, the same does not hold true when we have more than one. For example, we can run the same example
but compute the CPT separately.
- ::
+.. code-block:: none
cpt = gmt('grd2cpt -Cblue,red', G);
gmt('grdimage -JX8c -Ba -P -C -G > crap_img.ps', G, cpt)
@@ -130,7 +130,7 @@ return more than one item: List the required output object first followed by opt
To illustrate another aspect on the importance of the order of input data let us see how to plot a sine curve
made of colored filled circles.
- ::
+.. code-block:: none
x = linspace(-pi, pi)'; % The *xx* var
seno = sin(x); % *yy*
@@ -143,21 +143,21 @@ associated with an option letter **always comes after the required input**.
To plot text strings we send in the input data wrapped in a cell array. Example:
- ::
+.. code-block:: none
lines = {'5 6 Some label', '6 7 Another label'};
gmt('pstext -R0/10/0/10 -JM6i -Bafg -F+f18p -P > text.ps', lines)
and we get back text info in cell arrays as well. Using the *G* grid computed above we can run *gmtinfo* on it
- ::
+.. code-block:: none
info = gmt('info', G)
At the end of an **GMT** session work we call the internal functions that will do the house keeping of
freeing no longer needed memory. We do that with this command:
- ::
+.. code-block:: none
gmt('destroy')
@@ -173,69 +173,68 @@ documentation, has many (not so trivial) examples on usage of the MEX GMT API.
.. _grid-struct:
-.. code-block:: c
-
- projection_ref_proj4 % Projection string in PROJ4 syntax (Optional)
- projection_ref_wkt % Projection string in WKT syntax (Optional)
- range % 1x6 vector with [x_min x_max y_min y_max z_min z_max]
- inc % 1x2 vector with [x_inc y_inc]
- n_rows % Number of rows in grid
- n_columns % Number of columns in grid
- n_bands % Not-yet used (always == 1)
- registration % Registration type: 0 -> Grid registration; 1 -> Pixel registration
- nodata % The value of nodata
- title % Title (Optional)
- remark % Remark (Optional)
- command % Command used to create the grid (Optional)
- datatype % 'float' or 'double'
- x % [1 x n_columns] vector with XX coordinates
- y % [1 x n_rows] vector with YY coordinates
- z % [n_rows x n_columns] grid array
- x_unit % Units of XX axis (Optional)
- y_unit % Units of YY axis (Optional)
- z_unit % Units of ZZ axis (Optional)
+.. code-block:: none
+
+ proj4 % Projection string in PROJ4 syntax (Optional)
+ wkt % Projection string in WKT syntax (Optional)
+ range % 1x6 vector with [x_min x_max y_min y_max z_min z_max]
+ inc % 1x2 vector with [x_inc y_inc]
+ registration % Registration type: 0 -> Grid registration; 1 -> Pixel registration
+ nodata % The value of nodata
+ title % Title (Optional)
+ comment % Remark (Optional)
+ command % Command used to create the grid (Optional)
+ datatype % 'float' or 'double'
+ x % [1 x n_columns] vector with XX coordinates
+ y % [1 x n_rows] vector with YY coordinates
+ z % [n_rows x n_columns] grid array
+ x_unit % Units of XX axis (Optional)
+ y_unit % Units of YY axis (Optional)
+ z_unit % Units of ZZ axis (Optional)
+ layout % A three character string describing the image memory layout
Definition of the *grid structure* that holds a grid and its metadata.
.. _img-struct:
-.. code-block:: c
-
- projection_ref_proj4 % Projection string in PROJ4 syntax (Optional)
- projection_ref_wkt % Projection string in WKT syntax (Optional)
- range % 1x6 vector with [x_min x_max y_min y_max z_min z_max]
- inc % 1x2 vector with [x_inc y_inc]
- n_rows % Number of rows in image
- n_columns % Number of columns in image
- n_bands % Number of bands in image
- registration % Registration type: 0 -> Grid registration; 1 -> Pixel registration [Default]
- nodata % The value of nodata
- title % Title (Optional)
- remark % Remark (Optional)
- command % Command used to create the image (Optional)
- datatype % 'uint8' or 'int8' (needs checking)
- x % [1 x n_columns] vector with XX coordinates
- y % [1 x n_rows] vector with YY coordinates
- image % [n_rows x n_columns] image array
- x_unit % Units of XX axis (Optional)
- y_unit % Units of YY axis (Optional)
- z_unit % Units of ZZ axis (Optional)
- colormap % A color palette structure
- alpha % A [n_rows x n_columns] alpha array
+.. code-block:: none
+
+ proj4 % Projection string in PROJ4 syntax (Optional)
+ wkt % Projection string in WKT syntax (Optional)
+ range % 1x6 vector with [x_min x_max y_min y_max z_min z_max]
+ inc % 1x2 vector with [x_inc y_inc]
+ registration % Registration type: 0 -> Grid registration; 1 -> Pixel registration [Default]
+ nodata % The value of nodata
+ title % Title (Optional)
+ comment % Remark (Optional)
+ command % Command used to create the image (Optional)
+ datatype % 'uint8' or 'int8' (needs checking)
+ x % [1 x n_columns] vector with XX coordinates
+ y % [1 x n_rows] vector with YY coordinates
+ image % [n_rows x n_columns] image array
+ x_unit % Units of XX axis (Optional)
+ y_unit % Units of YY axis (Optional)
+ z_unit % Units of ZZ axis (Optional)
+ colormap % A color palette structure
+ alpha % A [n_rows x n_columns] alpha array
+ layout % A four character string describing the image memory layout
Definition of the *image structure* that holds a image and its metadata.
.. _cpt-struct:
-.. code-block:: c
+.. code-block:: none
- colormap % A [ncolors x 3] matrix with colorvalues in [0-1] range
- alpha % A [ncolors x 1] vector with transparency (alpha) values in [0-1] range (optional)
- range % A [ncolors x 2] matrix with z_low z_high for each 'color' interval
- bnf % A [3 x 3] matrix with color values in [0-1] range for background, foreground, and NaN-nodes
- minmax % A 2 elements vector with [z_min z_max]
- depth % Depth of the CPT (1, 8, 24)
- hinge % The z-value for split colormaps [NaN means no hinge]
+ colormap % A [ncolors x 3] matrix with colorvalues in [0-1] range
+ alpha % A [ncolors x 1] vector with transparency (alpha) values in [0-1] range (optional)
+ range % A [ncolors x 2] matrix with z_low z_high for each 'color' interval
+ minmax % A 2 elements vector with [z_min z_max]
+ bnf % A [3 x 3] matrix with color values in [0-1] range for background, foreground, and NaN-nodes
+ depth % Depth of the CPT (1, 8, 24)
+ hinge % The z-value for split colormaps [NaN means no hinge]
+ cpt %
+ model % Either RGB oy CMYK
+ comment % Remark (Optional)
Definition of the *CPT structure* that holds the color palette.
@@ -243,8 +242,9 @@ Definition of the *CPT structure* that holds the color palette.
.. code-block:: c
- postscript % A string with all the PostScript code as text
- length % Number of bytes in the string
- mode % 1 means has header only, 2 means has trailer only, 3 means complete
+ postscript % A string with all the PostScript code as text
+ length % Number of bytes in the string
+ mode % 1 means has header only, 2 means has trailer only, 3 means complete
+ comment % Remark (Optional)
Definition of the *PS structure* that holds the *PostScript* plot.
diff --git a/doc/rst/source/postscriptlight.rst b/doc/rst/source/postscriptlight.rst
index 0a6736b..41c0fdf 100644
--- a/doc/rst/source/postscriptlight.rst
+++ b/doc/rst/source/postscriptlight.rst
@@ -100,9 +100,13 @@ apply. Nine different values are possible, as shown schematically in
this diagram:
9------------10----------- 11
+
\| \|
+
5 6 7
+
\| \|
+
1------------ 2------------ 3
The box represents the text or image. E.g., to plot a text string with
@@ -796,7 +800,7 @@ and others and issue calculations with **PSL_setcommand**.
*\*xpath*, **double** *\*ypath*, **long** *\*np*, **long** *nseg*,
**void** *\*arg1*\, **void** *\*arg2*\, **char** *\*text*\ [],
**double** *angle*\ [], **long** *n_per_seg*\ [], **double** *fontsize,
-***long** *justify*, **double** *offset*\ [], **long** *mode*)
+**long** *justify*, **double** *offset*\ [], **long** *mode*)
Please text along one or more path segments. The function does
different things depending on the bit flags in *mode*. A key
diff --git a/doc/rst/source/project.rst b/doc/rst/source/project.rst
index 208150e..6eee191 100644
--- a/doc/rst/source/project.rst
+++ b/doc/rst/source/project.rst
@@ -15,7 +15,7 @@ Synopsis
**project** [ *table* ] |-C|\ *cx*/*cy* [ |-A|\ *azimuth* ]
[ |-E|\ *bx*/*by* ] [ |-F|\ *flags* ]
-[ |-G|\ *dist*\ [/*colat*][**+**] ]
+[ |-G|\ *dist*\ [/*colat*][**+**] ] ]
[ |-L|\ [**w**\ ][\ *l\_min*/*l\_max*] ]
[ |-N| ] [ |-Q| ] [ |-S| ]
[ |-T|\ *px*/*py* ]
@@ -140,7 +140,7 @@ Optional Arguments
.. _-G:
-**-G**\ *dist*\ [/*colat*]
+**-G**\ *dist*\ [/*colat*][**+**\ ]
Generate mode. No input is read. Create (*r*, *s*, *p*) output
points every *dist* units of *p*. See **-Q** option. Alternatively,
append **/**\ *colat* for a small circle instead [Default is a
@@ -231,7 +231,14 @@ To generate points every 10km along a great circle from 10N,50W to 30N,10W:
gmt project -C-50/10 -E-10/30 -G10 -Q > great_circle_points.xyp
-(Note that great_circle_points.xyp could now be used as input for **grdtrack**, etc. ).
+(Note that great_circle_points.xyp could now be used as input for :doc:`grdtrack`, etc. ).
+
+To generate points every 1 degree along a great circle from 30N,10W with
+azimuth 30 and covering a full 360, try:
+
+ ::
+
+ gmt project -C10W/30N -A30 -G1 --L-180/180 > great_circle.txt
To generate points every 10km along a small circle of colatitude 60 from 10N,50W to 30N,10W:
@@ -304,5 +311,6 @@ See Also
:doc:`fitcircle`,
:doc:`gmt`,
:doc:`gmtvector`,
+:doc:`grdtrack`,
:doc:`mapproject`,
:doc:`grdproject`
diff --git a/doc/rst/source/psbasemap.rst b/doc/rst/source/psbasemap.rst
index 2ff312d..6ffa5f2 100644
--- a/doc/rst/source/psbasemap.rst
+++ b/doc/rst/source/psbasemap.rst
@@ -21,7 +21,7 @@ Synopsis
[ |-F|\ *box* ]
[ |-K| ]
[ |-J|\ **z**\ \|\ **Z**\ *parameters* ]
-[ |-L|\ *ruler* ]
+[ |-L|\ *scalebar* ]
[ |-O| ]
[ |-P| ]
[ |SYN_OPT-U| ]
@@ -527,7 +527,7 @@ thus the spherical form is used. To get a 18-cm-wide world map centered on the D
gmt psbasemap -Rg -JV180/18c -Bafg -B+t"Van der Grinten" > grinten.ps
-CUSTOM lABELS OR INTERVALS
+Custom Labels or Intervals
--------------------------
The **-B** option sets up a regular annotation interval and the
diff --git a/doc/rst/source/pscoast.rst b/doc/rst/source/pscoast.rst
index fa3955a..8fa9e79 100644
--- a/doc/rst/source/pscoast.rst
+++ b/doc/rst/source/pscoast.rst
@@ -24,7 +24,7 @@ Synopsis
[ |-G|\ *fill*\ \|\ **c** ]
[ |-I|\ *river*\ [/\ *pen*] ]
[ |-J|\ **z**\ \|\ **Z**\ *parameters* ] [ |-K| ]
-[ |-L|\ *ruler* ]
+[ |-L|\ *scalebar* ]
[ |-M| ]
[ |-N|\ *border*\ [/*pen*] ]
[ |-O| ]
diff --git a/doc/rst/source/pscontour.rst b/doc/rst/source/pscontour.rst
index 1922654..8f7edbd 100644
--- a/doc/rst/source/pscontour.rst
+++ b/doc/rst/source/pscontour.rst
@@ -134,7 +134,7 @@ Optional Arguments
**-E**\ *indexfile*
Give name of file with network information. Each record must contain
triplets of node numbers for a triangle [Default computes these
- using Delaunay triangulation (see **triangulate**)].
+ using Delaunay triangulation (see :doc:`triangulate`)].
.. _-G:
diff --git a/doc/rst/source/psconvert.rst b/doc/rst/source/psconvert.rst
index c6fbac7..55d8ecc 100644
--- a/doc/rst/source/psconvert.rst
+++ b/doc/rst/source/psconvert.rst
@@ -299,7 +299,7 @@ BoundingBox when the **-A** option is used. Note the original and
required BoundingBox is limited to integer points, hence Adobe added the
optional HiResBoundingBox to add more precision in sizing. The **-A**
option calculates both and writes both to the EPS file and is subsequently
-used in any rasterization, if requested. When the **-TE* option is used, a
+used in any rasterization, if requested. When the **-TE** option is used, a
new setpagedevice command is added that will indicate the actual pagesize for
the plot, similar to the BoundingBox. Note that when the command setpagedevice
exists in a PostScript file that is included in another document, this can wreak
diff --git a/doc/rst/source/pshistogram.rst b/doc/rst/source/pshistogram.rst
index 09ee009..91b1d49 100644
--- a/doc/rst/source/pshistogram.rst
+++ b/doc/rst/source/pshistogram.rst
@@ -237,7 +237,7 @@ bars, run:
::
gmt pshistogram errors.xy -W1 -R-10/10/0/0 -Jxc/0.01c \
- -Bx2+lError -By100+lCounts: -Gblack -i1 -V > plot.ps
+ -Bx2+lError -By100+lCounts -Gblack -i1 -V > plot.ps
Since no y-range was specified, pshistogram will calculate ymax in even
increments of 100.
diff --git a/doc/rst/source/psimage.rst b/doc/rst/source/psimage.rst
index 946c5dc..ddd2b92 100644
--- a/doc/rst/source/psimage.rst
+++ b/doc/rst/source/psimage.rst
@@ -170,9 +170,12 @@ plotting other images or PostScript files.
**-Gf**
Sets foreground color (replace black pixel) of 1-bit images. Use -
for transparency (and set **-Gb** to the desired color).
- **-I**
- Invert 1-bit image before plotting. This is what is done when you
- use **-GP** in other GMT programs.
+
+.. _-I:
+
+**-I**
+ Invert 1-bit image before plotting. This is what is done when you
+ use **-GP** to invert patterns in other GMT plotting programs.
These options are for 8-, 24-, and 32-bit raster images only. They have
no effect when plotting 1-bit images or PostScript files.
diff --git a/doc/rst/source/pslegend.rst b/doc/rst/source/pslegend.rst
index 0d7e7c5..13c1fd9 100644
--- a/doc/rst/source/pslegend.rst
+++ b/doc/rst/source/pslegend.rst
@@ -154,10 +154,11 @@ Pslegend Codes
which can be used for the color look-up via the given CPT *cptname*.
You may switch to other *cptname* by repeating this command.
**B** *cptname offset height* [ *optional arguments* ]
- The **B** record will plot a horizontal color bar, **psscale**-style
+ The **B** record will plot a horizontal color bar, :doc:`psscale`-style
in the middle, starting at *offset* from the left edge, and of the
- given *height*. You may add any additional **psscale** options as well.
- Any of the modifiers [+e[b|f][<length>]][+h][+ma|c|l|u][+n[<txt>]] may be
+ given *height*. You may add any additional :doc:`psscale` options as well.
+ Any of the modifiers
+ [**+e**\ [**b**\ \|\ **f**][*length*]][**+h**][**+m**\ [**a**\ \|\ **c**\ \|\ **l**\ \|\ **u**]][**+n**\ [*txt*]] may be
appended to the *height* argument, while other module options
**-B** **-I** **-L** **-M** **-N** **-S** **-Z** and **-p** may be appended as
*optional arguments* at the end of the record.
@@ -165,7 +166,7 @@ Pslegend Codes
**C** *textcolor*
The **C** record specifies the color with which the remaining text
is to be printed. *textcolor* can be in the form *r/g/b*, *c/m/y/k*,
- a named color, or an indirect color via z=*value* (requires the **A** command).
+ a named color, or an indirect color via z=\ *value\* (requires a prior **A** code as well).
Use **-** to reset to default color.
**D** [*offset*] *pen* [**-**\ \|\ **+**\ \|\ **=**]
The **D** record results in a horizontal line with specified *pen*
@@ -180,7 +181,7 @@ Pslegend Codes
[Default places a quarter line-spacing both before and after the line].
**F** *fill1 fill2 ... filln*
Specify fill (color of pattern) for cells. Alternatively, you can
- specify an indirect color via z=*value* (requires the **A** command).
+ specify an indirect color via z=\ *value* (requires a prior **A** code).
If only *fill1* is given
then it is used to fill the entire row, otherwise give one fill value
for each active column (see **N**). If any fill is - then no fill
@@ -244,13 +245,13 @@ Pslegend Codes
of the column, with the optional explanatory *text* starting *dx2*
from the margin, printed with **FONT\_ANNOT\_PRIMARY**. Use **-** if
no *fill* or outline (*pen*) is required. Alternatively, the *fill*
- may be specified indirectly via z=*value* and the color is assigned
- vi the CPT look-up (requires the **A** command).
+ may be specified indirectly via z=\ *value* and the color is assigned
+ vi the CPT look-up (requires a prior **A** code).
When plotting just a
symbol, without text, *dx2* and *text* can be omitted. The *dx1* value
can also be given as a justification code L, C, R which justifies the
symbol with respect to the current column. If no arguments are given
- to **S** then we simply skip to the next column. Three **psxy**
+ to **S** then we simply skip to the next column. Three :doc:`psxy`
symbols may take special modifiers: front (**f**), quoted line (**q**) and vector (**v**).
You can append modifiers to the symbol and affect how the fronts, quoted lines and
vectors are presented (see :doc:`psxy` man page for modifiers).
@@ -359,7 +360,7 @@ Windows Remarks
Note that under Windows, the percent sign (%) is a variable indicator
(like $ under Unix). To indicate a plain percentage sign in a batch
script you need to repeat it (%%); hence the font switching mechanism
-(@%*font*\ % and @%%) may require twice the number of percent signs.
+(@%\ *font*\ % and @%%) may require twice the number of percent signs.
This only applies to text inside a script or that otherwise is processed
by DOS. Data files that are opened and read by **pslegend** do not need
such duplication.
diff --git a/doc/rst/source/psrose.rst b/doc/rst/source/psrose.rst
index fef3e64..8ea5169 100644
--- a/doc/rst/source/psrose.rst
+++ b/doc/rst/source/psrose.rst
@@ -17,12 +17,13 @@ Synopsis
[ |SYN_OPT-B| ]
[ |-C|\ **m**\ \|\ *mode_file* ]
[ |-D| ]
+[ |-F| ]
[ |-G|\ *fill* ] [ |-I| ] [ |-K| ]
[ |-L|\ [*wlabel*/*elabel*/*slabel*/*nlabel*] ]
[ |-M|\ *parameters* ]
[ |-O| ] [ |-P| ]
[ |-R|\ *r0*/*r1*/*az_0*/*az_1* ]
-[ |-S|\ [**n**]*radial\_scale* ]
+[ |-S|\ [**n**]\ *radial\_scale* ]
[ |-T| ]
[ |SYN_OPT-U| ]
[ |SYN_OPT-V| ]
@@ -45,7 +46,8 @@ Description
-----------
**psrose** reads (length,azimuth) pairs from *file* [or standard input]
-and generates PostScript code that will plot a windrose diagram.
+and generates PostScript code that will plot a windrose diagram. Add **-i**\ 0
+if your file only has azimuth values.
Optionally (with **-A**), polar histograms may be drawn (sector diagram
or rose diagram). Options include full circle and half circle plots. The
PostScript code is written to standard output. The outline of the
@@ -78,6 +80,7 @@ Optional Arguments
|
| Remember that "x" here is
| radial distance and "y" is azimuth. The ylabel may be used to plot a figure caption.
+| The scale bar length is determined by the radial gridline spacing.
.. _-C:
@@ -105,8 +108,10 @@ Optional Arguments
.. _-I:
**-I**
- Inquire. Computes statistics needed to specify useful **-R**. No
- plot is generated.
+ Inquire. Computes statistics needed to specify a useful **-R**. No
+ plot is generated. The following statistics are written to stdout:
+ *n*, *mean az*, *mean r*, *mean resultant length*, *max bin sum*,
+ *scaled mean*, and *linear length sum*.
.. _-K:
@@ -147,14 +152,18 @@ Optional Arguments
.. _-S:
-**-S**\ [**n**]*radial_scale*
- Specifies radius of circle. Use **-Sn** to normalize input radii to go from 0 to 1.
+**-S**\ [**n**]\ *plot_radius*
+ Specifies radius of plotted circle (append a unit from **c**\ \|\ **i**\ \|\ **p**).
+ Use **-Sn** to normalize input radii (or bin counts if **-A** is used) by the largest
+ value so all adii (or bin counts) range from 0 to 1.
.. _-T:
**-T**
- Specifies that the input data is orientation data (has a 180 degree
- ambiguity) instead of true 0-360 degree directions [Default].
+ Specifies that the input data are orientation data (i.e., have a 180 degree
+ ambiguity) instead of true 0-360 degree directions [Default]. We
+ compensate by counting each record twice: First as *azimuth* and second
+ as *azimuth + 180*. Ignored if range is given as -90/90 or 0/180.
.. _-U:
@@ -178,7 +187,7 @@ Optional Arguments
.. _-Z:
-**-Z**\ *scale*
+**-Z**\ **u**\ \|\ *scale*
Multiply the data radii by *scale*. E.g., use **-Z**\ 0.001 to
convert your data from m to km. To exclude the radii from
consideration, set them all to unity with **-Zu** [Default is no
diff --git a/doc/rst/source/pssolar.rst b/doc/rst/source/pssolar.rst
index b13d2a1..fe288b8 100644
--- a/doc/rst/source/pssolar.rst
+++ b/doc/rst/source/pssolar.rst
@@ -17,14 +17,14 @@ Synopsis
[ |SYN_OPT-B| ]
[ |-C| ]
[ |-G|\ *fill*\ \|\ **c** ]
-[ |-I|\ [*lon/lat*][**+d**\ *<date>*][**+z**\ *<TZ>*] ]
+[ |-I|\ [*lon/lat*][**+d**\ *date*][**+z**\ *TZ*] ]
[ |-J|\ *parameters* ]
[ |-K| ]
[ |-M| ]
[ |-N| ]
[ |-O| ] [|-P| ] [ |-Q| ]
[ |SYN_OPT-R| ]
-[ |-T|\ *<dcna>*\ [**+d**\ *<date>*][**+z**\ *<TZ>*]]
+[ |-T|\ **dcna**\ [**+d**\ *date*][**+z**\ *TZ*]]
[ |SYN_OPT-U| ]
[ |SYN_OPT-V| ]
[ |-W|\ *pen* ]
@@ -61,7 +61,7 @@ Optional Arguments
**-C**
Formats the report selected by **-I** using tab-separated fields on a single line. The
- output is Sun *Lon Lat Azimuth Elevation* in degrees, *Sunrise Sunset Noon* in dedimal days,
+ output is Sun *Lon Lat Azimuth Elevation* in degrees, *Sunrise Sunset Noon* in decimal days,
*day length* in minutes, *SolarElevationCorrected* corrected for the effect of refraction index
and *Equation of time* in minutes. Note that if no position is provided in **-I**\ *lon/lat* the
data after *Elevation* refers to the point (0,0).
@@ -74,11 +74,11 @@ Optional Arguments
.. _-I:
-**-I**\ [*lon/lat*][**+d**\ *<date>*][**+z**\ *<TZ>*]
+**-I**\ [*lon/lat*][**+d**\ *date*][**+z**\ *TZ*]
Print current sun position as well as Azimuth and Elevation. Append lon/lat to print also the times of
Sunrise, Sunset, Noon and length of the day.
- Add +d<date> in ISO format, e.g, **+d**\ *2000-04-25*, to compute sun parameters
- for this date. If necessary, append time zone via **+z**\ *<TZ>*.
+ Add **+d**\ *date* in ISO format, e.g, **+d**\ *2000-04-25*, to compute sun parameters
+ for this date. If necessary, append time zone via **+z**\ *TZ*.
.. _-J:
@@ -115,11 +115,11 @@ Optional Arguments
.. _-T:
-**-T**\ *<dcna>*\ [**+d**\ *<date>*][**+z**\ *<TZ>*]
- Plot (or dump; see -M) one or more terminators defined via the *dcna* flags. Where:
+**-Tdcna**\ [**+d**\ *date*][**+z**\ *TZ*]
+ Plot (or dump; see **-M**\ ) one or more terminators defined via the **dcna** flags. Where:
**d** means day/night terminator; **c** means civil twilight; **n** means nautical twilight;
- **a** means astronomical twilight. Add +d<date> in ISO format, e.g, **+d**\ *2000-04-25T12:15:00*
- to know where the day-night was at that date. If necessary, append time zone via **+z**\ *<TZ>*.
+ **a** means astronomical twilight. Add **+d**\ *date* in ISO format, e.g, **+d**\ *2000-04-25T12:15:00*
+ to know where the day-night was at that date. If necessary, append time zone via **+z**\ *TZ*.
.. _-U:
@@ -132,20 +132,9 @@ Optional Arguments
.. _-W:
-**-W**\ [**-**\ \|\ **+**][*pen*][*attr*] :ref:`(more ...) <-Wpen_attrib>`
+**-W**\ [**-**\ \|\ **+**][*pen*] :ref:`(more ...) <-Wpen_attrib>`
Set pen attributes for lines or the outline of symbols [Defaults:
- width = default, color = black, style = solid]. A leading **+** will
- use the lookup color (via **-C**) for both symbol fill and outline
- pen color, while a leading **-** will set outline pen color and turn
- off symbol fill. You can also append one or more line attribute modifiers:
- **+o**\ *offset*\ **u** will start and stop drawing the line the given distance offsets
- from the end point. Append unit **u** from **c**\ \|\ **i**\ \|\ **p** to
- indicate plot distance on the map or append map distance units instead (see below)
- [Cartesian distances];
- **+s** will draw the line using a *PostScript* Bezier spline [linear spline];
- **+v**\ *vspecs* will place a vector head at the ends of the lines. You can
- use **+vb** and **+ve** to specify separate vector specs at each end [shared specs].
- See the :ref:`Vec_attributes` for more information.
+ width = default, color = black, style = solid].
.. _-X:
diff --git a/doc/rst/source/pstext.rst b/doc/rst/source/pstext.rst
index fda52f5..3942ba1 100644
--- a/doc/rst/source/pstext.rst
+++ b/doc/rst/source/pstext.rst
@@ -18,7 +18,7 @@ Synopsis
[ |-A| ]
|SYN_OPT-B|
[ |-D|\ [**j**\ \|\ **J**]\ *dx*\ [/*dy*][\ **v**\ [*pen*]] ]
-[ |-F|\ [**+a**\ [*angle*]][\ **+c**\ [*justify*]][\ **+f**\ [*font*]][\ **+j**\ [*justify*]][\ **+h**\ \|\ **+l** \|\ **+l** \|\ **+r**\ [*first*] \|\ **+t**\ *text*\ \|\ **z**\ [*format*]] ]
+[ |-F|\ [**+a**\ [*angle*]][\ **+c**\ [*justify*]][\ **+f**\ [*font*]][\ **+j**\ [*justify*]][\ **+h**\ \|\ **+l**\|\ **+r**\ [*first*] \|\ **+t**\ *text*\ \|\ **+z**\ [*format*]] ]
[ |-G|\ *color* ] [ |-J|\ *parameters* ]
[ |-K| ]
[ |-L| ] [ |-M| ] [ |-N| ] [ |-O| ] [ |-P| ]
@@ -133,7 +133,7 @@ Optional Arguments
.. _-F:
-|-F|\ [**+a**\ \|\ **A**\ [*angle*]][\ **+c**\ [*justify*]][\ **+f**\ [*font*]][\ **+j**\ [*justify*]][\ **+h**\ \|\ **+l** \|\ **+l** \|\ **+r**\ [*first*] \|\ **+t**\ *text*\ \|\ **z**\ [*format*]]
+**-F**\ [**+a**\ [*angle*]][\ **+c**\ [*justify*]][\ **+f**\ [*font*]][\ **+j**\ [*justify*]][\ **+h**\ \|\ **+l**\|\ **+r**\ [*first*] \|\ **+t**\ *text*\ \|\ **+z**\ [*format*]]
By default, text will be placed horizontally, using the primary
annotation font attributes (:ref:`FONT_ANNOT_PRIMARY <FONT_ANNOT_PRIMARY>`), and centered
on the data point. Use this option to override these defaults by
@@ -157,7 +157,7 @@ Optional Arguments
comes from the data record. Instead, use **+h** or **+l** to select the
text as the most recent segment header or segment label, respectively in
a multisegment input file, **+r** to use the record number (counting up from *first*),
- **+t**\ *text* to set a fixed text string, or **z**\ to format incoming *z* values
+ **+t**\ *text* to set a fixed text string, or **+z** to format incoming *z* values
to a string using the supplied *format* [use FORMAT_FLOAT_MAP].
.. _-G:
@@ -311,7 +311,7 @@ Windows Remarks
Note that under Windows, the percent sign (%) is a variable indicator
(like $ under Unix). To indicate a plain percentage sign in a batch
script you need to repeat it (%%); hence the font switching mechanism
-(@%*font*\ % and @%%) may require twice the number of percent signs.
+(@%\ *font*\ % and @%%) may require twice the number of percent signs.
This only applies to text inside a script or that otherwise is processed
by DOS. Data files that are opened and read by **pstext** do not need
such duplication.
diff --git a/doc/rst/source/pswiggle.rst b/doc/rst/source/pswiggle.rst
index 6631bf4..d37e16a 100644
--- a/doc/rst/source/pswiggle.rst
+++ b/doc/rst/source/pswiggle.rst
@@ -13,8 +13,8 @@ Synopsis
.. include:: common_SYN_OPTs.rst_
-**pswiggle** [ *table* ] |-J|\ *parameters* |SYN_OPT-Rz| |-Z|\ *scale*
-[ |-A|\ *azimuth* ]
+**pswiggle** [ *table* ] |-J|\ *parameters* |SYN_OPT-Rz| |-Z|\ *scale*\ [*units]
+[ |-A|\ [*azimuth*] ]
[ |SYN_OPT-B| ]
[ |-C|\ *center* ]
[ |-G|\ [**+**\ \|\ **-**\ \|\ **=**]\ *fill* ]
@@ -47,7 +47,8 @@ Description
**pswiggle** reads (*x*,\ *y*,\ *z*) triplets from files [or standard
input] and plots z as a function of distance along track. This means
that two consecutive (*x*,\ *y*) points define the local distance axis,
-and the local *z* axis is then perpendicular to the distance axis. The
+and the local *z* axis is then perpendicular to the distance axis,
+forming a right-handed coordinate system. The
user may set a preferred positive anomaly plot direction, and if the
positive normal is outside the plus/minus 90 degree window around the
preferred direction, then 180 degrees are added to the direction. Either
@@ -72,8 +73,9 @@ Required Arguments
.. _-Z:
-**-Z**\ *scale*
- Gives anomaly scale in data-units/distance-unit.
+**-Z**\ *scale*\ [*units*]
+ Gives anomaly scale in data-units/distance-unit, where distance-unit is the currently chosen unit specified
+ by PROJ_LENGTH_UNIT. Alternatively, append a distance-unit among the other choices (c\|i\|p).
Optional Arguments
------------------
@@ -83,9 +85,13 @@ Optional Arguments
.. _-A:
-**-A**\ *azimuth*
+**-A**\ [*azimuth*]
Sets the preferred positive azimuth. Positive wiggles will
- "gravitate" towards that direction.
+ "gravitate" towards that direction, i.e., azimuths of the
+ normal direction to the track will be flipped into the
+ -90/+90 degree window centered on *azimuth* and that defines
+ the positive wiggle side. If no azimuth is given the no
+ preferred azimuth is enforced. Default is **-A**\ 0.
.. _-B:
@@ -109,7 +115,8 @@ Optional Arguments
**-I**\ *fix_az*
Set a fixed azimuth projection for wiggles [Default uses track
- azimuth, but see **-A**].
+ azimuth, but see **-A**]. With this option, the calculated
+ track-normal azimuths are overridden by *fixed_az*.
.. include:: explain_-Jz.rst_
@@ -194,6 +201,15 @@ points, use
gmt pswiggle track.xym -R-20/10/-80/-60 -JS0/90/15c -Z1000 -B5 \
-C32000 -P -Gred -T0.25p,blue -S1000 -V > track_xym.ps
+and the positive anomalies will in general point in the north direction.
+To instead enforce a fixed azimuth of 45 for the positive wiggles, we add **-I**
+and obtain
+
+ ::
+
+ gmt pswiggle track.xym -R-20/10/-80/-60 -JS0/90/15c -Z1000 -B5 \
+ -C32000 -P -Gred -I45 -T0.25p,blue -S1000 -V > track_xym.ps
+
Bugs
----
@@ -213,7 +229,7 @@ this). Then if these numbers jump around a lot, you may do this:
awk '{ print NR, $0 }' yourdata.xyz | filter1d -Fb5 -N4/0 \
--FORMAT_FLOAT_OUT=%.12g > smoothed.xyz
-and plot this data set instead.
+which performs a 5-point boxcar filter, and plot this data set instead.
See Also
--------
diff --git a/doc/rst/source/psxy.rst b/doc/rst/source/psxy.rst
index 1608e3d..43c4268 100644
--- a/doc/rst/source/psxy.rst
+++ b/doc/rst/source/psxy.rst
@@ -104,7 +104,7 @@ Optional Arguments
.. _-C:
**-C**\ *cpt*
- Give a CPT or specify -Ccolor1,color2[,color3,...]
+ Give a CPT or specify **-C**\ *color1,color2*\ [*,color3*\ ,...]
to build a linear continuous CPT from those colors automatically.
In this case *color*\ **n** can be a r/g/b triplet, a color name,
or an HTML hexadecimal color (e.g. #aabbcc ).
@@ -398,6 +398,18 @@ circles) can be designed - these polygons can be painted and filled with
a pattern. Other standard geometric symbols can also be used. See Appendix
:ref:`App-custom_symbols` for macro definitions.
+Polar Caps
+----------
+
+**psxy** will automatically determine if a closed polygon is containing
+a geographic pole, i.e., being a polar cap. Such polygons requires special
+treatment under the hood to ensure proper filling. Many tools such
+as GIS packages are unable to handle polygons covering a pole and some
+cannot handle polygons crossing the Dateline. They work around this
+problem by splitting polygons into a west and east polygon or inserting
+artificial helper lines that makes a cut into the pole and back. Such
+doctored polygons may be misrepresented in GMT.
+
See Also
--------
diff --git a/doc/rst/source/psxyz.rst b/doc/rst/source/psxyz.rst
index dce8baa..69f639e 100644
--- a/doc/rst/source/psxyz.rst
+++ b/doc/rst/source/psxyz.rst
@@ -91,7 +91,7 @@ Optional Arguments
.. _-C:
**-C**\ *cpt*
- Give a CPT or specify -Ccolor1,color2[,color3,...]
+ Give a CPT or specify **-C**\ *color1,color2*\ [*,color3*\ ,...]
to build a linear continuous CPT from those colors automatically.
In this case *color*\ **n** can be a r/g/b triplet, a color name,
or an HTML hexadecimal color (e.g. #aabbcc ).
diff --git a/doc/rst/source/quick_ref.rst_ b/doc/rst/source/quick_ref.rst_
index 1ddb885..4221a53 100644
--- a/doc/rst/source/quick_ref.rst_
+++ b/doc/rst/source/quick_ref.rst_
@@ -103,7 +103,7 @@
+-----------------------+---------------------------------------------------------------------+
| :doc:`sph2grd` | Compute grid from spherical harmonic coefficients |
+-----------------------+---------------------------------------------------------------------+
-| :doc:`sphdistance` | Create grid of distances to nearest points on a sphere |
+| :doc:`sphdistance` | Create grid of NN or distances to nearest points on a sphere |
+-----------------------+---------------------------------------------------------------------+
| :doc:`sphtriangulate` | Delaunay or Voronoi construction of spherical lon,lat data |
+-----------------------+---------------------------------------------------------------------+
diff --git a/doc/rst/source/sphdistance.rst b/doc/rst/source/sphdistance.rst
index f1a1793..ac4e192 100644
--- a/doc/rst/source/sphdistance.rst
+++ b/doc/rst/source/sphdistance.rst
@@ -6,7 +6,7 @@ sphdistance
.. only:: not man
- sphdistance - Create Voronoi distance, node, or nearest-neighbor grid on a sphere
+ sphdistance - Create Voronoi distance, node, or natural nearest-neighbor grid on a sphere
Synopsis
--------
@@ -72,7 +72,7 @@ Optional Arguments
Specify the quantity that should be assigned to the grid nodes. By
default we compute distances to the nearest data point [**-Ed**].
Use **-En** to assign the ID numbers of the Voronoi polygons that each
- grid node is inside, or use **-Ez** for a nearest-neighbor grid where
+ grid node is inside, or use **-Ez** for a natural nearest-neighbor grid where
we assign all nodes inside the polygon the z-value of the center node.
Optionally, append the resampling interval along Voronoi arcs in spherical
degrees [1].
@@ -148,7 +148,7 @@ and then calculate distances from the data to a global 1x1 degree grid, use
gmt sphdistance testdata.txt -Rg -I1 -Gglobedist.nc
-To generate the same grid in two steps using **sphtriangulate** separately, try
+To generate the same grid in two steps using :doc:`sphtriangulate` separately, try
::
diff --git a/doc/rst/source/sphinterpolate.rst b/doc/rst/source/sphinterpolate.rst
index 7851298..7bcfdf4 100644
--- a/doc/rst/source/sphinterpolate.rst
+++ b/doc/rst/source/sphinterpolate.rst
@@ -32,7 +32,7 @@ Description
-----------
**sphinterpolate** reads one or more ASCII [or binary] files (or
-standard input) containing lon, lat, f and performs a Delaunay
+standard input) containing *lon, lat, z* and performs a Delaunay
triangulation to set up a spherical interpolation in tension. The final
grid is saved to the specified file. Several options may be used to
affect the outcome, such as choosing local versus global gradient
diff --git a/doc/rst/source/sphtriangulate.rst b/doc/rst/source/sphtriangulate.rst
index e2345c4..ff4f593 100644
--- a/doc/rst/source/sphtriangulate.rst
+++ b/doc/rst/source/sphtriangulate.rst
@@ -29,11 +29,11 @@ Description
**sphtriangulate** reads one or more ASCII [or binary] files (or
standard input) containing lon, lat and performs a spherical Delaunay
-triangulation, i.e., it find how the points should be connected to give
+triangulation, i.e., it determines how the points should be connected to give
the most equilateral triangulation possible on the sphere. Optionally,
you may choose **-Qv** which will do further processing to obtain the
Voronoi polygons. Normally, either set of polygons will be written as
-fillable segment output; use **-T** to write unique arcs instead. As an
+closed fillable segment output; use **-T** to write unique arcs instead. As an
option, compute the area of each triangle or polygon. The algorithm used
is STRIPACK.
@@ -138,7 +138,7 @@ diagram via :doc:`psxy`, use
::
- gmt sphtriangulate testdata.txt -Qv | psxy -Rg -JG30/30/6i -L -P -W1p -B0g30 | gv -
+ gmt sphtriangulate testdata.txt -Qv | psxy -Rg -JG30/30/6i -L -P -W1p -Bag | gv -
To compute the optimal Delaunay triangulation network based on the
multiple segment file globalnodes.d and save the area of each triangle
diff --git a/doc/rst/source/summary.rst_ b/doc/rst/source/summary.rst_
index b0e5042..895aa13 100644
--- a/doc/rst/source/summary.rst_
+++ b/doc/rst/source/summary.rst_
@@ -141,7 +141,7 @@
+-----------------------+---------------------------------------------------------------------+
| :doc:`sph2grd` | Compute grid from spherical harmonic coefficients |
+-----------------------+---------------------------------------------------------------------+
-| :doc:`sphdistance` | Create grid of distances to nearest points on a sphere |
+| :doc:`sphdistance` | Create grid of NN or distances to nearest points on a sphere |
+-----------------------+---------------------------------------------------------------------+
| :doc:`sphinterpolate` | Spherical gridding in tension of data on a sphere |
+-----------------------+---------------------------------------------------------------------+
diff --git a/doc/rst/source/supplements/gshhg/gshhg.rst b/doc/rst/source/supplements/gshhg/gshhg.rst
index 6127d02..10c1f13 100644
--- a/doc/rst/source/supplements/gshhg/gshhg.rst
+++ b/doc/rst/source/supplements/gshhg/gshhg.rst
@@ -229,11 +229,11 @@ Gorny, A. J., 1977, *World Data Bank II General User GuideRep. PB
271869*, 10pp, Central Intelligence Agency, Washington, DC.
Soluri, E. A., and V. A. Woodson, 1990, World Vector Shoreline, *Int.
-Hydrograph. Rev., LXVII(1), 27-35.*
+Hydrograph. Rev., LXVII(1)*, 27-35.
Wessel, P., and W. H. F. Smith, 1996, A global, self-consistent,
hierarchical, high-resolution shoreline database, *J. Geophys. Res.,
-101(B4)*, 8741-8743.*
+101(B4)*, 8741-8743.
See Also
--------
diff --git a/doc/rst/source/supplements/img/img2grd.rst b/doc/rst/source/supplements/img/img2grd.rst
index f20a79c..9fe93f5 100644
--- a/doc/rst/source/supplements/img/img2grd.rst
+++ b/doc/rst/source/supplements/img/img2grd.rst
@@ -157,6 +157,8 @@ Optional Arguments
file. Versions since 1995 have had *maxlon* = 360.0, while some
earlier files had *maxlon* = 390.0. [Default is 360.0].
+.. include:: ../../explain_-n.rst_
+
.. include:: ../../explain_help.rst_
Geographic Examples
@@ -186,7 +188,7 @@ Mercator Examples
Since the img files are in a Mercator projection, you should NOT extract
a geographic grid if your plan is to make a Mercator map. If you did
-that you end of projecting and reprojection the grid, loosing
+that you end of projecting and reprojection the grid, losing
short-wavelength detail. Better to use **-M** and plot the grid using a
linear projection with the same scale as the desired Mercator projection
(see GMT Example 29).
diff --git a/doc/rst/source/supplements/meca/psmeca.rst b/doc/rst/source/supplements/meca/psmeca.rst
index 0bae122..0f2da7e 100644
--- a/doc/rst/source/supplements/meca/psmeca.rst
+++ b/doc/rst/source/supplements/meca/psmeca.rst
@@ -42,8 +42,8 @@ Description
**psmeca** reads data values from *files* [or standard input] and
generates PostScript code that will plot focal mechanisms on a map.
-Most options are the same as for **psxy**. The PostScript code is
-written to standard output.
+Most options are the same as for :doc:`psxy </psxy>`. The PostScript
+code is written to standard output.
Required Arguments
------------------
diff --git a/doc/rst/source/supplements/meca/pspolar.rst b/doc/rst/source/supplements/meca/pspolar.rst
index 62d4418..dd28b6a 100644
--- a/doc/rst/source/supplements/meca/pspolar.rst
+++ b/doc/rst/source/supplements/meca/pspolar.rst
@@ -109,7 +109,7 @@ Optional Arguments
.. _-E:
-**-E**\ color
+**-E**\ *color*
Selects filling of symbols for stations in extensive quadrants. Set
the color [Default is 250]. If **-E**\ *color* is the same as
**-F**\ *color*, use **-e** to outline.
diff --git a/doc/rst/source/supplements/meca/pssac.rst b/doc/rst/source/supplements/meca/pssac.rst
index 2fef820..7ad4fab 100644
--- a/doc/rst/source/supplements/meca/pssac.rst
+++ b/doc/rst/source/supplements/meca/pssac.rst
@@ -125,7 +125,7 @@ Optional Arguments
**r**: remove mean value
- **i|q|r** can repeat mutiple times. For example, **-Frii** will convert acceleration to displacement.
+ **i|q|r** can repeat multiple times. For example, **-Frii** will convert acceleration to displacement.
The order of **i|q|r** controls the order of the data processing.
.. _-G:
@@ -134,7 +134,7 @@ Optional Arguments
Paint positive or negative portion of traces.
If only **-G** is used, default to fill the positive portion black.
- **p**\|\ **n** controls the painting of postive **p**\ ortion or **n**\ egative portion.
+ **p**\|\ **n** controls the painting of positive **p**\ ortion or **n**\ egative portion.
Repeat **-G** option to specify fills for positive and negative portions, respectively.
**+g**\ *fill*: color to fill
@@ -180,7 +180,7 @@ Optional Arguments
**-S**\ *sec_per_measure*\ [*unit*]
Specify the time scale in *sec_per_measure* seconds per *unit* while plotting on geographic plots.
- Use PROJ_LENGTH_UNIT if *unit* is ommited.
+ Use PROJ_LENGTH_UNIT if *unit* is omitted.
.. _-T:
diff --git a/doc/rst/source/supplements/meca/psvelo.rst b/doc/rst/source/supplements/meca/psvelo.rst
index cf5b4c4..b107b9a 100644
--- a/doc/rst/source/supplements/meca/psvelo.rst
+++ b/doc/rst/source/supplements/meca/psvelo.rst
@@ -17,8 +17,8 @@ Synopsis
|SYN_OPT-R|
[ |-A|\ *parameters* ]
[ |SYN_OPT-B| ]
-[ |-F|\ *color* ]
[ |-E|\ *color* ]
+[ |-F|\ *color* ]
[ |-G|\ *color* ]
[ |-K| ]
[ |-L| ]
@@ -179,11 +179,6 @@ Optional Arguments
can be used to rescale the uncertainties of velocities (**-Se** and
**-Sr**) and rotations (**-Sw**). Can be combined with the *confidence* variable.
-.. _-F:
-
-**-F**\ *fill*
- Sets the color or shade used for frame and annotation. [Default is black]
-
.. _-E:
**-E**\ *fill*
@@ -191,6 +186,11 @@ Optional Arguments
(**-Sw**) or velocity error ellipses (**-Se** or **-Sr**). [If
**-E** is not specified, the uncertainty regions will be transparent.]
+.. _-F:
+
+**-F**\ *fill*
+ Sets the color or shade used for frame and annotation. [Default is black]
+
.. _-G:
**-G**\ *fill*
diff --git a/doc/rst/source/supplements/mgd77/explain_ncid.rst_ b/doc/rst/source/supplements/mgd77/explain_ncid.rst_
index d720d1d..700efd2 100644
--- a/doc/rst/source/supplements/mgd77/explain_ncid.rst_
+++ b/doc/rst/source/supplements/mgd77/explain_ncid.rst_
@@ -3,17 +3,20 @@
1) 8-character NGDC IDs, e.g., 01010083, JA010010etc., etc.
- 2) 2-character <agency> codes which will return all cruises from each agency.
+ 2) 2-character *agency* codes which will return all cruises from each agency.
3) 4-character <agency><vessel> codes, which will return all cruises from those vessels.
- 4) =<list>, where <list> is a table with NGDC IDs, one per line.
+ 4) =\ *list*, where *list* is a table with NGDC IDs, one per line.
5) If nothing is specified we return all cruises in the data base.
- (See mgd77info **-L** for agency and vessel codes). The ".mgd77" or
- ".nc" extensions will automatically be appended, if needed (use
- **-I** to ignore certain file types). Cruise files will be looked
+ (See mgd77info **-L** for agency and vessel codes). If no file
+ extension is given then we search for files with one of the four
+ known extensions. The search order (and the extensions) tried
+ is MGD77+ (".nc"), MGD77T (".m77t"), MGD77 (".mgd77" ) and plain
+ text file (".dat"). Use **-I** to ignore one or more of these
+ file types). Cruise files will be looked
for first in the current directory and second in all directories
listed in **$MGD77\_HOME**/mgd77\_paths.txt [If **$MGD77\_HOME** is
not set it will default to **$GMT\_SHAREDIR**/mgd77].
diff --git a/doc/rst/source/supplements/mgd77/mgd77convert.rst b/doc/rst/source/supplements/mgd77/mgd77convert.rst
index 00d3905..d3a6e0b 100644
--- a/doc/rst/source/supplements/mgd77/mgd77convert.rst
+++ b/doc/rst/source/supplements/mgd77/mgd77convert.rst
@@ -40,7 +40,7 @@ Required Arguments
Specifies the format of the input (From) files. Choose from **a**
for standard MGD77 ASCII table (with extension .mgd77), **c** for
the new MGD77+ netCDF format (with extension .nc), **m** for the
- new MGD77 t format (extension .m77t) and **t** for a
+ new MGD77T format (extension .m77t) and **t** for a
plain ASCII tab-separated table dump (with extension .dat). Use
**-FC** to recover the original MGD77 setting from the MGD77+ file
[Default will apply any E77 corrections encoded in the file].
@@ -51,7 +51,7 @@ Required Arguments
Specifies the format of the output (To) files. Choose from **a** for
standard MGD77 ASCII table (with extension .mgd77), **c** for the
new MGD77+ netCDF format (with extension .nc), **m** for the
- new MGD77 t format (extension .m77t) and **t** for a plain
+ new MGD77T format (extension .m77t) and **t** for a plain
ASCII tab-separated table dump (with extension .dat). We will refuse
to create the file(s) if they already exist in the current
directory. Prepend **+** to override this policy.
@@ -134,20 +134,23 @@ E77 corrections, use
File Formats
------------
-**mgd77convert** handles three different formats. (1) The MGD77 ASCII
-tables are the established standard for distribution of underway
-geophysical data to and from the NGDC data center. Normally, only the
-ship-operations people and the cruise PI might be involved in *making*
-an MGD77 ASCII file for transmission to NGDC; users are more interested
-in *reading* such files. (2) The MGD77+ netCDF format was developed to
+**mgd77convert** handles four different formats.
+(1) NGDC has now started to use the new tab-delimited version of the
+MGD77 data format, called MGD77T. In addition to all the info in old
+MGD77 files it contains a few more quality flags for grav, mag,
+and bathymetry. (2) The MGD77+ netCDF format was developed to
facilitate the use of MGD77 data by scientists. It contains all the
information of the original MGD77 file and if you convert back and forth
you end up with the original. However, file sizes are typically ~30% of
-the original ASCII format and is much faster to operate on. (3) The
-plain ASCII tab-separated dump is available for users who need to
-manually edit the content of a MGD77 file. This is usually easier to do
-when the columns are tab-separated than when they are all crunched
-together in the MGD77 punch-card format.
+the original ASCII format and is much faster to operate on. (3) The MGD77 ASCII
+tables are the traditional standard for distribution of underway
+geophysical data to and from the NGDC data center, now superseded by MGD77T.
+Normally, only the ship-operations people and the cruise PI might be involved
+in *making* an MGD77 ASCII file for transmission to NGDC; users are more interested
+in *reading* such files. (4) The plain ASCII tab-separated dump is available
+for users who need to manually edit the content of a MGD77 file.
+This is usually easier to do when the columns are tab-separated than when
+they are all crunched together in the MGD77 punch-card format.
Other Tools
-----------
diff --git a/doc/rst/source/supplements/mgd77/mgd77info.rst b/doc/rst/source/supplements/mgd77/mgd77info.rst
index 50686de..ab83297 100644
--- a/doc/rst/source/supplements/mgd77/mgd77info.rst
+++ b/doc/rst/source/supplements/mgd77/mgd77info.rst
@@ -76,7 +76,7 @@ Optional Arguments
**-I**\ *ignore*
Ignore certain data file formats from consideration. Append
- **a\|c\|m\|t** to ignore MGD77 ASCII, MGD77+ netCDF, MGD77 t ASCII or plain
+ **a\|c\|m\|t** to ignore MGD77 ASCII, MGD77+ netCDF, MGD77T ASCII or plain
tab-separated ASCII table files, respectively. The option may be
repeated to ignore more than one format. [Default ignores none].
diff --git a/doc/rst/source/supplements/mgd77/mgd77list.rst b/doc/rst/source/supplements/mgd77/mgd77list.rst
index 77e1bb0..d6c83a9 100644
--- a/doc/rst/source/supplements/mgd77/mgd77list.rst
+++ b/doc/rst/source/supplements/mgd77/mgd77list.rst
@@ -40,8 +40,8 @@ Synopsis
Description
-----------
-**mgd77list** reads <NGDC-id>.[mgd77\|nc] files and produces an ASCII
-[or binary] table. The <NGDC-id>.[mgd77\|nc] files contain track
+**mgd77list** reads MGD77 files and produces an ASCII
+[or binary] table. The MGD77 files contain track
information such as leg-id, time and position, geophysical observables
such as gravity, magnetics, and bathymetry, and control codes and
corrections such as Eotvos and diurnal corrections. The MGD77+ extended
@@ -235,7 +235,9 @@ Required Arguments
those flags, and observations associated with ON-bits (meaning they
are flagged as bad) will be set to NaN; append : with no trailing
information to turn this behavior off (i.e., no bit flags will be
- consulted).
+ consulted). Note that these record-based flags are different from
+ any systematic corrections along track; the latter are deactivated
+ by **-T**.
Optional Arguments
------------------
@@ -328,18 +330,18 @@ Optional Arguments
**x** is the sensor (**2** or **1**) *not* indicated by the
**msens** data field (defaults to **2** if unspecified).
- **-Amc<offset>[unit]** Apply a correction that tries to compensate
- the fact that the magnetic field was not acquired at the same
- position as the navigation refer (ship's position). This is
+ **-Amc**\ *offset*\ [*unit*\ ] applies a correction to compensate
+ for the fact that the magnetic field was not acquired at the same
+ position as the ship's position [i.e., the navigation]. This is
accomplished by re-interpolating the total magnetic field to what it
- would have had if it was measured at the ship's position (remember,
- it probably was measured <offset> meters behind). Due to this
+ would have been if it were measured at the ship's position (remember,
+ it probably was measured *offset* meters behind). Due to this
interpolation step, bad navigation, namely too many repeated points,
- may cause troubles. Measures are taken to minimize this effect but
- they aren't 100% full prof. The interpolation method is controlled
+ may cause trouble. Measures are taken to minimize this effect but
+ they aren't 100% fool proof. The interpolation method is controlled
by the GMT default GMT_INTERPOLANT. Append **e** for meter, **f**
- for feet, **k** for km, **m** for miles, **n** for nautical miles,
- or **u** for survey feet [Default is e (meters)].
+ for feet, **k** for km, **M** for miles, **n** for nautical miles,
+ or **u** for survey feet [Default is **e** (meters)].
.. _-C:
@@ -357,12 +359,12 @@ Optional Arguments
**-Da**\ *startdate*
Do not list data collected before *startdate*
- (yyyy-mm-ddBD(T)[hh:mm:ss]) [Default is start of cruise]. Use
+ (yyyy-mm-dd\ **T**\ [hh:mm:ss]) [Default is start of cruise]. Use
**-DA** to exclude records whose time is undefined (i.e., NaN).
[Default reports those records].
**-Db**\ *stopdate*
Do not list data collected on or after *stopdate*
- (yyyy-mm-ddBD(T)[hh:mm:ss]). [Default is end of cruise]. Use **-DB**
+ (yyyy-mm-dd\ **T**\ [hh:mm:ss]). [Default is end of cruise]. Use **-DB**
to exclude records whose time is undefined (i.e., NaN). [Default
reports those records].
@@ -385,7 +387,7 @@ Optional Arguments
**-I**\ *ignore*
Ignore certain data file formats from consideration. Append
- **a\|c\|m\|t** to ignore MGD77 ASCII, MGD77+ netCDF, MGD77 t ASCII, or plain
+ **a\|c\|m\|t** to ignore MGD77 ASCII, MGD77+ netCDF, MGD77T ASCII, or plain
tab-separated ASCII table files, respectively. The option may be
repeated to ignore more than one format. [Default ignores none].
@@ -451,7 +453,10 @@ Optional Arguments
when creating the original MGD77 file from which the MGD77+ file
derives (the option has no effect on plain MGD77 ASCII files).
Append **m** or **e** to limit the option to the MGD77 or extended
- columns set only [Default applies to both].
+ columns set only [Default applies to both]. Note that record-based
+ E77 flags (MGD77+ format only) are not considered systematic corrections.
+ Instead, the application of these bit-flags can be controlled via
+ the : (colon) modifier to OPT(F).
.. _-V:
@@ -463,8 +468,8 @@ Optional Arguments
**-W**\ *weight*
Set the weight for these data. Weight output option must be set in
**-F**. This is useful if the data are to be processed with the
- weighted averaging techniques offered by **blockmean**,
- **blockmedian**, and **blockmode** [1].
+ weighted averaging techniques offered by :doc:`blockmean </blockmean>`,
+ :doc:`blockmedian </blockmedian>`, and :doc:`blockmode </blockmode>` [1].
.. _-Z:
@@ -619,6 +624,9 @@ corrected by a strange dependency on ship heading and latitude, and
See Also
--------
+:doc:`blockmean </blockmean>`,
+:doc:`blockmedian </blockmedian>`,
+:doc:`blockmode </blockmode>`,
:doc:`mgd77convert`,
:doc:`mgd77info`,
:doc:`mgd77manage`,
diff --git a/doc/rst/source/supplements/mgd77/mgd77path.rst b/doc/rst/source/supplements/mgd77/mgd77path.rst
index 34e5335..a7da8f2 100644
--- a/doc/rst/source/supplements/mgd77/mgd77path.rst
+++ b/doc/rst/source/supplements/mgd77/mgd77path.rst
@@ -50,7 +50,7 @@ Optional Arguments
**-I**\ *ignore*
Ignore certain data file formats from consideration. Append
- **a\|c\|m\|t** to ignore MGD77 ASCII, MGD77+ netCDF, MGD77 t ASCII, or plain
+ **a\|c\|m\|t** to ignore MGD77 ASCII, MGD77+ netCDF, MGD77T ASCII, or plain
tab-separated ASCII table files, respectively. The option may be
repeated to ignore more than one format. [Default ignores none].
diff --git a/doc/rst/source/supplements/mgd77/mgd77track.rst b/doc/rst/source/supplements/mgd77/mgd77track.rst
index edf7607..36b7e54 100644
--- a/doc/rst/source/supplements/mgd77/mgd77track.rst
+++ b/doc/rst/source/supplements/mgd77/mgd77track.rst
@@ -118,7 +118,7 @@ Optional Arguments
**-I**\ *ignore*
Ignore certain data file formats from consideration. Append
- **a\|c\|m\|t** to ignore MGD77 ASCII, MGD77+ netCDF, MGD77 t ASCII, or plain table
+ **a\|c\|m\|t** to ignore MGD77 ASCII, MGD77+ netCDF, MGD77T ASCII, or plain table
files, respectively. The option may be repeated to ignore more than
one format. [Default ignores none].
diff --git a/doc/rst/source/supplements/misc/dimfilter.rst b/doc/rst/source/supplements/misc/dimfilter.rst
index 2e87e9a..18957be 100644
--- a/doc/rst/source/supplements/misc/dimfilter.rst
+++ b/doc/rst/source/supplements/misc/dimfilter.rst
@@ -14,8 +14,8 @@ Synopsis
.. include:: ../../common_SYN_OPTs.rst_
**dimfilter** *input_file.nc* |-D|\ *distance_flag*
-|-F|\ *<filtertype><width>*\ [*mode*] |-G|\ *output_file.nc*
-|-N|\ *<filtertype><n_sectors>* [ |-Q|\ *cols* ]
+|-F|\ **x**\ *width*\ [*mode*] |-G|\ *output_file.nc*
+|-N|\ **x**\ *sectors* [ |-Q|\ *cols* ]
[ |SYN_OPT-I| ]
[ |SYN_OPT-R| ]
[ |-T| ]
@@ -73,9 +73,9 @@ Required Arguments
.. _-F:
-**-F**\ *<filtertype><width>*\ [*mode*]
+**-F**\ **x**\ *width*\ [*mode*]
Sets the primary filter type. Choose among convolution and
- non-convolution filters. Append the filter code followed by the full
+ non-convolution filters. Append the filter code **x** followed by the full
diameter *width*. Available convolution filters are:
(**b**) Boxcar: All weights are equal.
@@ -95,9 +95,9 @@ Required Arguments
.. _-N:
-**-N**\ *<filtertype><n_sectors>*
- Sets the secondary filter type and the number of bow-tie sectors.
- *n\_sectors* must be integer and larger than 0. When *n\_sectors* is
+**-N**\ **x**\ *sectors*
+ Sets the secondary filter type **x** and the number of bow-tie sectors.
+ *sectors* must be integer and larger than 0. When *sectors* is
set to 1, the secondary filter is not effective. Available secondary
filters are:
diff --git a/doc/rst/source/supplements/potential/gmtflexure.rst b/doc/rst/source/supplements/potential/gmtflexure.rst
index 8549c7d..00ecbdc 100644
--- a/doc/rst/source/supplements/potential/gmtflexure.rst
+++ b/doc/rst/source/supplements/potential/gmtflexure.rst
@@ -173,5 +173,5 @@ References
See Also
--------
-:doc:`gmt </gmt>`, :doc:`gravfft </supplements/potential/gravfft>`
-:doc:`grdflexure </supplements/potential/grdflexure>`:doc:`grdmath </grdmath>`
+:doc:`gmt </gmt>`, :doc:`gravfft </supplements/potential/gravfft>`,
+:doc:`grdflexure </supplements/potential/grdflexure>`, :doc:`grdmath </grdmath>`
diff --git a/doc/rst/source/supplements/potential/gmtgravmag3d.rst b/doc/rst/source/supplements/potential/gmtgravmag3d.rst
index 1c4ef9f..13f6949 100644
--- a/doc/rst/source/supplements/potential/gmtgravmag3d.rst
+++ b/doc/rst/source/supplements/potential/gmtgravmag3d.rst
@@ -56,7 +56,7 @@ Required Arguments
**-F**\ *xy_file*
Provide locations where the anomaly will be computed. Note this
- option is mutually exlusive with **-G**.
+ option is mutually exclusive with **-G**.
.. _-G:
@@ -73,15 +73,13 @@ Required Arguments
**-Tp**\ *xyz_file*\ [**+m**] **-Tv**\ *vert_file* OR **Tr\|s**\ *raw_file*
Gives names of xyz (**-Tp**\ *xyz_file*\ [**+m**]) and vertex (**-Tv**\ *vert_file*) files defining a close surface.
The file formats correspond to the output of the :doc:`triangulate </triangulate>` program.
- The optional **+m** flag to **-Td** instructs the program that the xyzm file
+ The optional **+m** flag to **-Tp** instructs the program that the xyzm file
has four columns and that the fourth column contains the magnetization intensity (plus signal),
which needs not to be constant. In this case the third argument of the **-H** option is
- ignored. A *raw* format (selected by the **-Tr** option) is a file with N
- rows (one per triangle) and 9 columns corresponding to the x,y,x
- coordinates of each of the three vertex of each triangle.
- Alternatively, the **-Ts** option indicates that the surface file is in
- the ASCII STL (Stereo Lithographic) format. These two type of files
- are used to provide a closed surface.
+ ignored. A *raw* format (selected by the **-Tr** option) is a file with N rows (one per triangle)
+ and 9 columns corresponding to the x,y,x coordinates of each of the three vertex of each triangle.
+ Alternatively, the **-Ts** option indicates that the surface file is in the ASCII STL (Stereo Lithographic) format.
+ These two type of files are used to provide a closed surface.
Optional Arguments
------------------
diff --git a/doc/rst/source/supplements/potential/gpsgridder.rst b/doc/rst/source/supplements/potential/gpsgridder.rst
index 9bd4985..5500459 100644
--- a/doc/rst/source/supplements/potential/gpsgridder.rst
+++ b/doc/rst/source/supplements/potential/gpsgridder.rst
@@ -41,7 +41,7 @@ Description
**gpsgridder** grids 2-D vector data such as GPS velocities by using a coupled
model based on 2-D elasticity. The degree of coupling can be tuned by adjusting
-the effecting Poisson's ratio. The solution field can be tuned to extremes such
+the effective Poisson's ratio. The solution field can be tuned to extremes such
as incompressible (1), typical elastic (0.5) or even an unphysical value of -1
that basically removes the elastic coupling of vector interpolation. Smoothing
is offered via the optional elimination of small eigenvalues.
@@ -51,7 +51,7 @@ Required Arguments
*table*
table with GPS strain rates at discrete locations. We expect the input
- format *x y u v* [ *du dv* ] (see **-W** to specify data uncertainties
+ format to be *x y u v* [ *du dv* ] (see **-W** to specify data uncertainties
or weights). If *lon lat* is given you must supply **-fg** and we will
use a flat Earth approximation in the calculation of distances.
@@ -84,15 +84,16 @@ Optional Arguments
eigenvalue ratios to the specified file for further analysis.
Finally, if a negative *value* is given then **+f**\ *file* is required and
execution will stop after saving the eigenvalues, i.e., no surface
- output is produced. Specify **-Cv** to use the
+ output is produced. Specify **-Cv**\ *value* to use the
largest eigenvalues needed to explain *value* % of the data variance.
- Specify **-Cr** to use the largest eigenvalues needed to leave approximately *value*
+ Specify **-Cr**\ *value* to use the largest eigenvalues needed to leave approximately *value*
as the model misfit. If *value* is not given then **-W** is required and we
- compute *value* as the rms of the data uncertainties.
- Alternatively, use **-Cn** to select the *value* largest eigenvalues.
+ compute *value* as the rms of the given data uncertainties.
+ Alternatively, use **-Cn**\ *value* to select the *value* largest eigenvalues.
If a *file* is given with **-Cv** then we save the eigenvalues instead
of the ratios.
- Note: 1/4 of the total number of data constraints is a good starting point.
+ Note: 1/4 of the total number of data constraints is a good starting point
+ for further experiments.
.. _-E:
@@ -102,17 +103,17 @@ Optional Arguments
statistics of the misfit (mean, standard deviation, and rms) for *u* and
*v* separately and combined. Optionally, append a filename and we will
write the data table, augmented by two extra columns after each of the
- *u* and *v* columns holding the spline estimate and the misfit.
+ *u* and *v* columns holding the spline estimates and misfits.
.. _-F:
|-F|\ [**d**\ \|\ **f**]\ *fudge*\
The Green's functions are proportional to terms like 1/r^2 and log(r)
- and thus blow up for r == 0. To prevent that we offer two schemes:
+ and thus blow up for r == 0. To prevent that we offer two fudging schemes:
**-Fd**\ *del_radius* lets you add a constant offset to all radii
and must be specified in the user units. Alternatively, use
**-Ff**\ *factor* which will compute *del_radius* from the product
- of the shortest inter-point distance and $factor* [0.01].
+ of the shortest inter-point distance and *factor* [0.01].
.. _-I:
@@ -121,12 +122,9 @@ Optional Arguments
.. _-L:
**-L**
- Do *not* remove a linear (1-D) or planer (2-D) trend when **-D**
- selects mode 0-3 [For those Cartesian cases a least-squares line or
- plane is modeled and removed, then restored after fitting a spline
- to the residuals]. However, in mixed cases with both data values and
- gradients, or for spherical surface data, only the mean data value
- is removed (and later and restored).
+ Leave trend alone. Do *not* remove a planer (2-D) trend from the
+ data before fitting the spline. [Default removes least squares plane,
+ fits normalized residuals, and restores plane].
.. _-N:
@@ -160,10 +158,10 @@ Optional Arguments
.. _-W:
**-W**\ [**w**]
- Data one-sigma uncertainties for *u* and *v* are provided in the last two columns.
+ One-sigma data uncertainties for *u* and *v* are provided in the last two columns.
We then compute weights that are inversely proportional to the uncertainties.
Append **w** if weights are given instead of uncertainties. This results in
- a weighted least squares fit. Note that this only has an effect if **-C** is used.
+ a weighted least squares fit. Note that **-W** only has an effect if **-C** is used.
[Default uses no weights or uncertainties].
.. _-V:
@@ -207,7 +205,8 @@ Haines, A. J. et al., 2015, *Enhanced Surface Imaging of Crustal Deformation*, S
doi:10.1007/978-3-319-21578-5_2.
Sandwell, D. T. and P. Wessel, 2016, Interpolation of 2-D Vector Data Using Constraints from Elasticity,
-*Geophys. Res. Lett.*, in press.
+*Geophys. Res. Lett., 43*, 10,703-10,709,
+`http://dx.doi.org/10.1002/2016GL070340 <http://dx.doi.org/10.1002/2016GL070340>`_
See Also
--------
diff --git a/doc/rst/source/supplements/potential/gravfft.rst b/doc/rst/source/supplements/potential/gravfft.rst
index 9bd76b2..609f723 100644
--- a/doc/rst/source/supplements/potential/gravfft.rst
+++ b/doc/rst/source/supplements/potential/gravfft.rst
@@ -19,9 +19,9 @@ Synopsis
[ |-E|\ *n_terms* ]
[ |-F|\ [**f**\ [**+**]\ \|\ **g**\ \|\ **v**\ \|\ **n**\ \|\ **e**] ]
[ |-I|\ **w**\ \|\ **b**\ \|\ **c**\ \|\ **t** \|\ **k** ]
-[ |-N|\ [**f**\ \|\ **q**\ \|\ **s**\ \|\ *nx/ny*][**+a**\ \|\ **d**\ \|\ **h** \|\ **l**][**+e**\ \|\ **n**\ \|\ **m**][**+t**\ *width*][**+w**\ [*suffix*]][\ **+z**\ [**p**]]
+[ |-N|\ *params* ]
[ |-Q| ]
-[ |-T|\ *te/rl/rm/rw*\ [**+m**] ]
+[ |-T|\ *te/rl/rm/rw*\ [*/ri*]\ [**+m**] ]
[ |SYN_OPT-V| ]
[ |-W|\ *wd*]
[ |-Z|\ *zm*\ [*zl*] ]
@@ -138,7 +138,7 @@ Optional Arguments
**-Q**
Writes out a grid with the flexural topography (with z positive up)
- whose average was set by **-Z**\ *zm* and model parameters by **-T**
+ whose average depth was set by **-Z**\ *zm* and model parameters by **-T**
(and output by **-G**). That is the "gravimetric Moho". **-Q**
implicitly sets **-N+h**
@@ -153,10 +153,11 @@ Optional Arguments
.. _-T:
-**-T**\ *te/rl/rm/rw*\ [**+m**]
+**-T**\ *te/rl/rm/rw*\ [*/ri*]\ [**+m**]
Compute the isostatic compensation from the topography load (input grid file) on
- an elastic plate of thickness *te*. Also append densities for load, mantle, and
- water in SI units. Give average mantle depth via **-Z**. If the elastic thickness
+ an elastic plate of thickness *te*. Also append densities for load, mantle,
+ water and infill in SI units. If *ri* is not provided it defaults to *rl*.
+ Give average mantle depth via **-Z**. If the elastic thickness
is > 1e10 it will be interpreted as the flexural rigidity (by default it is
computed from *te* and Young modulus). Optionally, append *+m* to write a grid
with the Moho's geopotential effect (see **-F**) from model selected by **-T**.
@@ -170,9 +171,8 @@ Optional Arguments
.. _-Z:
**-Z**\ *zm*\ [*zl*]
- Moho [and swell] average compensation depths. For the "load from
- top" model you only have to provide *zm*, but for the "loading from
- below" don't forget *zl*.
+ Moho [and swell] average compensation depths (in meters positive dows -- the depth). For the "load from
+ top" model you only have to provide *zm*, but for the "loading from below" don't forget *zl*.
.. _-V:
@@ -330,7 +330,9 @@ Luis, J.F. and M.C. Neves. 2006, The isostatic compensation of the
Azores Plateau: a 3D admittance and coherence analysis. J. Geothermal
Volc. Res. Volume 156, Issues 1-2, Pages 10-22,
`http://dx.doi.org/10.1016/j.jvolgeores.2006.03.010 <http://dx.doi.org/10.1016/j.jvolgeores.2006.03.010>`_
+
Parker, R. L., 1972, The rapid calculation of potential anomalies, Geophys. J., 31, 447-455.
+
Wessel. P., 2001, Global distribution of seamounts inferred from gridded Geosat/ERS-1 altimetry,
J. Geophys. Res., 106(B9), 19,431-19,441,
`http://dx.doi.org/10.1029/2000JB000083 <http://dx.doi.org/110.1029/2000JB000083>`_
diff --git a/doc/rst/source/supplements/potential/grdflexure.rst b/doc/rst/source/supplements/potential/grdflexure.rst
index 11475ae..cf078b6 100644
--- a/doc/rst/source/supplements/potential/grdflexure.rst
+++ b/doc/rst/source/supplements/potential/grdflexure.rst
@@ -47,7 +47,7 @@ Required Arguments
will be set and loaded for each time step. The load times thus
coincide with the times given via **-T** (but not all times need
to have a corresponding file). Alternatively, give *topogrd* as
- =*flist*, where *flist* is an ASCII table with one *topogrd* filename
+ =\ *flist*, where *flist* is an ASCII table with one *topogrd* filename
and load time per record. These load times can be different from
the evaluation times given via **-T**. For load time format, see
**-T**.
@@ -187,7 +187,7 @@ Plate Flexure Notes
The FFT solution to plate flexure requires the infill density to equal
the load density. This is typically only true directly beneath the load; beyond the load
-the infill tends to be lower-density sediments or even water (or air). Wessel [2001]
+the infill tends to be lower-density sediments or even water (or air). Wessel [2001, 2016]
proposed an approximation that allows for the specification of an infill density
different from the load density while still allowing for an FFT solution. Basically,
the plate flexure is solved for using the infill density as the effective load density but
@@ -221,7 +221,12 @@ Cathles, L. M., 1975, *The viscosity of the earth's mantle*, Princeton Universit
Wessel. P., 2001, Global distribution of seamounts inferred from gridded Geosat/ERS-1 altimetry,
J. Geophys. Res., 106(B9), 19,431-19,441,
-`http://dx.doi.org/10.1029/2000JB000083 <http://dx.doi.org/110.1029/2000JB000083>`_
+`http://dx.doi.org/10.1029/2000JB000083 <http://dx.doi.org/10.1029/2000JB000083>`_.
+
+Wessel, P., 2016, Regional–residual separation of bathymetry and revised estimates
+of Hawaii plume flux, *Geophys. J. Int., 204(2)*, 932-947,
+`http://dx.doi.org/10.1093/gji/ggv472 <http://dx.doi.org/10.1093/gji/ggv472>`_.
+
See Also
--------
diff --git a/doc/rst/source/supplements/potential/grdgravmag3d.rst b/doc/rst/source/supplements/potential/grdgravmag3d.rst
index ce84015..7553240 100644
--- a/doc/rst/source/supplements/potential/grdgravmag3d.rst
+++ b/doc/rst/source/supplements/potential/grdgravmag3d.rst
@@ -42,7 +42,7 @@ Required Arguments
------------------
*grdfile_top* [*grdfile_bot*]
- Grid file whose gravity efect is going to be computed. If two grids are
+ Grid file whose gravity effect is going to be computed. If two grids are
provided then the gravity/magnetic effect of the volume between them is computed.
.. _-C:
diff --git a/doc/rst/source/supplements/potential/grdseamount.rst b/doc/rst/source/supplements/potential/grdseamount.rst
index ec2b00f..7366a6a 100644
--- a/doc/rst/source/supplements/potential/grdseamount.rst
+++ b/doc/rst/source/supplements/potential/grdseamount.rst
@@ -72,7 +72,7 @@ Optional Arguments
**-A**\ [*out/in*]
Build a mask grid, append outside/inside values [1/NaN].
- Here, height is ignored and **-L**, **-N** and **-Z** are disallowed
+ Here, height is ignored and **-L**, **-N** and **-Z** are disallowed.
.. _-C:
@@ -89,8 +89,10 @@ Optional Arguments
.. _-E:
**-E**
- Elliptical data format [Default is Circular]. Read lon, lat, azimuth,
- major, minor, height (m) for each seamount.
+ Elliptical data format. We expect the input records to contain
+ *lon, lat, azimuth, major, minor, height* (with the latter in m)
+ for each seamount. [Default is Circular data format, expecting
+ *lon, lat, radius, height*\ ].
.. _-F:
@@ -111,7 +113,7 @@ Optional Arguments
.. _-L:
**-L**\ [*cut*]
- List area, volume, and mean height for each seamount; NO grid is created.
+ List area, volume, and mean height for each seamount; No grid is created.
Optionally, append the noise-floor cutoff level below which we ignore area and volume [0].
.. _-M:
diff --git a/doc/rst/source/supplements/potential/talwani2d.rst b/doc/rst/source/supplements/potential/talwani2d.rst
index 1a172b7..06181d8 100644
--- a/doc/rst/source/supplements/potential/talwani2d.rst
+++ b/doc/rst/source/supplements/potential/talwani2d.rst
@@ -154,10 +154,16 @@ Notes
References
----------
-Chapman, M. E. (1979), Techniques for interpretation of geoid anomalies, J. Geophys. Res., 84(B8), 3793-3801.
-Talwani, M., J. L. Worzel, and M. Landisman (1959), Rapid gravity computations for
+Chapman, M. E., 1979, Techniques for interpretation of geoid anomalies,
+*J. Geophys. Res., 84(B8)*, 3793-3801.
+
+Kim, S.-S., and P. Wessel, 2016, New analytic solutions for modeling vertical
+gravity gradient anomalies, *Geochem. Geophys. Geosyst., 17*,
+`http://dx.doi.org/10.1002/2016GC006263 <http://dx.doi.org/10.1002/2016GC006263>`_.
+
+Talwani, M., J. L. Worzel, and M. Landisman, 1959, Rapid gravity computations for
two-dimensional bodies with application to the Mendocino submarine fracture zone,
-J. Geophys. Res., 64, 49-59.
+*J. Geophys. Res., 64*, 49-59.
See Also
--------
diff --git a/doc/rst/source/supplements/potential/talwani3d.rst b/doc/rst/source/supplements/potential/talwani3d.rst
index ff5cfe4..c360df9 100644
--- a/doc/rst/source/supplements/potential/talwani3d.rst
+++ b/doc/rst/source/supplements/potential/talwani3d.rst
@@ -16,7 +16,7 @@ Synopsis
**talwani3d** [ *modeltable* ]
[ |-A| ] [ |-D|\ *rho* ] ]
[ |-F|\ **f**\ \|\ **n**\ \|\ **v** ]
-[ |-G|\ *grdfile* ]
+[ |-G|\ *outfile* ]
[ |SYN_OPT-I| ]
[ |-M|\ [**h**]\ [**v**] ]
[ |-N|\ *trackfile* ]
@@ -84,10 +84,10 @@ Optional Arguments
.. _-G:
-**-G**\ *grdfile*
- Specify the name of the output grid file; see GRID FILE FORMATS below).
+**-G**\ *outfile*
+ Specify the name of the output data (for grids, see GRID FILE FORMATS below).
Required when an equidistant grid is implied for output. If **-N** is used
- then the output is written to stdout.
+ then output is written to stdout unless **G** specifies an output file.
.. _-M:
@@ -157,18 +157,22 @@ for the same model, try
Finally, the geoid anomaly along the same track in crossing.txt
-for the same model is returned by
+for the same model is written to n_crossing.txt by
::
- gmt talwani3d -Ncrossing.txt body.txt -D1700 -Fn > n_crossing.txt
+ gmt talwani3d -Ncrossing.txt body.txt -D1700 -Fn -Gn_crossing.txt
References
----------
-Talwani, M., and M. Ewing (1960), Rapid computation of gravitational attraction of
-three-dimensional bodies of arbitrary shape, Geophysics, 25(203-225).
+Kim, S.-S., and P. Wessel, 2016, New analytic solutions for modeling vertical
+gravity gradient anomalies, *Geochem. Geophys. Geosyst., 17*,
+`http://dx.doi.org/10.1002/2016GC006263 <http://dx.doi.org/10.1002/2016GC006263>`_.
+
+Talwani, M., and M. Ewing, 1960, Rapid computation of gravitational attraction of
+three-dimensional bodies of arbitrary shape, *Geophysics, 25*, 203-225.
See Also
--------
diff --git a/doc/rst/source/supplements/spotter/backtracker.rst b/doc/rst/source/supplements/spotter/backtracker.rst
index 667b42a..4d22672 100644
--- a/doc/rst/source/supplements/spotter/backtracker.rst
+++ b/doc/rst/source/supplements/spotter/backtracker.rst
@@ -17,7 +17,7 @@ Synopsis
[ |-A|\ [*young*/*old*] ]
[ |-D|\ **f**\ \|\ **b** ]
[ |-F|\ *drift.txt* ]
-[ |-L|\ **f**\ \|\ **b**\ *step* ]
+[ |-L|\ **f**\ \|\ **b**\ [*step*] ]
[ |-N|\ *upper_age* ]
[ |-Q|\ *fixed_age* ]
[ |-S|\ *filestem* ]
@@ -115,10 +115,10 @@ Optional Arguments
.. _-L:
-**-Lf**\ \|\ **b**\ *step*
+**-Lf**\ \|\ **b**\ [*step*]
Specify a sampled path between initial and final position: **-Lf**
will draw particle flowlines, while **-Lb** will draw backtrack
- (hotspot track) paths. Append sampling interval in km. If *step* < 0
+ (hotspot track) paths. Append sampling interval in km. If *step* < 0 or not provided
then only the rotation times will be returned. When **-LF** or
**-LB** is used, the third output column will contain the stage id
(1 is youngest) [Default is along-track predicted ages]. You can
diff --git a/doc/rst/source/supplements/x2sys/x2sys_datalist.rst b/doc/rst/source/supplements/x2sys/x2sys_datalist.rst
index 81f2be3..e8a0f96 100644
--- a/doc/rst/source/supplements/x2sys/x2sys_datalist.rst
+++ b/doc/rst/source/supplements/x2sys/x2sys_datalist.rst
@@ -16,7 +16,7 @@ Synopsis
**x2sys_datalist** *track(s)* **-T**\ *TAG*
[ |-A| ]
[ |-E| ]
-[ |-F|\ *name1*,\ *name2*,...) ]
+[ |-F|\ *name1*,\ *name2*,... ]
[ |-I|\ [*list*] ]
[ |-L|\ [*corrtable*] ]
[ |SYN_OPT-R| ]
@@ -65,7 +65,7 @@ Optional Arguments
.. _-F:
-**-F**\ *name1*,\ *name2*,...)
+**-F**\ *name1*,\ *name2*,...
Give a comma-separated sub-set list of column names defined in the
definition file. [Default selects all data columns].
diff --git a/doc/rst/source/surface.rst b/doc/rst/source/surface.rst
index 3dc5195..aa3adba 100644
--- a/doc/rst/source/surface.rst
+++ b/doc/rst/source/surface.rst
@@ -54,7 +54,7 @@ effects. Experience suggests T ~ 0.25 usually looks good for potential
field data and T should be larger (T ~ 0.35) for steep topography data.
T = 1 gives a harmonic surface (no maxima or minima are possible except
at control data points). It is recommended that the user pre-process the
-data with **blockmean**, **blockmedian**, or **blockmode** to avoid
+data with :doc:`blockmean`, :doc:`blockmedian`, or :doc:`blockmode` to avoid
spatial aliasing and eliminate redundant data. You may impose lower
and/or upper bounds on the solution. These may be entered in the form of
a fixed value, a grid with values, or simply be the minimum/maximum
@@ -223,13 +223,13 @@ Bugs
----
**surface** will complain when more than one data point is found for any
-node and suggest that you run **blockmean**, **blockmedian**, or
-:doc:`blockmode` first. If you did run **blockm\*** and still get this
+node and suggest that you run :doc:`blockmean`, :doc:`blockmedian`, or
+:doc:`blockmode` first. If you did run any of these and still get this
message it usually means that your grid spacing is so small that you
-need more decimals in the output format used by **blockm\***. You may
+need more decimals in the output format. You may
specify more decimal places by editing the parameter
**FORMAT_FLOAT_OUT** in your :doc:`gmt.conf` file prior to running
-**blockm\***, or choose binary input and/or output using single or
+these filters, or choose binary input and/or output using single or
double precision storage.
Note that only gridline registration is possible with **surface**. If
diff --git a/doc/rst/source/trend1d.rst b/doc/rst/source/trend1d.rst
index 76db941..d734d98 100644
--- a/doc/rst/source/trend1d.rst
+++ b/doc/rst/source/trend1d.rst
@@ -153,7 +153,7 @@ can be directly compared. NOTE: The stable model coefficients are
Chebyshev coefficients. The corresponding polynomial coefficients in a +
bx + cxx + ... are also given in Verbose mode but users must realize
that they are NOT stable beyond degree 7 or 8. See Numerical Recipes for
-more discussion. For evaluating Chebyshev polynomials, see **gmtmath**.
+more discussion. For evaluating Chebyshev polynomials, see :doc:`gmtmath`.
The **-N**\ ...\ **+r** (robust) and **-I** (iterative) options evaluate the
significance of the improvement in model misfit Chi-Squared by an F
diff --git a/doc/rst/themes/rtd/static/rtd.css_t b/doc/rst/themes/rtd/static/rtd.css_t
index 36ab598..711cfa3 100644
--- a/doc/rst/themes/rtd/static/rtd.css_t
+++ b/doc/rst/themes/rtd/static/rtd.css_t
@@ -196,7 +196,7 @@ div.related ul li.right {
div.related ul li.right a.search {
padding: 2px;
- background-color: transparent; /* for Seach: */
+ background-color: transparent; /* for Search: */
}
/* "Breadcrumb" links in nav bar */
diff --git a/doc/scripts/CMakeLists.txt b/doc/scripts/CMakeLists.txt
index 40cc7de..8602255 100644
--- a/doc/scripts/CMakeLists.txt
+++ b/doc/scripts/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 16665 2016-06-29 01:52:54Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
@@ -48,7 +48,7 @@ set (_scr_other GMT_-B_geo_1.sh GMT_-B_geo_2.sh GMT_-B_linear.sh GMT_-B_log.sh
GMT_bezier.sh GMT_linecap.sh GMT_lineoffset.sh GMT_nearneighbor.sh GMT_anchor.sh
GMT_pstext_clearance.sh GMT_pstext_justify.sh GMT_registration.sh GMT_obl_nz.sh
GMT_utm_zones.sh GMT_volcano.sh GMT_panel.sh GMT_mapscale.sh GMT_insert.sh GMT_linearrow.sh
- GMT_dir_rose.sh GMT_images.sh GMT_colorbar.sh GMT_legend.sh GMT_mag_rose.sh GMT_hinge.sh
+ GMT_dir_rose.sh GMT_images.sh GMT_colorbar.sh GMT_legend.sh GMT_mag_rose.sh GMT_hinge.sh GMT_CPTscale.sh
GMT_tut_1.sh GMT_tut_2.sh GMT_tut_3.sh GMT_tut_4.sh GMT_tut_5.sh
GMT_tut_6.sh GMT_tut_7.sh GMT_tut_8.sh GMT_tut_9.sh GMT_tut_10.sh
GMT_tut_11.sh GMT_tut_12.sh GMT_tut_13.sh GMT_tut_14.sh GMT_tut_15.sh
diff --git a/doc/scripts/GMT_dir_rose.ps b/doc/scripts/GMT_CPTscale.ps
similarity index 59%
copy from doc/scripts/GMT_dir_rose.ps
copy to doc/scripts/GMT_CPTscale.ps
index 96b6831..a8e0386 100644
--- a/doc/scripts/GMT_dir_rose.ps
+++ b/doc/scripts/GMT_CPTscale.ps
@@ -1,11 +1,11 @@
%!PS-Adobe-3.0
%%BoundingBox: 0 0 612 792
-%%HiResBoundingBox: 0 0 612 792
-%%Title: GMT v5.2.0_r14409M [64-bit] Document from psbasemap
+%%HiResBoundingBox: 0 0 612 792
+%%Title: GMT v5.3.2_r17327 [64-bit] Document from psxy
%%Creator: GMT5
%%For: pwessel
%%DocumentNeededResources: font Helvetica
-%%CreationDate: Sat Jun 27 15:51:50 2015
+%%CreationDate: Sun Nov 13 10:13:19 2016
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Orientation: Portrait
@@ -116,39 +116,39 @@
/pdfmark where {pop [ /BM exch /CA exch dup /ca exch /SetTransparency pdfmark}
{pop pop} ifelse} ifelse
}!
-/Standard+_Encoding [
+/ISOLatin1+_Encoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /threequarters /threesuperior /trademark /twosuperior /yacute /ydieresis /zcaron
+/.notdef /bullet /ellipsis /trademark /emdash /endash /fi /zcaron
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
-/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+/parenleft /parenright /asterisk /plus /comma /minus /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
-/quoteleft /a /b /c /d /e /f /g
+/quoteleft /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
-/x /y /z /braceleft /bar /braceright /asciitilde /florin
-/Atilde /Ccedilla /Eth /Lslash /Ntilde /Otilde /Scaron /Thorn
-/Yacute /Ydieresis /Zcaron /atilde /brokenbar /ccedilla /copyright /degree
-/divide /eth /logicalnot /lslash /minus /mu /multiply /ntilde
-/onehalf /onequarter /onesuperior /otilde /plusminus /registered /scaron /thorn
-/.notdef /exclamdown /cent /sterling /fraction /yen /florin /section
-/currency /quotesingle /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi /fl
-/Aacute /endash /dagger /daggerdbl /periodcentered /Acircumflex /paragraph /bullet
-/quotesinglbase /quotedblbase /quotedblright /guillemotright /ellipsis /perthousand /Adieresis /questiondown
-/Agrave /grave /acute /circumflex /tilde /macron /breve /dotaccent
-/dieresis /Eacute /ring /cedilla /Ecircumflex /hungarumlaut /ogonek /caron
-/emdash /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute
-/Ocircumflex /Odieresis /Ograve /Uacute /Ucircumflex /Udieresis /Ugrave /aacute
-/acircumflex /AE /adieresis /ordfeminine /agrave /eacute /ecircumflex /edieresis
-/egrave /Oslash /OE /ordmasculine /iacute /icircumflex /idieresis /igrave
-/oacute /ae /ocircumflex /odieresis /ograve /dotlessi /uacute /ucircumflex
-/udieresis /oslash /oe /germandbls /ugrave /Aring /aring /ydieresis
+/x /y /z /braceleft /bar /braceright /asciitilde /scaron
+/OE /dagger /daggerdbl /Lslash /fraction /guilsinglleft /Scaron /guilsinglright
+/oe /Ydieresis /Zcaron /lslash /perthousand /quotedblbase /quotedblleft /quotedblright
+/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
+/dieresis /quotesinglbase /ring /cedilla /quotesingle /hungarumlaut /ogonek /caron
+/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
+/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
+/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
] def
/PSL_font_encode 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 array astore def
/F0 {/Helvetica Y}!
@@ -272,7 +272,6 @@ end
PSL_heights psl_k PSL_height put
} for
} def
-%%%%%%%%%%%%%%%%%%% CURVED BASELINE TEXT PLACEMENT FUNCTIONS
/PSL_curved_path_labels
{ /psl_bits exch def
/PSL_placetext psl_bits 2 and 2 eq def
@@ -523,7 +522,6 @@ end
{PSL_xp 0 get PSL_yp 0 get M
1 1 j { /ii exch def PSL_xp ii get PSL_yp ii get L} for
} def
-%%%%%%%%%%%%%%%%%%% DRAW BASELINE TEXT SEGMENT LINES
/PSL_draw_path_lines
{
/PSL_n_paths1 PSL_n_paths 1 sub def
@@ -549,7 +547,6 @@ end
} for
U
} def
-%%%%%%%%%%%%%%%%%%% STRAIGHT BASELINE TEXT PLACEMENT FUNCTIONS
/PSL_straight_path_labels
{
/psl_bits exch def
@@ -666,402 +663,344 @@ O0
1200 1200 TM
% PostScript produced by:
-%%GMT: psbasemap -R-5/5/-5/5 -Jm0.15i -Ba5f -BWSne+gazure1 -Tdg0/0+w1i -P -K -X1i
-%%PROJ: merc -5.00000000 5.00000000 -5.00000000 5.00000000 -556597.454 556597.454 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psxy -R0/6/0/6 -Jx1i -P -K -W0.25p
+%@PROJ: xy 0.00000000 6.00000000 0.00000000 6.00000000 0.000 6.000 0.000 6.000 +xy
%%BeginObject PSL_Layer_1
0 setlinecap
0 setlinejoin
3.32551 setmiterlimit
-{0.941 1 1 C} FS
--1800 0 0 1790 1800 0 3 0 0 SP
-25 W
-8 W
-N 0 0 M 0 -83 D S
-N 0 1790 M 0 84 D S
-N 900 0 M 0 -83 D S
-N 900 1790 M 0 84 D S
-N 1800 0 M 0 -83 D S
-N 1800 1790 M 0 84 D S
-N 0 0 M -83 0 D S
-N 1800 0 M 83 0 D S
-N 0 895 M -83 0 D S
-N 1800 895 M 83 0 D S
-N 0 1790 M -83 0 D S
-N 1800 1790 M 83 0 D S
-0 -167 M PSL_font_encode 0 get 0 eq {Standard+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
-167 F0
-(5�W) tc Z
-900 -167 M (0�) tc Z
-1800 -167 M (5�E) tc Z
--167 0 M V 90 R (5�S) bc Z U
--167 895 M V 90 R (0�) bc Z U
--167 1790 M V 90 R (5�N) bc Z U
-50 W
-1 A
-N -25 0 M 0 179 D S
-N 1825 0 M 0 179 D S
-0 A
-N -25 179 M 0 179 D S
-N 1825 179 M 0 179 D S
-1 A
-N -25 358 M 0 179 D S
-N 1825 358 M 0 179 D S
-0 A
-N -25 537 M 0 179 D S
-N 1825 537 M 0 179 D S
-1 A
-N -25 716 M 0 179 D S
-N 1825 716 M 0 179 D S
-0 A
-N -25 895 M 0 179 D S
-N 1825 895 M 0 179 D S
-1 A
-N -25 1074 M 0 179 D S
-N 1825 1074 M 0 179 D S
-0 A
-N -25 1253 M 0 179 D S
-N 1825 1253 M 0 179 D S
-1 A
-N -25 1432 M 0 179 D S
-N 1825 1432 M 0 179 D S
-0 A
-N -25 1611 M 0 179 D S
-N 1825 1611 M 0 179 D S
-1 A
-N 0 -25 M 180 0 D S
-N 0 1815 M 180 0 D S
-0 A
-N 180 -25 M 180 0 D S
-N 180 1815 M 180 0 D S
-1 A
-N 360 -25 M 180 0 D S
-N 360 1815 M 180 0 D S
-0 A
-N 540 -25 M 180 0 D S
-N 540 1815 M 180 0 D S
-1 A
-N 720 -25 M 180 0 D S
-N 720 1815 M 180 0 D S
-0 A
-N 900 -25 M 180 0 D S
-N 900 1815 M 180 0 D S
-1 A
-N 1080 -25 M 180 0 D S
-N 1080 1815 M 180 0 D S
-0 A
-N 1260 -25 M 180 0 D S
-N 1260 1815 M 180 0 D S
-1 A
-N 1440 -25 M 180 0 D S
-N 1440 1815 M 180 0 D S
-0 A
-N 1620 -25 M 180 0 D S
-N 1620 1815 M 180 0 D S
-5 W
-N -50 0 M 1900 0 D S
-N -50 -50 M 1900 0 D S
-N 1800 -50 M 0 1890 D S
-N 1850 -50 M 0 1890 D S
-N 1850 1790 M -1900 0 D S
-N 1850 1840 M -1900 0 D S
-N 0 1840 M 0 -1890 D S
-N -50 1840 M 0 -1890 D S
-10 setmiterlimit
-8 W
-{0 A} FS
-O1
-12 W
-V 900 295 T 90 R
-N 0 0 M 1020 0 D S
-U
-V 900 1495 T 90 R
-0 0 M
--180 30 D
-0 -60 D
-P clip fs N
-U
-FQ
-150 900 895 Sc
-N 600 895 M 600 0 D S
-900 1578 M 200 F0
-() bc Z
-3.32551 setmiterlimit
+4 W
+3600 3480 M
+2400 -480 D
+S
+3600 120 M
+2400 480 D
+S
+3600 2640 M
+-2400 360 D
+S
+3600 1296 M
+-2400 -696 D
+S
+[33 17] 0 B
+1200 942 M
+2400 858 D
+S
+3600 1800 M
+2400 -858 D
+S
+[] 0 B
%%EndObject
0 A
FQ
O0
-2100 0 TM
+0 0 TM
% PostScript produced by:
-%%GMT: psbasemap -R-5/5/-5/5 -Jm0.15i -Ba5f -BwSne+gazure1 -Tdg0/0+w1i+f1 -O -K -X1.75i
-%%PROJ: merc -5.00000000 5.00000000 -5.00000000 5.00000000 -556597.454 556597.454 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psscale -Cglobe -Baf -Dx3i/1.5i -O -K -W0.001
+%@PROJ: xy -10.00000000 10.00000000 0.00000000 0.15000000 -10.000 10.000 0.000 0.150 +xy
%%BeginObject PSL_Layer_2
0 setlinecap
0 setlinejoin
3.32551 setmiterlimit
-{0.941 1 1 C} FS
--1800 0 0 1790 1800 0 3 0 0 SP
+3510 120 T
25 W
+180 0 T
+90 R
+V N 0 0 T 3360 180 scale /DeviceRGB setcolorspace
+<< /ImageType 1 /Decode [0 1 0 1 0 1] /Width 1680 /Height 1 /BitsPerComponent 8
+ /ImageMatrix [1680 0 0 -1 0 1] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter
+>> image
+G[BdSG?!(7!!$u_e1rg;1Xf%+R18a]c%_XTq91BgMnQrX"-qg\777_U&`iXLmLHaZRrGH=*95ZW16.!>"%3\$OX7oZhr"6^
+j3QTJ^#'q)GouskQh^Sj0mE_brQMM4J]%'XD-5Z'+3QVS/=ZHDGsO-MVr=nnN.pBd67i/>^p9:6b<]]AVJEE+g4n_ShLBD2
+kWb+!RYC??L^X+dG at rdn]E-(-MNdJEA_MT5jLMtRCO_&IH^1d1c++rk5a40_UC34K_p_d5PkrHPI?[>GSZg)7Ru,,/Up=T)
+72*)/M-eZLeEC"<*Cm#cd5UW")u8l\ELdR/>n+ZBL4hamBL"'cdRm$pjl?#*00tSF>U(3>8B:$A at s-e9>1$Gh_H;e:Zpl`Q
+'0fY at 2c:YXnrQ*,O?6>To:h-6U5JoDOu6Ld*.G[?IR"jTTFOsuL+:83jeT_5ia<X4YUk+)o_q*ie3HUd5fp_=P)0+s]D]_-
+rC+2f(PP"*$@Q6*X044Q:OTQF*Sa_8rE2G5Z[uu=ncO71YP.)^o]BHIah?2fHa+sm6FZ6-\*@dRcC+)?s/4P!:U>JAB)?[]
+Sa+?Yfp1h#,kJqfjma_ at A"?5qcAX!=)2C<%%s=Zilq$a78999Nk4Udbol7!)H\ulkMGq.(iK;"VOi$N`Z>EgO9j<d'>LK-\
+ncQ#brN5X=Xg1/pA:%OV^U6W,kU""/-+ii5?^esGR`. at X76`_hFu1NEe<IJV.<1h0iC at 1j(7jrM7cEK!_=rq at mhu>d1rO<I
+M#UWt[o"*R5o[FB)nW7:(0Agh>L3=I_crnpIA,VK<lb0GNk;kTk*+Md<OJ?XCH*iF3 at c2W=&uT..bRi5=B=N7X"ou at .Ef#M
+Bj&Ze/7Me_)3tF7MgU7J*lB1gDP<e/ACJf0B]b^>F!]'nK4^]M2,C';V,5DN'XM>-=VA\I:,/#s9dO=K1"fMo1/0$^,`k\&
+,a3JI8K?,'QFMNB=MZ5`i#:Sa5DfK:VnTonEn#-TWul at +NSZHr`WdZb^:SLXSY`Dh5 at B0a]kt7^%\&V!qYoP[',NGlN8?C=
+&&'bE,C%VslP&/e"<"mb\.B-T8=t,A>QA+c)?A&AUg5m)l(,p4d21p_;Shr<hklu$HId$fHtG"M\Gocsr?fg`pqgQ/+2^%r
+do2lb_iP"mS2d#!D=drjldb%%Lp,)L*^_#,Hl_pL9K4e;nmTGfi'Z^\i,fM at H;9ubpFr+tpR"6cT1O!o9lQ^lE19L>Rn%Ri
+:NTl5FBq:V>tf?C6?64$E`l.X=[@'d,s.T[SLqrY/'1PeaA/cbNh95if2*I=;B47b*7e%/2H&p$;=2,pg2EkADkYj$V:f^`
+g$PHcm\JV*U>,+5g[(Wgm%rJ'@osg\=T?@E[V"7G0PtYmQCT&>hB$2h33XDD3DN>RZZD(`$cmI5jgr!R4El"@LBkopo].)V
+(jkHXI/%[9OX%)s=8^I at T]"HW_=?QYnAGX,[s,^2POPPMM5O.e5!C/t?eE\#jR3V:c^YT>4U[lD-U*#dI,P-SnY5g,,mehl
+Z6UOm^2cY_odUpu.(sdu)AE<]^Ffs*L2Yk/hRk9>6UG=mDS`$?ZEQ%9mFuT)\GXVmq!MF56j.o+?;b;Z*#4`\s*c^?*M&/0
+-PHamO at W?481>[LS3ip"WDmU^N<[krBadHLP6nQtl"i9%iM=N4A:Rp&#*5Ybq0ZaiX>2C\'9&!u'F;K*TeIu?!DZ>4(5ZG(
+3*RTK!N"3aR1*':jf5+%3&t-<:um3W.ClFW?s[#??@"Z&OcchH_O6hf=]ko9G'6/H%]EF-e at E,/?Cj2B^CVqE-rd7`U;Fbk
+6ntF3Une]%L+"].Y<Y38<*!%#+W_i-X/g"I[>;E*3Xqf)U"*ls&<-sd:=k/47d0OA(.9[Q%J:"WNd>N;"4`6SK'GZc2:@KL
+61ptD)<jLO8+iV]N!uG8:rB4JW"C8LW%ld]lK*NPhqImId/~>
+U
+2 setlinecap
+N 0 180 M 3360 0 D S
+N 0 0 M 0 180 D S
+N 3360 0 M 0 180 D S
+-90 R
+N 0 3360 M 0 -3360 D S
+/PSL_A0_y 83 def
+/PSL_A1_y 0 def
8 W
-N 0 0 M 0 -83 D S
-N 0 1790 M 0 84 D S
-N 900 0 M 0 -83 D S
-N 900 1790 M 0 84 D S
-N 1800 0 M 0 -83 D S
-N 1800 1790 M 0 84 D S
-N 0 0 M -83 0 D S
-N 1800 0 M 83 0 D S
-N 0 895 M -83 0 D S
-N 1800 895 M 83 0 D S
-N 0 1790 M -83 0 D S
-N 1800 1790 M 83 0 D S
-0 -167 M PSL_font_encode 0 get 0 eq {Standard+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
-167 F0
-(5�W) tc Z
-900 -167 M (0�) tc Z
-1800 -167 M (5�E) tc Z
-50 W
-1 A
-N -25 0 M 0 179 D S
-N 1825 0 M 0 179 D S
-0 A
-N -25 179 M 0 179 D S
-N 1825 179 M 0 179 D S
-1 A
-N -25 358 M 0 179 D S
-N 1825 358 M 0 179 D S
-0 A
-N -25 537 M 0 179 D S
-N 1825 537 M 0 179 D S
-1 A
-N -25 716 M 0 179 D S
-N 1825 716 M 0 179 D S
-0 A
-N -25 895 M 0 179 D S
-N 1825 895 M 0 179 D S
-1 A
-N -25 1074 M 0 179 D S
-N 1825 1074 M 0 179 D S
-0 A
-N -25 1253 M 0 179 D S
-N 1825 1253 M 0 179 D S
-1 A
-N -25 1432 M 0 179 D S
-N 1825 1432 M 0 179 D S
-0 A
-N -25 1611 M 0 179 D S
-N 1825 1611 M 0 179 D S
-1 A
-N 0 -25 M 180 0 D S
-N 0 1815 M 180 0 D S
-0 A
-N 180 -25 M 180 0 D S
-N 180 1815 M 180 0 D S
-1 A
-N 360 -25 M 180 0 D S
-N 360 1815 M 180 0 D S
-0 A
-N 540 -25 M 180 0 D S
-N 540 1815 M 180 0 D S
-1 A
-N 720 -25 M 180 0 D S
-N 720 1815 M 180 0 D S
-0 A
-N 900 -25 M 180 0 D S
-N 900 1815 M 180 0 D S
-1 A
-N 1080 -25 M 180 0 D S
-N 1080 1815 M 180 0 D S
-0 A
-N 1260 -25 M 180 0 D S
-N 1260 1815 M 180 0 D S
-1 A
-N 1440 -25 M 180 0 D S
-N 1440 1815 M 180 0 D S
-0 A
-N 1620 -25 M 180 0 D S
-N 1620 1815 M 180 0 D S
-5 W
-N -50 0 M 1900 0 D S
-N -50 -50 M 1900 0 D S
-N 1800 -50 M 0 1890 D S
-N 1850 -50 M 0 1890 D S
-N 1850 1790 M -1900 0 D S
-N 1850 1840 M -1900 0 D S
-N 0 1840 M 0 -1890 D S
-N -50 1840 M 0 -1890 D S
-10 setmiterlimit
-8 W
-{1 A} FS
-O1
-85 515 85 -515 515 -85 -515 -85 -85 -515 -85 515 -515 85 7 1500 895 SP
-{0 A} FS
--515 -85 600 0 2 900 895 SP
--85 515 85 85 2 900 895 SP
--515 -85 -85 85 2 900 895 SP
-85 -515 -85 -85 2 900 895 SP
-900 212 M 200 F0
-() tc Z
-1583 895 M () ml Z
-900 1578 M () bc Z
-217 895 M () mr Z
-3.32551 setmiterlimit
+N 0 0 M 83 0 D S
+N 0 840 M 83 0 D S
+N 0 1680 M 83 0 D S
+N 0 2520 M 83 0 D S
+N 0 3360 M 83 0 D S
+/PSL_AH0 0
+/MM {exch M} def
+PSL_font_encode 0 get 0 eq {ISOLatin1+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
+200 F0
+(-10) sw mx
+(-5) sw mx
+(0) sw mx
+(5) sw mx
+(10) sw mx
+def
+/PSL_A0_y PSL_A0_y 83 add PSL_AH0 add def
+0 PSL_A0_y MM
+(-10) mr Z
+840 PSL_A0_y MM
+(-5) mr Z
+1680 PSL_A0_y MM
+(0) mr Z
+2520 PSL_A0_y MM
+(5) mr Z
+3360 PSL_A0_y MM
+(10) mr Z
+N 0 168 M 42 0 D S
+N 0 336 M 42 0 D S
+N 0 504 M 42 0 D S
+N 0 672 M 42 0 D S
+N 0 1008 M 42 0 D S
+N 0 1176 M 42 0 D S
+N 0 1344 M 42 0 D S
+N 0 1512 M 42 0 D S
+N 0 1848 M 42 0 D S
+N 0 2016 M 42 0 D S
+N 0 2184 M 42 0 D S
+N 0 2352 M 42 0 D S
+N 0 2688 M 42 0 D S
+N 0 2856 M 42 0 D S
+N 0 3024 M 42 0 D S
+N 0 3192 M 42 0 D S
+/PSL_LH 0 def /PSL_L_y PSL_A0_y PSL_A1_y mx def
+90 R
+-90 R
+-180 0 T
+0 setlinecap
+-3510 -120 T
%%EndObject
0 A
FQ
O0
-2100 0 TM
+0 0 TM
% PostScript produced by:
-%%GMT: psbasemap -R-7/7/-5/5 -Jm0.15i -Ba5f -BwSnE+gazure1 -Tdg0/0+w1i+f3+l -O -X1.75i
-%%PROJ: merc -7.00000000 7.00000000 -5.00000000 5.00000000 -779236.436 779236.436 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psscale -Ct.cpt -Baf -Dx5i/1.5i -O -K -W0.001
+%@PROJ: xy -0.50000000 3.00000000 0.00000000 0.15000000 -0.500 3.000 0.000 0.150 +xy
%%BeginObject PSL_Layer_3
0 setlinecap
0 setlinejoin
3.32551 setmiterlimit
-{0.941 1 1 C} FS
--2520 0 0 1790 2520 0 3 0 0 SP
+6000 600 T
25 W
+180 0 T
+90 R
+V N 0 0 T 2400 180 scale /DeviceRGB setcolorspace
+<< /ImageType 1 /Decode [0 1 0 1 0 1] /Width 1200 /Height 1 /BitsPerComponent 8
+ /ImageMatrix [1200 0 0 -1 0 1] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter
+>> image
+G[BdSG?C*m!<@(UOs\FeC,;<u)W;NF2t\qpe>,ZG7[#Zc8PE]6&4I:4:f'GD5QsOnEdJlJGK9(O*,t8(aH1P&48+g\#RHgl
+r=1L<Qbkt8qIb<(O0IjiiI<e#bPEH')\0fiJ+)e7n(tZbI,Oj at OW3/?[/NdQ%<#g]s)$/<pCqL)Uh]i7/K8<oY$WupiQc/]
+l/f>JT[!89a7.L&i8\1[VnRu5hMGn5_@&QH/&0&=?1IUeml(K$fb1m"/Nf[N,.o]][O3Cj(Ip;-k4BtC/SU[QoTK341.u55
+-*,1O?"5&-R>Ho8;R;e>@]$U-dG"I7SUJ_"'<Ba'esj0=;i]OugMc-^)Yq9?_5KXZ at E?2p&5O5jZ[1l+?FHM./ErGC3n:75
+i1<\lY?/+=.p%'3X$-$=*na/pFJW3IdOeei&hS=h06[_h3sEfur4AMFGAm'1NngIkS>?_`;EJNjS\<\$>&7\$[P8QPk_lRM
+Ki[J*.qRZDH/Stl%bO+\dmCRnP!+<ngALWFq<#osk)B,uoXUj"F%o`uRaU=:0AgY@^"o&r])bTsD7DE,IrVpr_JFYK9O6XO
+?,B:kq3ft3l.WZ3RWHq8B;]NSVlF7(Wm=@=T:W&DFfQu1Y)KqlH#g4]`+2<tA4=FI`USfU at h[ro-d'=Sb/20ANf7`aO)%,'
+[>2ao6cM_/Ng1Y&.g[7KffrXQ1g1k)NYD_WB`(@WINocgi?FoQ,4FJ7YMhgoTgFg6!r&Ai\"NlT6++n/HJbClhh.pN#?6$T
+<'Ld>^E6:$f+0A)oIIZC=+"M?Ir1>Jb9Hu/,5]e>qnao_Vcil,=o)9njO6<7-[h06-Lo,'nNT_,O%c8YNM=0,73<B<_=nE7
+]*uQk)2.GrK^\10J(4q`dIZ8HoAA!dhpgcHFa6&kH%5)?^!Y%#F"d"ThV?_/EaS4UIAJ=SA["8ZV/G^Zh:s#Vg`;rU*B-"(
+*?=6cNcQ/[\WuQ0KC.I2G.u7FC1]I`Z()_8:(8bPHDXU]e$0Zk_f2\h3*%aR.iF?^%#8l76Q+]G96Ve\4-\)3MJ5$Z%9Gs8
+'iK#T<1KD7;c2qI<-nef?B17Im%n6>$/&'I[M+ejnk"!kP+@,6a!Y`M,AuZV\*)HXXBtsK^hi at QgO;.u)gC\Ai(WJGl`D97
+9ZOmD4Q[BG^%RNR[/Y at gI.$0sR&lN:?maVl$X^cbB`60/$bsnZH5\Tep*hs%qn2UjiHU_u)[C9Vq)Qs2i9tLHZ05!3 at o1LE
+s-A+[/^=-Vm1XFqC6\DO[a^Mn-Q^0a[!`XK=A,n_DZ-'4a0:UgJkcNfD'+MMY`F=L?@*M9XaQ!>MLESB5r]"2GjkaX"4k5=
+K<b0'RmDXKOR4A]T^?>XhueX_LPPsA'*B:!#!>NMJ"5a&"Ng[8P5c;\hbtf8Vb)?`P5Lmrq`[gLh+ICs7eYY5p9?"Bi$^dL
+'Q7WApC<)T9,-hrW*ZZ)]j at U_]g;>F8bIIplM24?o,X:_]/5TCBHFd!*Zr`k5,>f?7!JZumf!OKrA2%>kB+0d(iE\8gqIC1
+I`$-\_f5RGl1tM2j[Z2k5,O5Ge(']e]"*B.GB^KN#KZH-KY>%.TXQl3`s9iYonEABE^>2)O;AJD$Od10JqDqZqtXW=0`Soh
+:iPnH*"jFu%il:;L?=,D%tgT$8)UU*:`LN/5'dp-*'4?H5;!*a,,C?`n;.hJaceJ6.LM2rQCU&?T0<^V3<RE6 at cXf!nCb/;
+\T;^p*#p'(3.DuE8:V?eiM7a<Ka[ChMkKXh,rdnfR?@WLVS\ZQ_eEg7nB)KreZ3Y83h2>+"uA'c=]t7%CB\*h2G>6DKg]An
+M$0$a73I9c;lN2BRKfS:@0QfbAho9I/==[7!BD-eb6:O[E_:Co at 3,s/k2jF,^/c@)",0'$59DEmM.!Tu>Ts2!Uf(;AKB;Yr
+:n`E)b"@r!$<4(bJc`0fYRiE:Ji0"^io1l\U]`;%"`(ML\?$)k0<_FTJ1E//WiCBL\f.`N!?5ch)sZ_HqKfBNT`IV>+ds"p
+&M8eXLfQn_U)hX4\;BF^Y7&a;kX"hbF9k%HJ1r0 at Ld$J0 at 6sN1#4<Eu)+#31)*o-/)+,93R6[0.\V2em16"&A15g/lAI`8m
+jj&8^.#TKH.!JOS;-$Lo;==D?J*SJZ#ltJ~>
+U
+2 setlinecap
+N 0 180 M 2400 0 D S
+N 0 0 M 0 180 D S
+N 2400 0 M 0 180 D S
+-90 R
+N 0 2400 M 0 -2400 D S
+/PSL_A0_y 83 def
+/PSL_A1_y 0 def
8 W
-N 360 0 M 0 -83 D S
-N 360 1790 M 0 84 D S
-N 1260 0 M 0 -83 D S
-N 1260 1790 M 0 84 D S
-N 2160 0 M 0 -83 D S
-N 2160 1790 M 0 84 D S
-N 0 0 M -83 0 D S
-N 2520 0 M 83 0 D S
-N 0 895 M -83 0 D S
-N 2520 895 M 83 0 D S
-N 0 1790 M -83 0 D S
-N 2520 1790 M 83 0 D S
-360 -167 M PSL_font_encode 0 get 0 eq {Standard+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
-167 F0
-(5�W) tc Z
-1260 -167 M (0�) tc Z
-2160 -167 M (5�E) tc Z
-2687 0 M V 90 R (5�S) tc Z U
-2687 895 M V 90 R (0�) tc Z U
-2687 1790 M V 90 R (5�N) tc Z U
-50 W
-1 A
-N -25 0 M 0 179 D S
-N 2545 0 M 0 179 D S
-0 A
-N -25 179 M 0 179 D S
-N 2545 179 M 0 179 D S
-1 A
-N -25 358 M 0 179 D S
-N 2545 358 M 0 179 D S
-0 A
-N -25 537 M 0 179 D S
-N 2545 537 M 0 179 D S
-1 A
-N -25 716 M 0 179 D S
-N 2545 716 M 0 179 D S
-0 A
-N -25 895 M 0 179 D S
-N 2545 895 M 0 179 D S
-1 A
-N -25 1074 M 0 179 D S
-N 2545 1074 M 0 179 D S
-0 A
-N -25 1253 M 0 179 D S
-N 2545 1253 M 0 179 D S
-1 A
-N -25 1432 M 0 179 D S
-N 2545 1432 M 0 179 D S
-0 A
-N -25 1611 M 0 179 D S
-N 2545 1611 M 0 179 D S
-1 A
-N 0 -25 M 180 0 D S
-N 0 1815 M 180 0 D S
-0 A
-N 180 -25 M 180 0 D S
-N 180 1815 M 180 0 D S
-1 A
-N 360 -25 M 180 0 D S
-N 360 1815 M 180 0 D S
-0 A
-N 540 -25 M 180 0 D S
-N 540 1815 M 180 0 D S
-1 A
-N 720 -25 M 180 0 D S
-N 720 1815 M 180 0 D S
-0 A
-N 900 -25 M 180 0 D S
-N 900 1815 M 180 0 D S
-1 A
-N 1080 -25 M 180 0 D S
-N 1080 1815 M 180 0 D S
-0 A
-N 1260 -25 M 180 0 D S
-N 1260 1815 M 180 0 D S
-1 A
-N 1440 -25 M 180 0 D S
-N 1440 1815 M 180 0 D S
-0 A
-N 1620 -25 M 180 0 D S
-N 1620 1815 M 180 0 D S
-1 A
-N 1800 -25 M 180 0 D S
-N 1800 1815 M 180 0 D S
-0 A
-N 1980 -25 M 180 0 D S
-N 1980 1815 M 180 0 D S
-1 A
-N 2160 -25 M 180 0 D S
-N 2160 1815 M 180 0 D S
+N 0 343 M 83 0 D S
+N 0 1029 M 83 0 D S
+N 0 1714 M 83 0 D S
+N 0 2400 M 83 0 D S
+/PSL_AH0 0
+/MM {exch M} def
+PSL_font_encode 0 get 0 eq {ISOLatin1+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
+200 F0
+(0) sw mx
+(1) sw mx
+(2) sw mx
+(3) sw mx
+def
+/PSL_A0_y PSL_A0_y 83 add PSL_AH0 add def
+343 PSL_A0_y MM
+(0) mr Z
+1029 PSL_A0_y MM
+(1) mr Z
+1714 PSL_A0_y MM
+(2) mr Z
+2400 PSL_A0_y MM
+(3) mr Z
+N 0 69 M 42 0 D S
+N 0 206 M 42 0 D S
+N 0 480 M 42 0 D S
+N 0 617 M 42 0 D S
+N 0 754 M 42 0 D S
+N 0 891 M 42 0 D S
+N 0 1166 M 42 0 D S
+N 0 1303 M 42 0 D S
+N 0 1440 M 42 0 D S
+N 0 1577 M 42 0 D S
+N 0 1851 M 42 0 D S
+N 0 1989 M 42 0 D S
+N 0 2126 M 42 0 D S
+N 0 2263 M 42 0 D S
+/PSL_LH 0 def /PSL_L_y PSL_A0_y PSL_A1_y mx def
+90 R
+-90 R
+-180 0 T
+0 setlinecap
+-6000 -600 T
+%%EndObject
0 A
-N 2340 -25 M 180 0 D S
-N 2340 1815 M 180 0 D S
-5 W
-N -50 0 M 2620 0 D S
-N -50 -50 M 2620 0 D S
-N 2520 -50 M 0 1890 D S
-N 2570 -50 M 0 1890 D S
-N 2570 1790 M -2620 0 D S
-N 2570 1840 M -2620 0 D S
-N 0 1840 M 0 -1890 D S
-N -50 1840 M 0 -1890 D S
-10 setmiterlimit
+FQ
+O0
+0 0 TM
+
+% PostScript produced by:
+%@GMT: psscale -Ct.cpt -Baf -Dx1i/1.5i -O -K -W0.001
+%@PROJ: xy -0.50000000 3.00000000 0.00000000 0.15000000 -0.500 3.000 0.000 0.150 +xy
+%%BeginObject PSL_Layer_4
+0 setlinecap
+0 setlinejoin
+3.32551 setmiterlimit
+1020 600 T
+25 W
+180 0 T
+90 R
+V N 0 0 T 2400 180 scale /DeviceRGB setcolorspace
+<< /ImageType 1 /Decode [0 1 0 1 0 1] /Width 1200 /Height 1 /BitsPerComponent 8
+ /ImageMatrix [1200 0 0 -1 0 1] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter
+>> image
+G[@ep#?[2o(][q_2U&I8_hMmNL(412L/sUCBgXAVXL+ZLJr5A?La'.CJ]\#!%do?sm(Jb,*\q;Jqp(`V%RL3hqn>.Pj1+u3
+H6.@(f-K[jaU#7%^AD2O7jPkJma!mV,+C[opWhW(18^f`o?iNY(hW(n`bmp!0S+58aLG#S4D$@==cDfcL-(_6b[Z;6R$^<9
+iY!ST.?hH(a^;juY at 8t^c`()0^Y3L4NVVSf%464`bNl922H[.sZnZL)[;*.VD6\:uF`;2A4<S\(LgBp(DEOo1:prShiK9is
+S?;A+;/pVVS33(g0r7scd^qd/;lK=;;B at DjqN`OX99js;$NG.#It])>;@ua%#cq'GCD>Q-78TO;\6^5(;U0'>o,?`g-Fod<
+/ngN*[)kYhAYC;NQrk+VObHG>6CCLqQUWC"OXb)+.;@:GC%N9WoN>nP3GH]_8aHUPgdOfi,tWK>,iQ$STi7,!7?VamS9.Jq
+HsN8t,u3\?Vqqu_h at um\LsgW=l$]:b>GB?r3!6Xf_co*[VVZ'?.5\RG-hXma7%/X1@!jVfUTqMW0SW'ki2E4o(th-JV\'8S
+ic#fZZN5g/O;h;@j.n`.no0"r2\)S;mQ)1U"5n[5et;e9?X.ZZ$i<chY%m1NT5u#RH.!r00KsL?)YTg/E@!_4pKrUhqkuU4
+Mp'qZ?ruWFbFgZX/9A\)H`/1F%54&-cs:`@0"-NU`B3qNFVM[ZeFjM+gdZ/E<a9$\&T=@Dq"SIoIudgnr(V8Xh/EB9Z_6H&
+4jGiFO4Vde3#A%#F1H(*c>*1dr>V?QrepbI=5g6Gn4_CTR[Lq>hrosH0]Q72$XJeAIm/RQd at YC3O6WaP+)n4d>tVkeb*;AY
+\+CW0]EB^I(XoQ&8a9[10BFm-&cI;6`!N'Zn7QhDNrKecj$1qMqj>[,o-?$`,PiS^!6;`*`cLAaEAW&=>nm5iNah3gq at 7>&
+I%.i=ho$,5?sCPgo^t,9qJ5`R<Z"#ac@@LR)2?CL_UBH<"$NV)3k_-9d98Z7#)5gPVH*6kXeZ[5>V;BNbPIPlrmVQa9T*R-
+IgRabiSube*i"!7)!;+<!cr$5bmM=U1kV[ca_?hu3L-K6:Sp^73&, at b9VCo4%L,UaV(jeF^DmFUE?pM\g/!'iDP=Wpl_?*B
+dg(ZoIo4[a[?p:t[)972X?E1gHUKZ3cj?.rLO2Sh3<MFsL)bSaQj8 at pB&J-hqfG')hgLlD^#ReW)>o_r.r,sW:CcYPO?^+9
+q at a)$@I<j"Z+So4NoN.(hIZ1dGc1OKD>U"K*Os"345FBUgcdWPV<oLD[i%;?TZs-7]j%ld2UIocQA:D.<4=XX6-[ZU/_(ps
+E0Fmarm>tcnJcT-5H"`iJ+NPr?Ea+[JS)"8_0^;$Bs0C='K.!(%V2s?ao~>
+U
+2 setlinecap
+N 0 0 M 2400 0 D S
+N 0 0 M 0 180 D S
+N 2400 0 M 0 180 D S
+-90 R
+-180 0 T
+N 0 2400 M 0 -2400 D S
+/PSL_A0_y 83 def
+/PSL_A1_y 0 def
8 W
-{1 A} FS
-O1
-161 166 -4 -231 166 -161 -231 4 -161 -166 4 231 -166 161 7 1537 780 SP
-{0 A} FS
--231 4 277 -115 2 1260 895 SP
-4 231 111 46 2 1260 895 SP
--231 4 -46 111 2 1260 895 SP
--4 -231 -111 -46 2 1260 895 SP
-{1 A} FS
--4 231 161 -166 231 4 -166 -161 4 -231 -161 166 -231 -4 7 1537 1010 SP
-{0 A} FS
--166 -161 277 115 2 1260 895 SP
--161 166 46 111 2 1260 895 SP
--166 -161 -111 46 2 1260 895 SP
-161 -166 -46 -111 2 1260 895 SP
-{1 A} FS
--180 300 300 -180 300 180 -180 -300 180 -300 -300 180 -300 -180 7 1560 1195 SP
-{0 A} FS
--180 -300 300 300 2 1260 895 SP
--300 180 0 120 2 1260 895 SP
--180 -300 -120 0 2 1260 895 SP
-300 -180 0 -120 2 1260 895 SP
-{1 A} FS
-85 515 85 -515 515 -85 -515 -85 -85 -515 -85 515 -515 85 7 1860 895 SP
-{0 A} FS
--515 -85 600 0 2 1260 895 SP
--85 515 85 85 2 1260 895 SP
--515 -85 -85 85 2 1260 895 SP
-85 -515 -85 -85 2 1260 895 SP
-1260 212 M 200 F0
-(S) tc Z
-1943 895 M (E) ml Z
-1260 1578 M (N) bc Z
-577 895 M (W) mr Z
+N 0 343 M -83 0 D S
+N 0 1029 M -83 0 D S
+N 0 1714 M -83 0 D S
+N 0 2400 M -83 0 D S
+/PSL_AH0 0
+/MM {neg exch M} def
+PSL_font_encode 0 get 0 eq {ISOLatin1+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
+200 F0
+(0) sw mx
+(1) sw mx
+(2) sw mx
+(3) sw mx
+def
+/PSL_A0_y PSL_A0_y 83 add def
+343 PSL_A0_y MM
+(0) mr Z
+1029 PSL_A0_y MM
+(1) mr Z
+1714 PSL_A0_y MM
+(2) mr Z
+2400 PSL_A0_y MM
+(3) mr Z
+/PSL_A0_y PSL_A0_y PSL_AH0 add def
+N 0 69 M -42 0 D S
+N 0 206 M -42 0 D S
+N 0 480 M -42 0 D S
+N 0 617 M -42 0 D S
+N 0 754 M -42 0 D S
+N 0 891 M -42 0 D S
+N 0 1166 M -42 0 D S
+N 0 1303 M -42 0 D S
+N 0 1440 M -42 0 D S
+N 0 1577 M -42 0 D S
+N 0 1851 M -42 0 D S
+N 0 1989 M -42 0 D S
+N 0 2126 M -42 0 D S
+N 0 2263 M -42 0 D S
+/PSL_LH 0 def /PSL_L_y PSL_A0_y PSL_A1_y mx def
+180 0 T
+90 R
+-90 R
+-180 0 T
+0 setlinecap
+-1020 -600 T
+%%EndObject
+0 A
+FQ
+O0
+0 0 TM
+
+% PostScript produced by:
+%@GMT: pstext -R0/6/0/6 -Jx1i -O -N -F+f14p+j
+%@PROJ: xy 0.00000000 6.00000000 0.00000000 6.00000000 0.000 6.000 0.000 6.000 +xy
+%%BeginObject PSL_Layer_5
+0 setlinecap
+0 setlinejoin
3.32551 setmiterlimit
+0 0 M PSL_font_encode 0 get 0 eq {ISOLatin1+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
+233 F0
+PSL_font_encode 1 get 0 eq {ISOLatin1+_Encoding /Helvetica-Bold /Helvetica-Bold PSL_reencode PSL_font_encode 1 1 put} if
+(Scale a subset \(via ) Z
+233 F1 (-G) Z
+233 F0 (\)) Z
+7200 0 M 233 F0
+(Scale entire range) br Z
+3600 3720 M (Master CPT) bc Z
+1200 3720 M (New CPT v1) bc Z
+6000 3720 M (New CPT v2) bc Z
%%EndObject
%%PageTrailer
U
diff --git a/doc/scripts/GMT_CPTscale.sh b/doc/scripts/GMT_CPTscale.sh
new file mode 100755
index 0000000..3def46d
--- /dev/null
+++ b/doc/scripts/GMT_CPTscale.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+# $Id: GMT_CPTscale.sh 17346 2016-11-14 17:04:02Z pwessel $
+#
+ps=GMT_CPTscale.ps
+gmt psxy -R0/6/0/6 -Jx1i -P -K -W0.25p << EOF > $ps
+> Normal scaling of whole CPT
+3 2.9
+5 2.5
+>
+3 0.1
+5 0.5
+> Truncated with -G
+3 2.2
+1 2.5
+>
+3 1.08
+1 0.5
+> Dash the hinges -W0.25p,-
+1 0.785
+3 1.5
+>
+3 1.5
+5 0.785
+EOF
+gmt psscale -Cglobe -Baf -Dx3i/1.5i+w2.8i/0.15i+jCM -O -K -W0.001 >> $ps
+gmt makecpt -Cglobe -T-500/3000 > t.cpt
+gmt psscale -Ct.cpt -Baf -Dx5i/1.5i+w2.0i/0.15i+jLM -O -K -W0.001 >> $ps
+gmt makecpt -Cglobe -G-3000/5000 -T-500/3000 > t.cpt
+gmt psscale -Ct.cpt -Baf -Dx1i/1.5i+w2.0i/0.15i+jRM+ma -O -K -W0.001 >> $ps
+gmt pstext -R -J -O -N -F+f14p+j << EOF >> $ps
+0 0 LB Scale a subset (via @%1%-G@%%)
+6 0 RB Scale entire range
+3 3.1 CB Master CPT
+1 3.1 CB New CPT v1
+5 3.1 CB New CPT v2
+EOF
diff --git a/doc/scripts/GMT_dir_rose.ps b/doc/scripts/GMT_dir_rose.ps
index 96b6831..1651549 100644
--- a/doc/scripts/GMT_dir_rose.ps
+++ b/doc/scripts/GMT_dir_rose.ps
@@ -1,11 +1,11 @@
%!PS-Adobe-3.0
%%BoundingBox: 0 0 612 792
-%%HiResBoundingBox: 0 0 612 792
-%%Title: GMT v5.2.0_r14409M [64-bit] Document from psbasemap
+%%HiResBoundingBox: 0 0 612 792
+%%Title: GMT v5.3.2_r17368M [64-bit] Document from psbasemap
%%Creator: GMT5
%%For: pwessel
%%DocumentNeededResources: font Helvetica
-%%CreationDate: Sat Jun 27 15:51:50 2015
+%%CreationDate: Fri Dec 2 10:39:31 2016
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Orientation: Portrait
@@ -116,39 +116,39 @@
/pdfmark where {pop [ /BM exch /CA exch dup /ca exch /SetTransparency pdfmark}
{pop pop} ifelse} ifelse
}!
-/Standard+_Encoding [
+/ISOLatin1+_Encoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /threequarters /threesuperior /trademark /twosuperior /yacute /ydieresis /zcaron
+/.notdef /bullet /ellipsis /trademark /emdash /endash /fi /zcaron
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
-/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+/parenleft /parenright /asterisk /plus /comma /minus /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
-/quoteleft /a /b /c /d /e /f /g
+/quoteleft /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
-/x /y /z /braceleft /bar /braceright /asciitilde /florin
-/Atilde /Ccedilla /Eth /Lslash /Ntilde /Otilde /Scaron /Thorn
-/Yacute /Ydieresis /Zcaron /atilde /brokenbar /ccedilla /copyright /degree
-/divide /eth /logicalnot /lslash /minus /mu /multiply /ntilde
-/onehalf /onequarter /onesuperior /otilde /plusminus /registered /scaron /thorn
-/.notdef /exclamdown /cent /sterling /fraction /yen /florin /section
-/currency /quotesingle /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi /fl
-/Aacute /endash /dagger /daggerdbl /periodcentered /Acircumflex /paragraph /bullet
-/quotesinglbase /quotedblbase /quotedblright /guillemotright /ellipsis /perthousand /Adieresis /questiondown
-/Agrave /grave /acute /circumflex /tilde /macron /breve /dotaccent
-/dieresis /Eacute /ring /cedilla /Ecircumflex /hungarumlaut /ogonek /caron
-/emdash /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute
-/Ocircumflex /Odieresis /Ograve /Uacute /Ucircumflex /Udieresis /Ugrave /aacute
-/acircumflex /AE /adieresis /ordfeminine /agrave /eacute /ecircumflex /edieresis
-/egrave /Oslash /OE /ordmasculine /iacute /icircumflex /idieresis /igrave
-/oacute /ae /ocircumflex /odieresis /ograve /dotlessi /uacute /ucircumflex
-/udieresis /oslash /oe /germandbls /ugrave /Aring /aring /ydieresis
+/x /y /z /braceleft /bar /braceright /asciitilde /scaron
+/OE /dagger /daggerdbl /Lslash /fraction /guilsinglleft /Scaron /guilsinglright
+/oe /Ydieresis /Zcaron /lslash /perthousand /quotedblbase /quotedblleft /quotedblright
+/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
+/dieresis /quotesinglbase /ring /cedilla /quotesingle /hungarumlaut /ogonek /caron
+/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
+/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
+/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
] def
/PSL_font_encode 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 array astore def
/F0 {/Helvetica Y}!
@@ -272,7 +272,6 @@ end
PSL_heights psl_k PSL_height put
} for
} def
-%%%%%%%%%%%%%%%%%%% CURVED BASELINE TEXT PLACEMENT FUNCTIONS
/PSL_curved_path_labels
{ /psl_bits exch def
/PSL_placetext psl_bits 2 and 2 eq def
@@ -523,7 +522,6 @@ end
{PSL_xp 0 get PSL_yp 0 get M
1 1 j { /ii exch def PSL_xp ii get PSL_yp ii get L} for
} def
-%%%%%%%%%%%%%%%%%%% DRAW BASELINE TEXT SEGMENT LINES
/PSL_draw_path_lines
{
/PSL_n_paths1 PSL_n_paths 1 sub def
@@ -549,7 +547,6 @@ end
} for
U
} def
-%%%%%%%%%%%%%%%%%%% STRAIGHT BASELINE TEXT PLACEMENT FUNCTIONS
/PSL_straight_path_labels
{
/psl_bits exch def
@@ -666,8 +663,8 @@ O0
1200 1200 TM
% PostScript produced by:
-%%GMT: psbasemap -R-5/5/-5/5 -Jm0.15i -Ba5f -BWSne+gazure1 -Tdg0/0+w1i -P -K -X1i
-%%PROJ: merc -5.00000000 5.00000000 -5.00000000 5.00000000 -556597.454 556597.454 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psbasemap -R-5/5/-5/5 -Jm0.15i -Ba5f -BWSne+gazure1 -Tdg0/0 -P -K -X1i
+%@PROJ: merc -5.00000000 5.00000000 -5.00000000 5.00000000 -556597.454 556597.454 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
%%BeginObject PSL_Layer_1
0 setlinecap
0 setlinejoin
@@ -688,14 +685,14 @@ N 0 895 M -83 0 D S
N 1800 895 M 83 0 D S
N 0 1790 M -83 0 D S
N 1800 1790 M 83 0 D S
-0 -167 M PSL_font_encode 0 get 0 eq {Standard+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
+0 -167 M PSL_font_encode 0 get 0 eq {ISOLatin1+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
167 F0
-(5�W) tc Z
-900 -167 M (0�) tc Z
-1800 -167 M (5�E) tc Z
--167 0 M V 90 R (5�S) bc Z U
--167 895 M V 90 R (0�) bc Z U
--167 1790 M V 90 R (5�N) bc Z U
+(5�W) tc Z
+900 -167 M (0�) tc Z
+1800 -167 M (5�E) tc Z
+-167 0 M V 90 R (5�S) bc Z U
+-167 895 M V 90 R (0�) bc Z U
+-167 1790 M V 90 R (5�N) bc Z U
50 W
1 A
N -25 0 M 0 179 D S
@@ -783,8 +780,6 @@ U
FQ
150 900 895 Sc
N 600 895 M 600 0 D S
-900 1578 M 200 F0
-() bc Z
3.32551 setmiterlimit
%%EndObject
0 A
@@ -793,8 +788,8 @@ O0
2100 0 TM
% PostScript produced by:
-%%GMT: psbasemap -R-5/5/-5/5 -Jm0.15i -Ba5f -BwSne+gazure1 -Tdg0/0+w1i+f1 -O -K -X1.75i
-%%PROJ: merc -5.00000000 5.00000000 -5.00000000 5.00000000 -556597.454 556597.454 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psbasemap -R-5/5/-5/5 -Jm0.15i -Ba5f -BwSne+gazure1 -Tdg0/0 -O -K -X1.75i
+%@PROJ: merc -5.00000000 5.00000000 -5.00000000 5.00000000 -556597.454 556597.454 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
%%BeginObject PSL_Layer_2
0 setlinecap
0 setlinejoin
@@ -815,11 +810,11 @@ N 0 895 M -83 0 D S
N 1800 895 M 83 0 D S
N 0 1790 M -83 0 D S
N 1800 1790 M 83 0 D S
-0 -167 M PSL_font_encode 0 get 0 eq {Standard+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
+0 -167 M PSL_font_encode 0 get 0 eq {ISOLatin1+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
167 F0
-(5�W) tc Z
-900 -167 M (0�) tc Z
-1800 -167 M (5�E) tc Z
+(5�W) tc Z
+900 -167 M (0�) tc Z
+1800 -167 M (5�E) tc Z
50 W
1 A
N -25 0 M 0 179 D S
@@ -903,7 +898,7 @@ O1
900 212 M 200 F0
() tc Z
1583 895 M () ml Z
-900 1578 M () bc Z
+900 1578 M (N) bc Z
217 895 M () mr Z
3.32551 setmiterlimit
%%EndObject
@@ -913,8 +908,8 @@ O0
2100 0 TM
% PostScript produced by:
-%%GMT: psbasemap -R-7/7/-5/5 -Jm0.15i -Ba5f -BwSnE+gazure1 -Tdg0/0+w1i+f3+l -O -X1.75i
-%%PROJ: merc -7.00000000 7.00000000 -5.00000000 5.00000000 -779236.436 779236.436 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84
+%@GMT: psbasemap -R-7/7/-5/5 -Jm0.15i -Ba5f -BwSnE+gazure1 -Tdg0/0 -O -X1.75i
+%@PROJ: merc -7.00000000 7.00000000 -5.00000000 5.00000000 -779236.436 779236.436 -553583.847 553583.847 +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137.000 +b=6356752.314245 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
%%BeginObject PSL_Layer_3
0 setlinecap
0 setlinejoin
@@ -935,14 +930,14 @@ N 0 895 M -83 0 D S
N 2520 895 M 83 0 D S
N 0 1790 M -83 0 D S
N 2520 1790 M 83 0 D S
-360 -167 M PSL_font_encode 0 get 0 eq {Standard+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
+360 -167 M PSL_font_encode 0 get 0 eq {ISOLatin1+_Encoding /Helvetica /Helvetica PSL_reencode PSL_font_encode 0 1 put} if
167 F0
-(5�W) tc Z
-1260 -167 M (0�) tc Z
-2160 -167 M (5�E) tc Z
-2687 0 M V 90 R (5�S) tc Z U
-2687 895 M V 90 R (0�) tc Z U
-2687 1790 M V 90 R (5�N) tc Z U
+(5�W) tc Z
+1260 -167 M (0�) tc Z
+2160 -167 M (5�E) tc Z
+2687 0 M V 90 R (5�S) tc Z U
+2687 895 M V 90 R (0�) tc Z U
+2687 1790 M V 90 R (5�N) tc Z U
50 W
1 A
N -25 0 M 0 179 D S
diff --git a/doc/scripts/GMT_dir_rose.sh b/doc/scripts/GMT_dir_rose.sh
index 78ea2d9..29cb862 100755
--- a/doc/scripts/GMT_dir_rose.sh
+++ b/doc/scripts/GMT_dir_rose.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# $Id: GMT_dir_rose.sh 15178 2015-11-06 10:45:03Z fwobbe $
+# $Id: GMT_dir_rose.sh 17373 2016-12-02 20:43:05Z pwessel $
# Showing map directional roses
ps=GMT_dir_rose.ps
gmt set FONT_LABEL 10p FONT_TITLE 12p MAP_ANNOT_OBLIQUE 34 MAP_TITLE_OFFSET 5p \
@@ -7,6 +7,6 @@ gmt set FONT_LABEL 10p FONT_TITLE 12p MAP_ANNOT_OBLIQUE 34 MAP_TITLE_OFFSET 5p \
# left: Fancy kind = 1
gmt psbasemap -R-5/5/-5/5 -Jm0.15i -Ba5f -BWSne+gazure1 -Tdg0/0+w1i+jCM -P -K -X1i > $ps
# middle: Fancy kind = 3
-gmt psbasemap -R -J -Ba5f -BwSne+gazure1 -Tdg0/0+w1i+f1+jCM -O -K -X1.75i >> $ps
+gmt psbasemap -R -J -Ba5f -BwSne+gazure1 -Tdg0/0+w1i+f1+jCM+l,,,N -O -K -X1.75i >> $ps
# right: Plain kind
gmt psbasemap -R-7/7/-5/5 -J -Ba5f -BwSnE+gazure1 -Tdg0/0+w1i+f3+l+jCM -O -X1.75i >> $ps
diff --git a/doc/scripts/GMT_images.ps b/doc/scripts/GMT_images.ps
index dd14b7e..48e164c 100644
--- a/doc/scripts/GMT_images.ps
+++ b/doc/scripts/GMT_images.ps
@@ -1,11 +1,11 @@
%!PS-Adobe-3.0
%%BoundingBox: 0 0 612 792
-%%HiResBoundingBox: 0 0 612 792
-%%Title: GMT v5.2.0_r14986 [64-bit] Document from psimage
+%%HiResBoundingBox: 0 0 612 792
+%%Title: GMT v5.4.0_r17371M [64-bit] Document from psimage
%%Creator: GMT5
%%For: pwessel
%%DocumentNeededResources: font Helvetica
-%%CreationDate: Thu Oct 15 11:51:22 2015
+%%CreationDate: Mon Dec 26 23:40:06 2016
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Orientation: Portrait
@@ -272,7 +272,6 @@ end
PSL_heights psl_k PSL_height put
} for
} def
-%%%%%%%%%%%%%%%%%%% CURVED BASELINE TEXT PLACEMENT FUNCTIONS
/PSL_curved_path_labels
{ /psl_bits exch def
/PSL_placetext psl_bits 2 and 2 eq def
@@ -523,7 +522,6 @@ end
{PSL_xp 0 get PSL_yp 0 get M
1 1 j { /ii exch def PSL_xp ii get PSL_yp ii get L} for
} def
-%%%%%%%%%%%%%%%%%%% DRAW BASELINE TEXT SEGMENT LINES
/PSL_draw_path_lines
{
/PSL_n_paths1 PSL_n_paths 1 sub def
@@ -549,7 +547,6 @@ end
} for
U
} def
-%%%%%%%%%%%%%%%%%%% STRAIGHT BASELINE TEXT PLACEMENT FUNCTIONS
/PSL_straight_path_labels
{
/psl_bits exch def
@@ -666,8 +663,8 @@ O0
1200 1200 TM
% PostScript produced by:
-%%GMT: psimage /Users/pwessel/GMTdev/gmt5-dev/branches/5.2.0/doc/scripts/nsf1.jpg -R0/2/0/1 -JX5i/1.6i -B0 -P -K -DjML+w1.5i+o0.1i/0i
-%%PROJ: xy 0.00000000 2.00000000 0.00000000 1.00000000 0.000 2.000 0.000 1.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
+%@GMT: psimage ./nsf1.jpg -R0/2/0/1 -JX5i/1.6i -B0 -P -K -DjML+w1.5i+o0.1i/0i
+%@PROJ: xy 0.00000000 2.00000000 0.00000000 1.00000000 0.000 2.000 0.000 1.000 +xy
%%BeginObject PSL_Layer_1
0 setlinecap
0 setlinejoin
@@ -1235,9924 +1232,6138 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psimage /Users/pwessel/GMTdev/gmt5-dev/branches/5.2.0/doc/scripts/soest.eps -R0/2/0/1 -JX5i/1.6i -O -K -DjMR+o0.1i/0i+w2i
-%%PROJ: xy 0.00000000 2.00000000 0.00000000 1.00000000 0.000 2.000 0.000 1.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
+%@GMT: psimage ./soest.eps -R0/2/0/1 -JX5i/1.6i -O -K -DjMR+o0.1i/0i+w2i
+%@PROJ: xy 0.00000000 2.00000000 0.00000000 1.00000000 0.000 2.000 0.000 1.000 +xy
%%BeginObject PSL_Layer_2
0 setlinecap
0 setlinejoin
3.32551 setmiterlimit
PSL_eps_begin
-3480 76 T 8.66614 8.69074 scale
+3480 76 T 8.66615 8.69072 scale
-0 -0 T
N 0 0 M 276.94 0 L 276.94 203.379 L 0 203.379 L P clip N
%%BeginDocument: psimage.eps
-%!PS-Adobe-3.0 EPSF-3.0
+%!PS-Adobe-3.1 EPSF-3.0
+%ADO_DSC_Encoding: MacOS Roman
+%%Title: soest2.eps
+%%Creator: Adobe Illustrator(R) 16.0
+%%For: Paul Wessel
+%%CreationDate: 12/26/16
%%BoundingBox: 0 0 277 204
-%%HiResBoundingBox: 0 0 276.9400 203.3785
-%%Creator: GPL Ghostscript 916 (ps2write)
-%%CropBox: 0 0 276.9400 203.3785
+%%HiResBoundingBox: 0 0 276.9395 203.3790
+%%CropBox: 0 0 276.9395 203.3790
%%LanguageLevel: 2
-%%CreationDate: D:20150709190154+02'00'
+%%DocumentData: Clean7Bit
+%ADOBeginClientInjection: DocumentHeader "AI11EPS"
+%%AI8_CreatorVersion: 16.0.4
%AI9_PrintingDataBegin
%ADO_BuildNumber: Adobe Illustrator(R) 16.0.4 x691 R agm 4.6676 ct 5.2594
%ADO_ContainsXMP: MainFirst
%AI7_Thumbnail: 128 96 8
%%BeginData: 11106 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD2FFFA8A97E84595A2F360D2FFD0F0D362F5A597E7E8484FD58FF
%A8A97E5A2F35FD070D352F5A595A597E5A845A7E5A5A595A535A2F2FFD04
%0D060D0D0D0C0D2F5A5984A8FD4DFFA95A5A2F0D0D352F5A598484A9A9FD
%19FFA9A97E845A5AFD070D365984A8FD44FF845A2F0D0D2F2F7E7EA9A8FD
%27FFA8A97E5A2F0D0D0D060D0D5959A9FD3DFF7E5A0D352F7E84FD34FFAF
%7E5A2FFD040D3559A9FD36FFAF595A0D3559A9AFFD3BFFA8842F0D0D0D06
%0D2F84A8FD30FF7E5A2F5A7EFD44FFA95A35FD040D59A9FD2BFFA87E2F35
%5AFD4AFFA82F0D060D06355AFD27FFA9595A5AAFFD4FFF842FFD040D7EA9
%FD22FF845A2F7EA9FD53FF845A0D0D060D59AFFD1FFF5A5A7EFD58FFAF59
%FD040D7EFD1CFF7E2F84FD5CFFA85A060D060D5AFD18FFA85A5AFD60FFAF
%2F0D0D0D2FFD16FF5A5AA8FD08FFA97E847E847E847E847E847E847E847E
%847E847E847E847E847E847E847E847E847E847E847E847E847E847E847E
%847E847E847E847E847E847E847E847E847E847E847E847E847E847E847E
%847E847E847E847E847E847E847E842FFD040D7E7E847E847E847E8484FD
%0AFF5984FD09FF84FD6A0D59FD07FFA92FA9FD0AFF590D060D060D0C0D06
%0D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C
%0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D06
%0D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D06
%0D060D0C0D060D065AFD06FFA959FD0DFF84847EA984847EA984847EA984
%847EA984847EA984847EA984847EA984847EA984847EA984847EA984847E
%A984847EA984847EA984847EA984847EA984A97EA984A97EA984A97EA984
%A97EA984A97EA984A97EA984A97EA984A97EA984847E8584A984A9A8A97E
%A984A9FD06FFA92FFD6EFFAF2F5A535AA8FD09FFAF2FFD49FF7E362F5A2F
%362F5A2F362F5A2F362F5A2F362F5A2F362F5A2F362F5A2F362F5A2FA9FD
%05FF5A0D0D0D35AFFD08FF2FA9FD49FF35060D060D060D060D060D060D06
%0D060D060D060D060D060D060D060D060D060D59FD06FF35060D0635FD07
%FF5984FD4AFFA9847E857E847E857E847E857E847E857E847EA984847EA9
%84847EA984847E8584FD08FF2F0D0D0D5AFD05FF7E5AFD74FF7EFD040D84
%FD04FF36A8FD5DFF2FFD0A0DFD0DFF2FFD040DFFFFFF7E53FD1AFFA9595A
%5384FD3FFF5AFD090D2FA8FD0CFF840D0D060D5AFFFF2FA9FD19FF7EFD05
%0D36A8FD56FF350D0D0D36FF7E2FFD19FF5A06FD060D2FA8FD3EFFA97EA8
%7E847EA8FD10FF59FD040DA85A2FFD18FFA9FD070D7E5A36FD3EFFFD070D
%84FD0FFF84FD040D5A0D5AFD18FF2F0D0D0D060D0D0D2FFF0DA9FD3CFFA8
%0D0D0D060D0D0D2FFD0FFF7E0D0D0D06350D7EFD18FF36FD070D84FF5A7E
%FD3CFF84FD070D36FD0FFFA9FD060D7EFD18FF2FFD070DA8FF2F84FD1AFF
%A8847EFD1FFF2FFD070D0684FD0EFF7EFD060D5AFD18FF5AFD060D84FFA9
%36A9FD17FF845AFD050D367EFD1BFF84FD090D2FFD0EFF84FD050D0635FD
%18FF840D0D2F2F5AA8FFFF5A2FFD16FF840D0D060D060D0D0D060D2FA9FD
%19FF350C0D060D0D0D060D0D0D7EFD0DFF590D060D0D0D2F0DFD19FF5936
%A8FD04FF5A0DFD16FF5AFD0D0DA9FD17FFA9FD0B0D36FD0DFF36FD050D2F
%0D5AFD19FF592F2F5A592F2FAFFD14FFA836FD0B0D5A7E7E84FD17FFFD0C
%0D0684FD0BFFA9FD050D2F5A0D36FD1AFFA8845A7E84FD15FFA92FFD0A0D
%5AFD1BFF59FD0E0DFD0BFF2FFD050D5A840D067EFD32FF840D0C0D060D0D
%0D060D0D0D2FFD1BFF590D0D0D060D0D0D060D0D0D060D0D0D2FFD09FF84
%0D060D0D0D06A8FF0D0D0DFD31FF7EFD0C0D84FD1AFF84FD110D5AFD08FF
%36FD050D36FFFF7E060D2FFD2FFF590D0CFD0B0D59FD19FFA80D06FD110D
%5AFD06FF5AFD060D5AFFFFFF2F0D0D59FD2DFF2FFD0E0D84FD18FF84FD15
%0D7EFD04FF84FD070DFD04FF7E0D060D59FD2AFF840D0D060D0D0D060D0D
%0D060D0D0D060D2FFD17FF7E0D060D0D0D060D0D0D060D0D0D060D0D0D06
%0D0D0D060D59FFA97E0D0D060D0D0D0684FD05FF590D0D0D59FD27FFA85A
%FD120DA9FD15FF7EFD190D2F36FD070D5AFD07FFFD040D2FFD25FF590D06
%FD120D35FD14FF2FFD1B0D06FD060D2FFD09FFFD050D84AFFD1FFFA95AFD
%170D5AA9FD10FFA9FD230D35AFFD09FFA9FD040D060D2F84A8FD19FFA87E
%2F0D060D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0C0D59FD
%0DFFA85A060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D
%0D0D060D0D0D060D0C0D84FD0CFFFD070D2F2F5A5AA9A8FFA9FD0DFFA9A9
%5A5A2FFD200D5AA8FD08FFAF5AFD240D35A8FD0EFF2FFD090D0CFD040D2F
%0D2F2F5A2F5A2F2F0D2FFD040D06FD240D5A597E5A7E592FFD240D0635A8
%FD10FF59FD6C0D5AFD13FF7E0D060D0D0D060D0D0D060D0D0D060D0D0D06
%0D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D
%0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D06
%0D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D06FD040D84FD15
%FFA85AFD660D2FFD19FF840D0D0CFD5F0D060D7EFD1CFF5AFD600D7EFD1F
%FFA85AFD040D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D
%060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D
%0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D
%060D060D53AFFD23FF5AFD580D5AA8FD26FFA97EFD500D0C0D0D2F5AFD2C
%FF845AFD4E0D59A9FD31FF7E590D0D0C0D060D0D0D060D0D0D060D0D0D06
%0D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D
%0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D2F84A8FD36
%FF845AFD410D365AA9AFFD3CFF84842F2FFD040D0CFD2F0D06FD040D5A5A
%A9AFFD43FFA97E5A2FFD300D365984A8FD4CFFA8A97E5A2F2FFD040D060D
%0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D
%2F5A598484FD58FFA9A97E845A5A2F5A2F360D360D2F0D2F0D0D0D360D2F
%0D360D362F5A5A7E5AA9A8AFAFFD66FFAFFFA8AFA8AFA8A984A9A8AFA8AF
%A8FDFCFFFDFCFFFDFCFFFDFCFFFD70FFA9FD17FFA9FD33FFA9FD0FFF7E0D
%0D2FFF842F0D2FA85A2FFF2F5AFF5A0D0D2FFFA8350D0D7EFF0D5AFD05FF
%A92F2F0DA8FF2F0D0D59FFFFFF842F0D2F84FF530D0D7EA82F0D0D7EFFA8
%0D53FFFF5A06A97E2FA8FD04FF350DFFFF840D5AA82FA87E0D2F0D84FFFF
%FFA90D2F0D7EFFFF0D5AFFFF5A0D0D2F7E2F0D0D0D842F5AFF352FFD06FF
%0D5A840DA95A0DAF0DA95936FF3635FF0D84840DA8840DFF2F36FF0D59FD
%05FF590DA9362FFF0D7EA9FD04FF5A0DFF0D5AA80D845A0DAF0D84A8FFFF
%840D36FFFF350D5A840DFD04FFAF0D0DA8FF7E0D2FAF0DFF5A0DA8352FFF
%FFFFA80D5AAFA9FF7E0D0DFFFF5A0DA90D5AFF5A0DA9FF3635FF0D5AFD06
%FF2F0DFFA8FF0D5AFFA9A95A0DFF0D5AA80D84FF0DA9590DFF5A0DFF0D5A
%FD05FF5A2FFF2F35AF0D5AFD05FF0D5AFF352FA80DAFFFA9840D7EFFFFFF
%2F350DA9FF5A0D5A5A0DAFFFFFFF59350D5AFF840D2F7E0DA85A0DFF590D
%FFFFFFA90DA8FFFFFF5A2F0D7EFF590DFF0D59FF590DFFFF0D5AFF2F2FFD
%06FFAF0D0DFFFF352FFFFFFF2F0D2F0D59FF0DA9A80DA87E0DFF5A0DFF2F
%5AFD05FF2F36FF5A2FFF0D0D0D84FFFFFF3635FF2F5A840DA8FFFFA90D35
%2FA9FF2FA8355AFF35362F5A0DFD04FF355A842FFF5A362F5A0DFF5A0DFF
%7E0DFFFFFFA80D0D3684FF0DA92F5AFF7E0D350DA9FF5A0DFFFF360D360D
%5AFD07FFAF2F0DFF2F59FFFFFF590DAF0D5AA80D84AF06A9590DFF5A0DFF
%0D5AFD05FF350DFF2F2FA80D59AFA8FFFFFF0D5AFF2F2FA80DA9FFFFA80D
%59FFFF84065A0D35FF5A2F5A0D2FFD04FF0D352F0DFF7E0D5A0D0DA85A0D
%FF590DFFFFFFA90D7EA8FF840D2F0D0DFF590D590D59FF590DFFFF0D35A8
%2F2FFD06FF2FA9FF0D84362FFF2FA95936FF3659FF0DA9A90DA87E0DFF5A
%0DFF355AFD05FF2F36FF5A2FFF0D84FD05FF362FFF2F5AA80DA9852FA90D
%A9FFFF592F59360DFF355A5A0D2FFFFFFF840D2F5A0DAF7E36840D0DFF5A
%0DFF5A0DFFFFFFA80D84FFFF7E0D5A2F0DFF7E0DFF0D5AFF5A0DFFFF362F
%FF2F5AFD06FF350D590DFF590D2F0D845A0DFF0D35FF2F0D350DFF7E0D2F
%0D2FFF0D0D2F7EFFFFFF7E0D5A0D5AFF0D5AFD05FF590D2F0D5AFF0D350D
%35A80D0D5A7E0D53FFA80D845A2FA9060DFFFFFF5A0DFFFF0D59840DFF0D
%0DA87E0D350D5AFFFFFFA90D2F2F842F35FFFF0D84590DFF0D53FF590DFF
%FF0D35FF2F2FFD06FFA9845AAFFFFF7E7E84FF8484FFA984FFA9845AAFFF
%FFA87E7EFFFF845A7E84FD04FFA95985FFFF7EAFFD06FF7E7E84FFFFFF5A
%84A9FF7E7E5AA97EAFFFFF7EAF84A9FF847EFFFFFF7EA9FFFF7EA9A984FF
%A97EFFA8845AA9FD04FFA9845A7E8485A8FFFF84A8A97EFF84A9FFA97EFF
%FFA984FF7EA9FDFCFFFD0BFF5A5A5AFFFFFF5A5A5AFFA87EA8FF5A5A5984
%A87E5AFF847EFFFF7E5A59AFFF7E595A59FD05FFA85A84FFFFA95984FFA8
%5AFF7E7E597E84FFFFFFA97E597E597EA97E595A59FFA87E5984FFA95AFF
%FF7E84FF5A7EA9AF59FFFFA9595A7EFFFF7E7EFFFFFFA97E597EA8FFFF84
%595A7EFF845AA8FFA85AA8FD06FF2F0D590D59FF2F0D5A0D59A90DA9840D
%2F5A5AA90D0DA97E0DFF5A0D5A0D0DFF0D0D2F5AFD05FF5A065AFFFF5A0D
%0DFF2F0DFF5A0D5A0D0DA8FFFFFF59360D3559FF0D0D2F5AAF2F0D5A0D84
%7E0DA8FF0D7EFF0D0CA9A80DA8AF0D362F0D7EFF0D5AFFFFFF5A0D5A0D36
%FF840D5A2F0D84FF0D7EFF362FFD07FF0D0DFF5A7EA90D2FFF59847E0D84
%A806A9FFFF7E0D0D7E590DAF2F0DFF7E5AA80D53FD07FF0D2F0DAFFF7E06
%0D7E5A0DFF2F0DFF840684FD04FF7E0D84FFA80D59FFFFA9067EFF5A7E84
%06FFFF0D59FF0D0D2FA80DAF590DA8FF065AFF0D2FFFFFFF065AFF5A06FF
%590DFFFF2FA8FF5A0D8406A9FD07FF840D2FFFFFFF0D5AFFFFFFA90DA984
%0D5984A8A90D5A35840DFF2F36FD04FF0D365A85FD04FF840D840D7EFF7E
%35355A5936FF5A0DFF840D84FD04FF840DA9FFFF0D367EA9A80D7EFFFFFF
%7E0D5A840D84FF0D2F367E0DA9850DAFFF0D59FF0D5AFFFFAF0D59FF5A0D
%FF7E0DFFAFFFFFFFA80D0D5AFD09FFA80D0DA9FF0D2FFFFFFF7E0D84A80C
%362F847E0D5A2F2F0DFF350DFFFFFFA80D0D5A59FD04FF5A0DAF0D5AFF7E
%0D840D350DFF2F0DFFA90D84FD04FF5A0D7EFFA80D0D5A59A90D7EFFFFFF
%7E065A590D59FF0D7E0D5A0DAF7E0DA8FF0D5AFF0D2FFFFFFF0D5AFF5A06
%FF590DA8360D84FFFF2F0D7EFD08FF7EAFFF0D0DFF0D5AFFA9A8A90DA9A8
%0DA8FFFF840DA92F0D0DFF2F0DFFAF84FF0D5AFD06FF0D2F2F0D0DFF7E0D
%A8360D2FFF5A0DFF840D84FD04FF840DA9FFFF0D84FFFFA80D7EFF7EFF7E
%0DA9FF0D7EFF0D7E5A0D2FA9840DFFFF0D2FFF0D5AFFFFFF0D59FF5A0DFF
%7E0DFFA80D7EFFFF7E0DAFFD08FF0D0DAF0D0DA80D0DA9065A840D7EA806
%5A84AF7E0DA85A060DFF360DA90D0DA80D2FA984FFFFFF7E0D5AFF5A0D84
%840DFF2F0D0DFF2F0D843506A9FD04FF5A0D7EFFA80D2FA984A9065A840D
%598406A9A90D59FF06847E0D06FF7E0D59A8065AFF0D2FA884FF0D0DA835
%0DFF590D7E84067EFFFF530DA8FD08FF7E360D3684FF84360D36A8A90DAF
%A8350D355AA90DFF840D2FFFA8360D367EFF2F360D36FFFFFF7E0DFFFFFF
%0D858435FF850D5AFF840D352F84FD05FF840DA9FFFF2F360D36FF842F35
%2FFF8435A8FF0D84FF3684FF0D36A9FF59360D5AAFFF2F350D36FFA90D36
%2FA9FFFF59352F3684FFFF840DAFFDFCFFFD75FFA8FD28FFA8FFFFFFA8FD
%0BFFA8FD0FFFA8FD0BFFAFFD1DFFA9FD0BFFA8A8A8FD15FFA87D84A8FF7D
%7D7DFFA87DFFFF7D7E7DFF7D7DA8FF7D597DFFA87D7DFFA87DFFAF537DFF
%FF7D7DA8FD04FFA8527DA8FF7D7DA8FD04FFA87D7DA8FFA87DA8FFFD047D
%A8FF7D7DFFFF7DA8FF7EA8FF7DA8FD04FFA87DA8FF7D7D7DFD05FF538459
%A8FFFF53A8FFFF537D7DFFA87D52FFFFA852A9FD07FF7D847DA8FF84597D
%FFFF7DFFFF7D7DFFFFA859FFFFA852A8FFFF7D84FFA87DFFFFA8A8FFFF7E
%7DFD05FF7DA87DA8FF7E7DFD05FF7E7D7DFFFFA852A8FFA8537D7DFFFF7D
%53FFFF84A8FFA8FFFF7DA8FD04FFA852A8FFFF7DFD06FF7D537DA8FF7E7D
%7DFFA87D53A8FFA87D7E7DFF7E597DFD07FFAF527DA8FF7D8459FFA87DFF
%FF7D7DFFFF7D7D84FF7D7D7DFFA87D7DFF847DFFFF7DA8FFFF7DA8FD05FF
%A8527DA8FF7DA8FD05FFA87D7EA8FF597D7DFFA87D7D7DFFA87D7D7DFF7D
%A8FD04FF53AFFD04FF7D7D53FFFF7DA8FD05FF597D7DA8FF7D7D7DFFA87D
%7D7DFFA87D59AFFF7D7D7DFFFFFFFF
%%EndData
+%ADOEndClientInjection: DocumentHeader "AI11EPS"
%%Pages: 1
+%%DocumentNeededResources:
+%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0
+%%+ procset Adobe_CoolType_Utility_T42 1.0 0
+%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%+ procset Adobe_CoolType_Core 2.31 0
+%%+ procset Adobe_AGM_Core 2.0 0
+%%+ procset Adobe_AGM_Utils 1.0 0
+%%DocumentFonts:
+%%DocumentNeededFonts:
+%%DocumentNeededFeatures:
+%%DocumentSuppliedFeatures:
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentCustomColors: (PANTONE 307 C)
+%%CMYKCustomColor: 1 0.5020 0.1922 0.0236 (PANTONE 307 C)
+%%RGBCustomColor:
%%EndComments
+
+
+
+
+
+
+%%BeginDefaults
+%%ViewingOrientation: 1 0 0 1
+%%EndDefaults
%%BeginProlog
-/DSC_OPDFREAD true def
-/SetPageSize true def
-/EPS2Write false def
-currentdict/DSC_OPDFREAD known{
-currentdict/DSC_OPDFREAD get
-}{
-false
-}ifelse
-10 dict begin
-/DSC_OPDFREAD exch def
-/this currentdict def
-/y 720 def
-/ebuf 200 string def
-/prnt{
-36//this/y get moveto//ebuf cvs show
-//this/y 2 copy get 12 sub put
-}bind def
-/newline{
-36//this/y get moveto
-//this/y 2 copy get 12 sub put
-}bind def
-errordict/handleerror
-{systemdict begin
-$error begin
-newerror
-{(%%[ Error handled by opdfread.ps : )print errorname//ebuf cvs print(; OffendingCommand: )
-print/command load//ebuf cvs print( ]%%)= flush
-/newerror false store vmstatus pop pop 0 ne
-{grestoreall
-}if
-errorname(VMerror)ne
-{showpage
-}if
-initgraphics
-0 720 moveto
-errorname(VMerror)eq
-{//this/ehsave known
-{clear//this/ehsave get restore 2 vmreclaim
-}if
-vmstatus exch pop exch pop
-}
-/Courier 12 selectfont
+%%BeginResource: procset Adobe_AGM_Utils 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{currentpacking true setpacking}if
+userdict/Adobe_AGM_Utils 75 dict dup begin put
+/bdf
+{bind def}bind def
+/nd{null def}bdf
+/xdf
+{exch def}bdf
+/ldf
+{load def}bdf
+/ddf
+{put}bdf
+/xddf
+{3 -1 roll put}bdf
+/xpt
+{exch put}bdf
+/ndf
{
-(ERROR: )//prnt exec errorname//prnt exec
-(OFFENDING COMMAND: )//prnt exec
-/command load//prnt exec
-$error/ostack known{
-(%%[STACK:)=
-(STACK:)//prnt exec
-$error/ostack get aload length{
-//newline exec
-dup mark eq{
-(-mark-)dup = show
-}{
-dup type/nametype eq{
-dup xcheck not{
-(/)show
-(/)print
-}if
-}if
-dup =//ebuf cvs show
-}ifelse
-}repeat
-}if
-}ifelse
-(%%]%)=
-//systemdict/showpage get exec
-quit
-}if
-end
-end
-}bind readonly put
-end
-50 dict begin
-/DefaultSwitch
+ exch dup where{
+ pop pop pop
+ }{
+ xdf
+ }ifelse
+}def
+/cdndf
{
-dup where{
-pop pop
-}{
-false def
-}ifelse
-}bind def
-/=string 256 string def
-/=only{
-//=string cvs print
-}bind def
-/HexDigits(0123456789ABCDEF)readonly def
-/PrintHex
-{8{
-dup -28 bitshift 15 and//HexDigits exch 1 getinterval//=only exec
-4 bitshift
-}repeat
-pop
-}bind def
-/PDFR_DEBUG DefaultSwitch
-/PDFR_DUMP DefaultSwitch
-/PDFR_STREAM DefaultSwitch
-/TTFDEBUG DefaultSwitch
-/RotatePages DefaultSwitch
-/FitPages DefaultSwitch
-/CenterPages DefaultSwitch
-/SetPageSize DefaultSwitch
-/error
+ exch dup currentdict exch known{
+ pop pop
+ }{
+ exch def
+ }ifelse
+}def
+/gx
+{get exec}bdf
+/ps_level
+ /languagelevel where{
+ pop systemdict/languagelevel gx
+ }{
+ 1
+ }ifelse
+def
+/level2
+ ps_level 2 ge
+def
+/level3
+ ps_level 3 ge
+def
+/ps_version
+ {version cvr}stopped{-1}if
+def
+/set_gvm
+{currentglobal exch setglobal}bdf
+/reset_gvm
+{setglobal}bdf
+/makereadonlyarray
{
-counttomark 1 sub -1 0{
-index dup type/arraytype eq{==}{=only}ifelse
-}for
-()=
-cleartomark
-....Undefined
-}bind def
-//SetPageSize{
-//RotatePages//FitPages or//CenterPages or{
-mark(/RotatePages, /FitPages and CenterPages are not allowed with /SetPageSize)//error exec
-}if
-}
+ /packedarray where{pop packedarray
+ }{
+ array astore readonly}ifelse
+}bdf
+/map_reserved_ink_name
{
-//FitPages//CenterPages and{
-mark(CenterPages is not allowed with /FitPages)//error exec
-}if
-}
-ifelse
-/knownget
+ dup type/stringtype eq{
+ dup/Red eq{
+ pop(_Red_)
+ }{
+ dup/Green eq{
+ pop(_Green_)
+ }{
+ dup/Blue eq{
+ pop(_Blue_)
+ }{
+ dup()cvn eq{
+ pop(Process)
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+}bdf
+/AGMUTIL_GSTATE 22 dict def
+/get_gstate
{
-2 copy known{
-get true
-}{
-pop pop false
-}ifelse
-}bind def
-/IsUpper
-{dup(A)0 get ge exch(Z)0 get le and
-}bind def
-/cpa2g{
-dup length array
-0 1 2 index length 1 sub{
-dup 3 index exch get cp2g
-3 copy put pop pop
-}for
-exch pop
-}bind def
-/cpd2g{
-dup length dict exch{
-cp2g 2 index 3 1 roll put
-}forall
-}bind def
-/cps2g{
-dup length string copy
-}bind def
-/cp2gprocs
-<</arraytype//cpa2g/dicttype//cpd2g/packedarraytype//cpa2g/stringtype//cps2g >>
-def
-/cp2g{
-dup gcheck not{
-dup//cp2gprocs 1 index type
-2 copy known{
-get currentglobal 3 1 roll true setglobal exec exch setglobal
-1 index wcheck not{readonly}if
-1 index xcheck{cvx}if
-exch pop
-}{
-pop pop
-}ifelse
-}if
-}bind def
-/BlockBuffer 65535 string def
-/PDFReader currentdict def
-/ObjectRegistryMaxLength 50000 def
-/ObjectRegistry 10 dict def
-ObjectRegistry
-begin 0 ObjectRegistryMaxLength dict def end
-/CurrentObject null def
-/DoneDocumentStructure false def
-/GraphicState 20 dict begin
-/InitialTextMatrix matrix def
-/InitialMatrix matrix currentmatrix def
-currentdict end def
-/TempMatrix matrix def
-/GraphicStateStack 20 array def
-/GraphicStateStackPointer 0 def
-/InitialTextMatrixStack 20 array def
-/InitialTextMatrixStackPointer 0 def
-/PDFColorSpaces 50 dict def
-/InstalledFonts 50 dict def
-/MacRomanEncodingInverse null def
-currentglobal false setglobal
-userdict/PDFR_InitialGS gstate put
-userdict/PDFR_Patterns 50 dict put
-userdict/FuncDataReader 10 dict put
-setglobal
-/InitialExtGState 20 dict begin
-/BG2 currentblackgeneration cp2g def
-/UCR2 currentundercolorremoval cp2g def
-/TR2 currentglobal false setglobal[currentcolortransfer]exch setglobal cp2g def
-/HT currenthalftone cp2g def
-currentdict end readonly def
-/InitialGraphicState 20 dict begin
-/FontSize 0 def
-/CharacterSpacing 0 def
-/TextLeading 0 def
-/TextRenderingMode 0 def
-/WordSpacing 0 def
-currentdict end readonly def
-/SimpleColorSpaceNames 15 dict begin
-/DeviceGray true def
-/DeviceRGB true def
-/DeviceCMYK true def
-currentdict end readonly def
-/1_24_bitshift_1_sub 1 24 bitshift 1 sub def
-/ReadFontProcs 10 dict def
-/GetObject{
-dup ObjectRegistryMaxLength idiv
-//PDFReader /ObjectRegistry get exch knownget
-{exch knownget}{pop false}ifelse
-}bind def
-/PutObject
-{1 index ObjectRegistryMaxLength idiv
-//PDFReader /ObjectRegistry get 1 index knownget{
-exch pop 3 1 roll put}{
-//PDFReader /ObjectRegistry get dup begin
-1 index ObjectRegistryMaxLength dict def
-end exch get 3 1 roll put
-}ifelse
-}bind def
-/Register
-{1 index GetObject{
-dup xcheck{
-4 3 roll pop
-//PDFR_DEBUG{
-(Have a daemon for ) print 2 index ==
-}if
-exec
-}{
-dup null ne{
-mark (The object ) 4 index (is already defined : ) 4 index //error exec
-}{
-pop
-}ifelse
-3 2 roll
-exec
-}ifelse
-}{
-3 2 roll
-exec
-}ifelse
-PutObject
-} bind def
-/IsRegistered{
-GetObject{
-null ne
-}{
-false
-}ifelse
-}bind def
-/GetRegistered{
-dup GetObject not{
-exch mark exch (Object ) exch ( isn't defined before needed (1).) //error exec
-}if
-dup xcheck{
-exch mark exch (Object ) exch ( isn't defined before needed (2).) //error exec
-}{
-dup null eq{
-exch mark exch (Object ) exch ( isn't defined before needed (3).) //error exec
-}if
-exch pop
-}ifelse
-}bind def
-/StandardFontNames<<
-/Times-Roman true
-/Helvetica true
-/Courier true
-/Symbol true
-/Times-Bold true
-/Helvetica-Bold true
-/Courier-Bold true
-/ZapfDingbats true
-/Times-Italic true
-/Helvetica-Oblique true
-/Courier-Oblique true
-/Times-BoldItalic true
-/Helvetica-BoldOblique true
-/Courier-BoldOblique true
->>def
-/CleanAllResources
-{//PDFR_DEBUG{
-(CleanAllResources beg)=
-}if
-//PDFReader/ObjectRegistry get{
-dup length 0 exch 1 exch 1 sub{
-2 copy get dup xcheck{
-pop pop
-}{
-dup null eq{
-pop pop
-}{
-dup type/dicttype eq{/.Global known}{pop false}ifelse{
-pop
-}{
-//PDFR_DEBUG{
-(Dropping )print dup =
-}if
-1 index exch/DroppedObject put
-}ifelse
-}ifelse
-}ifelse
-}for
-pop
-}forall
-FontDirectory length dict begin
-FontDirectory{
-pop
-dup//StandardFontNames exch known not{
-dup null def
-}if
-pop
-}forall
-currentdict
-end{
-pop
-//PDFR_DEBUG{
-(Undefining font )print dup =
-}if
-undefinefont
-}forall
-//PDFR_DEBUG{
-(CleanAllResources end)=
-}if
-}bind def
-/PrintReference
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_clr_spc currentcolorspace def
+ /AGMUTIL_GSTATE_clr_indx 0 def
+ /AGMUTIL_GSTATE_clr_comps 12 array def
+ mark currentcolor counttomark
+ {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop
+ /AGMUTIL_GSTATE_fnt rootfont def
+ /AGMUTIL_GSTATE_lw currentlinewidth def
+ /AGMUTIL_GSTATE_lc currentlinecap def
+ /AGMUTIL_GSTATE_lj currentlinejoin def
+ /AGMUTIL_GSTATE_ml currentmiterlimit def
+ currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf
+ /AGMUTIL_GSTATE_sa currentstrokeadjust def
+ /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def
+ /AGMUTIL_GSTATE_op currentoverprint def
+ /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def
+ /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def
+ currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf
+ cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf
+ /AGMUTIL_GSTATE_ht currenthalftone def
+ /AGMUTIL_GSTATE_flt currentflat def
+ end
+}def
+/set_gstate
{
-//PDFR_DEBUG{
-({ )print
-dup{
-=only( )print
-}forall
-( })=
-}if
-}bind def
-/R
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_clr_spc setcolorspace
+ AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor
+ AGMUTIL_GSTATE_fnt setfont
+ AGMUTIL_GSTATE_lw setlinewidth
+ AGMUTIL_GSTATE_lc setlinecap
+ AGMUTIL_GSTATE_lj setlinejoin
+ AGMUTIL_GSTATE_ml setmiterlimit
+ AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash
+ AGMUTIL_GSTATE_sa setstrokeadjust
+ AGMUTIL_GSTATE_clr_rnd setcolorrendering
+ AGMUTIL_GSTATE_op setoverprint
+ AGMUTIL_GSTATE_bg cvx setblackgeneration
+ AGMUTIL_GSTATE_ucr cvx setundercolorremoval
+ AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx
+ AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer
+ AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or
+ {
+ currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne
+ {
+ mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark
+ }if
+ }{
+ AGMUTIL_GSTATE_ht sethalftone
+ }ifelse
+ AGMUTIL_GSTATE_flt setflat
+ end
+}def
+/get_gstate_and_matrix
{
-0 ne{
-exch mark exch(A referred object generation )exch( isn't 0.)//error exec
-}if
-[
-exch//GetRegistered/exec load
-]cvx
-//PrintReference exec
-}bind def
-/IsObjRef
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_ctm matrix currentmatrix def
+ end
+ get_gstate
+}def
+/set_gstate_and_matrix
{
-dup type/arraytype eq{
-dup length 3 eq{
-dup xcheck exch
-dup 0 get type/integertype eq 3 2 roll and exch
-dup 1 get//GetRegistered eq 3 2 roll and exch
-2 get/exec load eq and
-}{
-pop false
-}ifelse
-}{
-pop false
-}ifelse
-}bind def
-/DoNothing
+ set_gstate
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_ctm setmatrix
+ end
+}def
+/AGMUTIL_str256 256 string def
+/AGMUTIL_src256 256 string def
+/AGMUTIL_dst64 64 string def
+/AGMUTIL_srcLen nd
+/AGMUTIL_ndx nd
+/AGMUTIL_cpd nd
+/capture_cpd{
+ //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf
+}def
+/thold_halftone
+{
+ level3
+ {sethalftone currenthalftone}
+ {
+ dup/HalftoneType get 3 eq
+ {
+ sethalftone currenthalftone
+ }{
+ begin
+ Width Height mul{
+ Thresholds read{pop}if
+ }repeat
+ end
+ currenthalftone
+ }ifelse
+ }ifelse
+}def
+/rdcmntline
+{
+ currentfile AGMUTIL_str256 readline pop
+ (%)anchorsearch{pop}if
+}bdf
+/filter_cmyk
+{
+ dup type/filetype ne{
+ exch()/SubFileDecode filter
+ }{
+ exch pop
+ }
+ ifelse
+ [
+ exch
+ {
+ AGMUTIL_src256 readstring pop
+ dup length/AGMUTIL_srcLen exch def
+ /AGMUTIL_ndx 0 def
+ AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{
+ 1 index exch get
+ AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put
+ /AGMUTIL_ndx AGMUTIL_ndx 1 add def
+ }for
+ pop
+ AGMUTIL_dst64 0 AGMUTIL_ndx getinterval
+ }
+ bind
+ /exec cvx
+ ]cvx
+}bdf
+/filter_indexed_devn
{
+ cvi Names length mul names_index add Lookup exch get
+}bdf
+/filter_devn
+{
+ 4 dict begin
+ /srcStr xdf
+ /dstStr xdf
+ dup type/filetype ne{
+ 0()/SubFileDecode filter
+ }if
+ [
+ exch
+ [
+ /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx
+ currentdict/srcStr get/readstring cvx/pop cvx
+ /dup cvx/length cvx 0/gt cvx[
+ Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx
+ names_index Names length currentdict/srcStr get length 1 sub{
+ 1/index cvx/exch cvx/get cvx
+ currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx
+ Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx
+ }for
+ currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx
+ ]cvx/if cvx
+ /end cvx
+ ]cvx
+ bind
+ /exec cvx
+ ]cvx
+ end
+}bdf
+/AGMUTIL_imagefile nd
+/read_image_file
+{
+ AGMUTIL_imagefile 0 setfileposition
+ 10 dict begin
+ /imageDict xdf
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ /imbufIdx 0 def
+ /origDataSource imageDict/DataSource get def
+ /origMultipleDataSources imageDict/MultipleDataSources get def
+ /origDecode imageDict/Decode get def
+ /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def
+ imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ {
+ /imbufCnt imageDict/DataSource get length def
+ /imbufs imbufCnt array def
+ 0 1 imbufCnt 1 sub{
+ /imbufIdx xdf
+ imbufs imbufIdx imbufLen string put
+ imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put
+ }for
+ DeviceN_PS2{
+ imageDict begin
+ /DataSource[DataSource/devn_sep_datasource cvx]cvx def
+ /MultipleDataSources false def
+ /Decode[0 1]def
+ end
+ }if
+ }{
+ /imbuf imbufLen string def
+ Indexed_DeviceN level3 not and DeviceN_NoneName or{
+ /srcDataStrs[imageDict begin
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi string
+ }repeat
+ end]def
+ imageDict begin
+ /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def
+ /Decode[0 1]def
+ end
+ }{
+ imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put
+ imageDict/Decode[0 1]put
+ }ifelse
+ }ifelse
+ imageDict exch
+ load exec
+ imageDict/DataSource origDataSource put
+ imageDict/MultipleDataSources origMultipleDataSources put
+ imageDict/Decode origDecode put
+ end
+}bdf
+/write_image_file
+{
+ begin
+ {(AGMUTIL_imagefile)(w+)file}stopped{
+ false
+ }{
+ Adobe_AGM_Utils/AGMUTIL_imagefile xddf
+ 2 dict begin
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{
+ /imbuf imbufLen string def
+ }if
+ 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{
+ pop
+ MultipleDataSources{
+ 0 1 DataSource length 1 sub{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exch gx
+ }{
+ /filetype eq{
+ DataSource exch get imbuf readstring pop
+ }{
+ DataSource exch get
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }for
+ }{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exec
+ }{
+ /filetype eq{
+ DataSource imbuf readstring pop
+ }{
+ DataSource
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }ifelse
+ }for
+ end
+ true
+ }ifelse
+ end
+}bdf
+/close_image_file
+{
+ AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile
}def
-/RunTypeDaemon
+statusdict/product known userdict/AGMP_current_show known not and{
+ /pstr statusdict/product get def
+ pstr(HP LaserJet 2200)eq
+ pstr(HP LaserJet 4000 Series)eq or
+ pstr(HP LaserJet 4050 Series )eq or
+ pstr(HP LaserJet 8000 Series)eq or
+ pstr(HP LaserJet 8100 Series)eq or
+ pstr(HP LaserJet 8150 Series)eq or
+ pstr(HP LaserJet 5000 Series)eq or
+ pstr(HP LaserJet 5100 Series)eq or
+ pstr(HP Color LaserJet 4500)eq or
+ pstr(HP Color LaserJet 4600)eq or
+ pstr(HP LaserJet 5Si)eq or
+ pstr(HP LaserJet 1200 Series)eq or
+ pstr(HP LaserJet 1300 Series)eq or
+ pstr(HP LaserJet 4100 Series)eq or
+ {
+ userdict/AGMP_current_show/show load put
+ userdict/show{
+ currentcolorspace 0 get
+ /Pattern eq
+ {false charpath f}
+ {AGMP_current_show}ifelse
+ }put
+ }if
+ currentdict/pstr undef
+}if
+/consumeimagedata
{
-dup type/dicttype eq{
-dup/Type//knownget exec{
-//PDFReader/TypeDaemons get exch
-//knownget exec{
-exec
-}if
-}if
-}if
-}bind def
-/obj
+ begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known not
+ {/MultipleDataSources false def}if
+ MultipleDataSources
+ {
+ DataSource 0 get type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width cvi string def
+ 1 1 Height cvi
+ {
+ pop
+ 0 1 DataSource length 1 sub
+ {
+ DataSource exch get
+ flushbuffer readstring pop pop
+ }for
+ }for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and
+ {
+ Width Height mul cvi
+ {
+ 0 1 DataSource length 1 sub
+ {dup DataSource exch gx length exch 0 ne{pop}if}for
+ dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }
+ {
+ /DataSource load type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width Decode length 2 idiv mul cvi string def
+ 1 1 Height{pop DataSource flushbuffer readstring pop pop}for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and
+ {
+ Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul
+ {
+ DataSource length dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }ifelse
+ end
+}bdf
+/addprocs
{
-//PDFR_DEBUG{
-(Defining )print 1 index =only( )print dup =only( obj)=
-}if
-0 ne{
-exch mark exch(An object generation )exch( isn't 0.)//error exec
-}if
-}bind def
-/endobj
+ 2{/exec load}repeat
+ 3 1 roll
+ [5 1 roll]bind cvx
+}def
+/modify_halftone_xfer
{
-//PDFR_DEBUG{
-(endobj )=
-}if
-count 1 eq {pop} {dup type/dicttype eq{
-dup/.endobj_daemon//knownget exec{
-//PDFR_DEBUG{(.endobj_daemon for )print 2 index =}if
-exec
-}if
-}if
-dup type/dicttype eq{dup/ImmediateExec known}{false}ifelse{
-pop pop
-}{
-//PDFR_DEBUG{
-(Storing )print 1 index =
-}if
-//RunTypeDaemon exec
-//DoNothing 3 1 roll//Register exec
-}ifelse
-}ifelse}bind def
-/StoreBlock
+ currenthalftone dup length dict copy begin
+ currentdict 2 index known{
+ 1 index load dup length dict copy begin
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end def
+ currentdict end sethalftone
+ }{
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end sethalftone
+ pop
+ }ifelse
+}def
+/clonearray
{
-//PDFR_DEBUG{
-(StoreBlock )print//PDFReader/BlockCount get =only(, Length = )print dup length =
-}if
-dup length string copy
-//PDFReader/BlockCount get exch
-//PDFReader/CurrentObject get 3 1 roll
-put
-//PDFReader/BlockCount get 1 add
-//PDFReader exch/BlockCount exch put
-}bind def
-/CheckLength
-{dup type/integertype ne{
-mark(Object length isn't an integer.)//error exec
-}if
-}bind def
-/ResolveD
+ dup xcheck exch
+ dup length array exch
+ Adobe_AGM_Core/AGMCORE_tmp -1 ddf
+ {
+ Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf
+ dup type/dicttype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get
+ exch
+ clonedict
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ dup type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get exch
+ clonearray
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ exch dup
+ Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put
+ }forall
+ exch{cvx}if
+}bdf
+/clonedict
{
-3 copy pop get
-dup//IsObjRef exec{
-//PDFR_DEBUG{
-(Resolving )print//PrintReference exec
-}if
-exec
-exch exec
-}{
-exch pop
-}ifelse
-dup 4 1 roll
-put
-}bind def
-/ResolveA
-{2 index 2 index get
-dup//IsObjRef exec{
-exec
-exch exec
-3 copy put
-}{
-exch pop
-}ifelse
-exch pop exch pop
-}bind def
-/StoreStream
+ dup length dict
+ begin
+ {
+ dup type/dicttype eq
+ {clonedict}if
+ dup type/arraytype eq
+ {clonearray}if
+ def
+ }forall
+ currentdict
+ end
+}bdf
+/DeviceN_PS2
{
-dup//PDFReader exch/CurrentObject exch put
-//PDFReader/BlockCount 0 put
-dup/Length//CheckLength//ResolveD exec
-//PDFR_DEBUG{
-(StoreStream Length = )print dup =
-}if
-currentfile exch()/SubFileDecode filter
-{dup//BlockBuffer readstring{
-//StoreBlock exec
-}{
-//StoreBlock exec
-exit
-}ifelse
-}loop
-pop
-//PDFReader/CurrentObject null put
-//PDFR_DEBUG{
-(StoreStream end.)=
-}if
-}bind def
-/MakeStreamDumper
+ /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and
+}bdf
+/Indexed_DeviceN
{
-//PDFR_DEBUG{
-(MakeStreamDumper beg.)=
-}if
-currentglobal exch dup gcheck setglobal
-[exch
-1 dict dup/c 0 put exch
-1024 string
-{readstring pop
-(StreamDumper )print 1 index/c get =string cvs print( )print
-dup length =string cvs print( <)print dup print(>\n)print
-dup length
-3 2 roll
-dup/c get
-3 2 roll
-add/c exch put
-}/exec load
-]
-cvx 0()/SubFileDecode filter
-exch setglobal
-//PDFR_DEBUG{
-(MakeStreamDumper end.)=
-}if
-}bind def
-/ShortFilterNames 15 dict begin
-/AHx/ASCIIHexDecode def
-/A85/ASCII85Decode def
-/LZW/LZWDecode def
-/Fl/FlateDecode def
-/RL/RunLengthDecode def
-/CCF/CCITTFaxDecode def
-/DCT/DCTDecode def
-currentdict end readonly def
-/AppendFilters
+ /indexed_colorspace_dict AGMCORE_gget dup null ne{
+ dup/CSDBase known{
+ /CSDBase get/CSD get_res/Names known
+ }{
+ pop false
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}bdf
+/DeviceN_NoneName
+{
+ /Names where{
+ pop
+ false Names
+ {
+ (None)eq or
+ }forall
+ }{
+ false
+ }ifelse
+}bdf
+/DeviceN_PS2_inRip_seps
{
-//PDFR_DEBUG{
-(AppendFilters beg.)=
-}if
-dup 3 1 roll
-/Filter//knownget exec{
-dup type/nametype eq{
-dup//ShortFilterNames exch//knownget exec{
-exch pop
-}if
-2 index/DecodeParms//knownget exec{
-exch
-}if
-filter
-}{
-dup 0 exch 1 exch length 1 sub{
-2 copy get
-dup//ShortFilterNames exch//knownget exec{
-exch pop
-}if
-3 1 roll
-4 index/DecodeParms//knownget exec{
-exch get
-}{
-pop null
-}ifelse
-dup null eq{
-pop 3 1 roll filter exch
-}{
-3 1 roll
-4 1 roll filter exch
-}ifelse
-}for
-pop
-}ifelse
-//PDFR_DEBUG//PDFR_DUMP and{
-//MakeStreamDumper exec
-}if
-}if
-exch pop
-//PDFR_DEBUG{
-(AppendFilters end.)=
-}if
-}bind def
-/ExecuteStream
+ /AGMCORE_in_rip_sep where
+ {
+ pop dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and
+ {
+ /currentcolorspace exch AGMCORE_gput
+ false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+}bdf
+/base_colorspace_type
{
-dup//PDFReader exch/CurrentObject exch put
-dup/Length//CheckLength//ResolveD exec
-//PDFR_DEBUG{
-(ExecuteStream id = )print 2 index =only( Length = )print dup =
-}if
-//PDFReader/InitialGraphicState get
-//PDFReader/GraphicState get copy pop
-//PDFReader/Operators get begin
-currentfile exch ()/SubFileDecode filter
-1 index//AppendFilters exec
-cvx mark exch
-exec
-counttomark 0 ne{
-mark(Data left on ostack after an immediate stream execution.)//error exec
-}if
-cleartomark
-end
-//PDFR_DEBUG{
-(ExecuteStream end.)=
-}if
-//PDFReader/CurrentObject null put
-dup/IsPage known{
-dup/Context get/NumCopies//knownget exec{
-1 sub{
-copypage
-}repeat
-}if
-EPS2Write not {showpage} if
-}if
-}bind def
-/stream
+ dup type/arraytype eq{0 get}if
+}bdf
+/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
{
-//PDFR_DEBUG{
-1 index =only( stream)=
-}if
-1 index GetObject{
-dup xcheck{
-exec
-1 index null PutObject
-}{
-pop
-}ifelse
-}if
-dup/ImmediateExec known{
-dup/GlobalExec//knownget exec{
-currentglobal 4 1 roll
-setglobal
-//ExecuteStream exec
-3 2 roll setglobal
-}{
-//ExecuteStream exec
-}ifelse
+ /pdfmark_5{cleartomark}bind def
}{
-//StoreStream exec
+ /pdfmark_5{pdfmark}bind def
}ifelse
-dup/.CleanResources//knownget exec{
-/All eq{
-//CleanAllResources exec
-}if
-}if
-}bind def
-/HookFont
+/ReadBypdfmark_5
{
-//PDFR_DEBUG{
-(Loaded the font )print dup/FontName get =
-}if
+ currentfile exch 0 exch/SubFileDecode filter
+ /currentdistillerparams where
+ {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+ {flushfile cleartomark}
+ {/PUT pdfmark}ifelse
+}bdf
+/ReadBypdfmark_5_string
{
-dup/FontFileType get dup/Type1 eq exch/MMType1 eq or{
-dup/FontName get
-//PDFReader/RemoveFontNamePrefix get exec
-findfont
-exit
-}if
-dup/FontFileType get/TrueType eq{
-//PDFReader/MakeType42 get exec
-//PDFR_DEBUG{
-(Font dict <<)=
-dup{
-1 index/sfnts eq{
-exch pop
-(/sfnts [)print
+ 2 dict begin
+ /makerString exch def string/tmpString exch def
+ {
+ currentfile tmpString readline not{pop exit}if
+ makerString anchorsearch
+ {
+ pop pop cleartomark exit
+ }{
+ 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5
+ }ifelse
+ }loop
+ end
+}bdf
+/xpdfm
{
-(-string\()print length//=only exec(\)- )=
-}forall
-(])=
-}{
-exch//=only exec( )print ==
-}ifelse
-}forall
-(>>)=
-}if
-dup/FontName get exch definefont
-exit
-}if
-mark(FontHook has no proc for )2 index/FontFileType get//error exec
-}loop
-/Font exch put
-}bind def
-/endstream
+ {
+ dup 0 get/Label eq
+ {
+ aload length[exch 1 add 1 roll/PAGELABEL
+ }{
+ aload pop
+ [{ThisPage}<<5 -2 roll>>/PUT
+ }ifelse
+ pdfmark_5
+ }forall
+}bdf
+/lmt{
+ dup 2 index le{exch}if pop dup 2 index ge{exch}if pop
+}bdf
+/int{
+ dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop
+}bdf
+/ds{
+ Adobe_AGM_Utils begin
+}bdf
+/dt{
+ currentdict Adobe_AGM_Utils eq{
+ end
+ }if
+}bdf
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_AGM_Core 2.0 0
+%%Version: 2.0 0
+%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
{
-}bind def
-/xref
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Core 209 dict dup begin put
+/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def
+/AGMCORE_str256 256 string def
+/AGMCORE_save nd
+/AGMCORE_graphicsave nd
+/AGMCORE_c 0 def
+/AGMCORE_m 0 def
+/AGMCORE_y 0 def
+/AGMCORE_k 0 def
+/AGMCORE_cmykbuf 4 array def
+/AGMCORE_screen[currentscreen]cvx def
+/AGMCORE_tmp 0 def
+/AGMCORE_&setgray nd
+/AGMCORE_&setcolor nd
+/AGMCORE_&setcolorspace nd
+/AGMCORE_&setcmykcolor nd
+/AGMCORE_cyan_plate nd
+/AGMCORE_magenta_plate nd
+/AGMCORE_yellow_plate nd
+/AGMCORE_black_plate nd
+/AGMCORE_plate_ndx nd
+/AGMCORE_get_ink_data nd
+/AGMCORE_is_cmyk_sep nd
+/AGMCORE_host_sep nd
+/AGMCORE_avoid_L2_sep_space nd
+/AGMCORE_distilling nd
+/AGMCORE_composite_job nd
+/AGMCORE_producing_seps nd
+/AGMCORE_ps_level -1 def
+/AGMCORE_ps_version -1 def
+/AGMCORE_environ_ok nd
+/AGMCORE_CSD_cache 0 dict def
+/AGMCORE_currentoverprint false def
+/AGMCORE_deltaX nd
+/AGMCORE_deltaY nd
+/AGMCORE_name nd
+/AGMCORE_sep_special nd
+/AGMCORE_err_strings 4 dict def
+/AGMCORE_cur_err nd
+/AGMCORE_current_spot_alias false def
+/AGMCORE_inverting false def
+/AGMCORE_feature_dictCount nd
+/AGMCORE_feature_opCount nd
+/AGMCORE_feature_ctm nd
+/AGMCORE_ConvertToProcess false def
+/AGMCORE_Default_CTM matrix def
+/AGMCORE_Default_PageSize nd
+/AGMCORE_Default_flatness nd
+/AGMCORE_currentbg nd
+/AGMCORE_currentucr nd
+/AGMCORE_pattern_paint_type 0 def
+/knockout_unitsq nd
+currentglobal true setglobal
+[/CSA/Gradient/Procedure]
{
-//PDFR_DEBUG{
-(xref)=
-//PDFR_DUMP{
-//PDFReader/ObjectRegistry get ==
-}if
-}if
-end
-count 0 ne{
-mark(Excessive data on estack at the end of the interpretation.)//error exec
-}if
-currentfile 1(%%EOF)/SubFileDecode filter
-flushfile
-cleardictstack
-}bind def
-/ResolveDict
-{dup{
-pop 1 index exch
-//DoNothing//ResolveD exec
-pop
+ /Generic/Category findresource dup length dict copy/Category defineresource pop
}forall
-pop
-}bind def
-/SetupPageView
+setglobal
+/AGMCORE_key_known
{
-//PDFR_DEBUG{
-(SetupPageView beg)=
-}if
-//DSC_OPDFREAD not{
-//GraphicState/InitialMatrix get setmatrix
-}if
-/MediaBox get aload pop
-3 index neg 3 index neg translate
-3 -1 roll sub 3 1 roll exch sub exch
-userdict/.HWMargins//knownget exec{
-aload pop
-}{
-currentpagedevice/.HWMargins//knownget exec{
-aload pop
-}{
-0 0 0 0
-}ifelse
-}ifelse
-currentpagedevice/PageSize get aload pop
-3 -1 roll sub 3 1 roll exch sub exch
-exch 3 index sub exch 3 index sub
-//SetPageSize{
-//PDFR_DEBUG{
-(Setting page size to )print 1 index//=only exec( )print dup =
-}if
-pop pop 3 index 3 index 2 copy
-currentglobal false setglobal 3 1 roll
-currentpagedevice dup /PageSize known{
-/PageSize get aload pop}{
-0 0}ifelse
-round cvi 2 index round cvi eq
-exch round cvi 3 index round cvi eq and{
-//PDFR_DEBUG{(PageSize matches request) == flush}if
-pop pop}{
-/MediaRequested where {
-//PDFR_DEBUG{(MediaRequested is true, check against new request) == flush}if
-/MediaRequested get aload pop
-round cvi 2 index round cvi eq
-exch round cvi 3 index round cvi eq and
-{//PDFR_DEBUG{(MediaRequested same as current request, ignore) == flush}if pop pop false}
-{//PDFR_DEBUG{(MediaRequested different to current request) == flush}if true}ifelse
-}{
-//PDFR_DEBUG{(No MediaRequested yet) == flush}if
-true
-}ifelse
+ where{
+ /Adobe_AGM_Core_Id known
+ }{
+ false
+ }ifelse
+}ndf
+/flushinput
{
-//PDFR_DEBUG{(Setting pagesize) == flush}if
-2 array astore
-dup /MediaRequested exch def
-<< exch /PageSize exch >> setpagedevice
-/pagesave save def
-}if
-}ifelse
-userdict/PDFR_InitialGS gstate put
-setglobal
-}if
-//RotatePages{
-2 copy gt 6 index 6 index gt ne{
-1 index 5 index le 1 index 5 index le and not
-}{
-false
-}ifelse
-}{
-false
-}ifelse
-{//CenterPages{
-//PDFR_DEBUG{
-(Rotating page, and then centering it)==
-}if
-90 rotate
-0 5 index neg translate
-5 index 1 index exch sub 2 div
-2 index 6 index sub 2 div neg
-translate
-}{
-//FitPages{
-1 index 5 index div 1 index 7 index div
-2 copy gt{
-exch
-}if
-pop dup scale
-}if
-90 rotate
-0 5 index neg translate
-}ifelse
-}{
-//CenterPages{
-//PDFR_DEBUG{
-(Ccentering page)==
-}if
-1 index 6 index sub 2 div
-1 index 6 index sub 2 div
-translate
-}{
-//FitPages{
-1 index 6 index div 1 index 6 index div
-2 copy gt{
-exch
-}if
-pop dup scale
-}if
-}ifelse
-}ifelse
-pop pop
-translate
-pop pop
-//PDFR_DEBUG{
-(SetupPageView end)=
-}if
-}bind def
-/PageContentsDaemon
+ save
+ 2 dict begin
+ /CompareBuffer 3 -1 roll def
+ /readbuffer 256 string def
+ mark
+ {
+ currentfile readbuffer{readline}stopped
+ {cleartomark mark}
+ {
+ not
+ {pop exit}
+ if
+ CompareBuffer eq
+ {exit}
+ if
+ }ifelse
+ }loop
+ cleartomark
+ end
+ restore
+}bdf
+/getspotfunction
{
-//PDFR_DEBUG{
-(Executing PageContentsDaemon for )print 2 index =
-}if
-1 index exch/Context exch put
-dup/ImmediateExec true put
-dup/IsPage true put
-SetPageSize {dup/Context get//SetupPageView exec}if
-}bind def
-/FontFileDaemon
+ AGMCORE_screen exch pop exch pop
+ dup type/dicttype eq{
+ dup/HalftoneType get 1 eq{
+ /SpotFunction get
+ }{
+ dup/HalftoneType get 2 eq{
+ /GraySpotFunction get
+ }{
+ pop
+ {
+ abs exch abs 2 copy add 1 gt{
+ 1 sub dup mul exch 1 sub dup mul add 1 sub
+ }{
+ dup mul exch dup mul add 1 exch sub
+ }ifelse
+ }bind
+ }ifelse
+ }ifelse
+ }if
+}def
+/np
+{newpath}bdf
+/clp_npth
+{clip np}def
+/eoclp_npth
+{eoclip np}def
+/npth_clp
+{np clip}def
+/graphic_setup
{
-//PDFR_DEBUG{
-(Executing FontFileDaemon for )print 2 index =
-}if
-dup/FontFileType get
-2 index exch
-dup//ReadFontProcs exch//knownget exec{
-exch pop exec
-}{
-mark(FontFile reader for )2 index( isn't implemented yet.)//error exec
-}ifelse
-//PDFR_DEBUG{
-(FontFileDaemon end)=
-}if
-pop
-}bind def
-/FontDescriptorDaemon
+ /AGMCORE_graphicsave save store
+ concat
+ 0 setgray
+ 0 setlinecap
+ 0 setlinejoin
+ 1 setlinewidth
+ []0 setdash
+ 10 setmiterlimit
+ np
+ false setoverprint
+ false setstrokeadjust
+ //Adobe_AGM_Core/spot_alias gx
+ /Adobe_AGM_Image where{
+ pop
+ Adobe_AGM_Image/spot_alias 2 copy known{
+ gx
+ }{
+ pop pop
+ }ifelse
+ }if
+ /sep_colorspace_dict null AGMCORE_gput
+ 100 dict begin
+ /dictstackcount countdictstack def
+ /showpage{}def
+ mark
+}def
+/graphic_cleanup
{
-//PDFR_DEBUG{
-(Executing FontDescriptorDaemon for )print 2 index =
-}if
-2 copy/FontResource exch put
-/Subtype get 1 index exch/FontFileType exch put
-}bind def
-/UnPDFEscape{
-dup dup length string cvs
-dup(#)search{
+ cleartomark
+ dictstackcount 1 countdictstack 1 sub{end}for
+ end
+ AGMCORE_graphicsave restore
+}def
+/compose_error_msg
{
-pop
-(16#--)2 index 0 2 getinterval
-1 index 3 2 getinterval copy pop
-cvi
-0 exch put
-0
-1 index 2 1 index length 2 sub getinterval
-3 copy putinterval
-length
-3 copy exch put
-getinterval
-(#)search not{
-pop exit
-}if
-}loop
-(\0)search pop exch pop exch pop
-cvn
-exch pop
-}{
-pop pop
-}ifelse
-}bind def
-/TypeDaemons<<
-/Page
-{//PDFR_DEBUG{
-(Recognized a page.)=
-}if
-dup/Contents//knownget exec{
-0 get//DoNothing exch
-[
-3 index//PageContentsDaemon/exec load
-]cvx
-//Register exec
-}{
-(fixme: page with no Contents won't be printed.)=
-}ifelse
-}bind
-/FontDescriptor
-{//PDFR_DEBUG{
-(Recognized a font descriptor.)=
-}if
-dup/FontName//knownget exec{
-1 index/FontName 3 -1 roll//UnPDFEscape exec put
-}if
-dup dup/FontFile known{/FontFile}{/FontFile2}ifelse
-//knownget exec{
-0 get//DoNothing exch
-[
-3 index//FontFileDaemon/exec load
-]cvx
-//Register exec
-}{
-(Font descriptor )print 1 index =only( has no FontFile.)=
-}ifelse
-}bind
-/Font
-{//PDFR_DEBUG{
-(Recognized a font resource.)=
-}if
-dup/BaseFont//knownget exec{
-//UnPDFEscape exec 2 copy/BaseFont exch put
-//PDFReader/RemoveFontNamePrefix get exec
-currentglobal exch
-dup/Font resourcestatus{
-pop pop
-//PDFReader/GetInstalledFont get exec pop
-}{
-pop
-}ifelse
-setglobal
+ grestoreall initgraphics
+ /Helvetica findfont 10 scalefont setfont
+ /AGMCORE_deltaY 100 def
+ /AGMCORE_deltaX 310 def
+ clippath pathbbox np pop pop 36 add exch 36 add exch moveto
+ 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto
+ 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath
+ 0 AGMCORE_&setgray
+ gsave 1 AGMCORE_&setgray fill grestore
+ 1 setlinewidth gsave stroke grestore
+ currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto
+ /AGMCORE_deltaY 12 def
+ /AGMCORE_tmp 0 def
+ AGMCORE_err_strings exch get
+ {
+ dup 32 eq
+ {
+ pop
+ AGMCORE_str256 0 AGMCORE_tmp getinterval
+ stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt
+ {
+ currentpoint AGMCORE_deltaY sub exch pop
+ clippath pathbbox pop pop pop 44 add exch moveto
+ }if
+ AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show
+ 0 1 AGMCORE_str256 length 1 sub
+ {
+ AGMCORE_str256 exch 0 put
+ }for
+ /AGMCORE_tmp 0 def
+ }{
+ AGMCORE_str256 exch AGMCORE_tmp xpt
+ /AGMCORE_tmp AGMCORE_tmp 1 add def
+ }ifelse
+ }forall
+}bdf
+/AGMCORE_CMYKDeviceNColorspaces[
+ [/Separation/None/DeviceCMYK{0 0 0}]
+ [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind]
+ [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind]
+ [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind]
+ [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind]
+ [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind]
+ [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind]
+ [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind]
+ [/Separation(Cyan)/DeviceCMYK{0 0 0}]
+ [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind]
+ [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind]
+ [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind]
+ [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}]
+ [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind]
+ [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}]
+ [/DeviceCMYK]
+]def
+/ds{
+ Adobe_AGM_Core begin
+ /currentdistillerparams where
+ {
+ pop currentdistillerparams/CoreDistVersion get 5000 lt
+ {<</DetectBlends false>>setdistillerparams}if
+ }if
+ /AGMCORE_ps_version xdf
+ /AGMCORE_ps_level xdf
+ errordict/AGM_handleerror known not{
+ errordict/AGM_handleerror errordict/handleerror get put
+ errordict/handleerror{
+ Adobe_AGM_Core begin
+ $error/newerror get AGMCORE_cur_err null ne and{
+ $error/newerror false put
+ AGMCORE_cur_err compose_error_msg
+ }if
+ $error/newerror true put
+ end
+ errordict/AGM_handleerror get exec
+ }bind put
+ }if
+ /AGMCORE_environ_ok
+ ps_level AGMCORE_ps_level ge
+ ps_version AGMCORE_ps_version ge and
+ AGMCORE_ps_level -1 eq or
+ def
+ AGMCORE_environ_ok not
+ {/AGMCORE_cur_err/AGMCORE_bad_environ def}if
+ /AGMCORE_&setgray systemdict/setgray get def
+ level2{
+ /AGMCORE_&setcolor systemdict/setcolor get def
+ /AGMCORE_&setcolorspace systemdict/setcolorspace get def
+ }if
+ /AGMCORE_currentbg currentblackgeneration def
+ /AGMCORE_currentucr currentundercolorremoval def
+ /AGMCORE_Default_flatness currentflat def
+ /AGMCORE_distilling
+ /product where{
+ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and
+ }{
+ false
+ }ifelse
+ def
+ /AGMCORE_GSTATE AGMCORE_key_known not{
+ /AGMCORE_GSTATE 21 dict def
+ /AGMCORE_tmpmatrix matrix def
+ /AGMCORE_gstack 32 array def
+ /AGMCORE_gstackptr 0 def
+ /AGMCORE_gstacksaveptr 0 def
+ /AGMCORE_gstackframekeys 14 def
+ /AGMCORE_&gsave/gsave ldf
+ /AGMCORE_&grestore/grestore ldf
+ /AGMCORE_&grestoreall/grestoreall ldf
+ /AGMCORE_&save/save ldf
+ /AGMCORE_&setoverprint/setoverprint ldf
+ /AGMCORE_gdictcopy{
+ begin
+ {def}forall
+ end
+ }def
+ /AGMCORE_gput{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ 3 1 roll
+ put
+ }def
+ /AGMCORE_gget{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ exch
+ get
+ }def
+ /gsave{
+ AGMCORE_&gsave
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /grestore{
+ AGMCORE_&grestore
+ AGMCORE_gstackptr 1 sub
+ dup AGMCORE_gstacksaveptr lt{1 add}if
+ dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known
+ {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse
+ /AGMCORE_gstackptr exch store
+ }def
+ /grestoreall{
+ AGMCORE_&grestoreall
+ /AGMCORE_gstackptr AGMCORE_gstacksaveptr store
+ }def
+ /save{
+ AGMCORE_&save
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ /AGMCORE_gstacksaveptr AGMCORE_gstackptr store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /setoverprint{
+ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint
+ }def
+ 0 1 AGMCORE_gstack length 1 sub{
+ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put
+ }for
+ }if
+ level3/AGMCORE_&sysshfill AGMCORE_key_known not and
+ {
+ /AGMCORE_&sysshfill systemdict/shfill get def
+ /AGMCORE_&sysmakepattern systemdict/makepattern get def
+ /AGMCORE_&usrmakepattern/makepattern load def
+ }if
+ /currentcmykcolor[0 0 0 0]AGMCORE_gput
+ /currentstrokeadjust false AGMCORE_gput
+ /currentcolorspace[/DeviceGray]AGMCORE_gput
+ /sep_tint 0 AGMCORE_gput
+ /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput
+ /sep_colorspace_dict null AGMCORE_gput
+ /devicen_colorspace_dict null AGMCORE_gput
+ /indexed_colorspace_dict null AGMCORE_gput
+ /currentcolor_intent()AGMCORE_gput
+ /customcolor_tint 1 AGMCORE_gput
+ /absolute_colorimetric_crd null AGMCORE_gput
+ /relative_colorimetric_crd null AGMCORE_gput
+ /saturation_crd null AGMCORE_gput
+ /perceptual_crd null AGMCORE_gput
+ currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf
+ cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf
+ <<
+ /MaxPatternItem currentsystemparams/MaxPatternCache get
+ >>
+ setuserparams
+ end
+}def
+/ps
+{
+ /setcmykcolor where{
+ pop
+ Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put
+ }if
+ Adobe_AGM_Core begin
+ /setcmykcolor
+ {
+ 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput
+ 1 sub 4 1 roll
+ 3{
+ 3 index add neg dup 0 lt{
+ pop 0
+ }if
+ 3 1 roll
+ }repeat
+ setrgbcolor pop
+ }ndf
+ /currentcmykcolor
+ {
+ /currentcmykcolor AGMCORE_gget aload pop
+ }ndf
+ /setoverprint
+ {pop}ndf
+ /currentoverprint
+ {false}ndf
+ /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def
+ /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def
+ /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def
+ /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def
+ /AGMCORE_plate_ndx
+ AGMCORE_cyan_plate{
+ 0
+ }{
+ AGMCORE_magenta_plate{
+ 1
+ }{
+ AGMCORE_yellow_plate{
+ 2
+ }{
+ AGMCORE_black_plate{
+ 3
+ }{
+ 4
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_have_reported_unsupported_color_space false def
+ /AGMCORE_report_unsupported_color_space
+ {
+ AGMCORE_have_reported_unsupported_color_space false eq
+ {
+ (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)==
+ Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf
+ }if
+ }def
+ /AGMCORE_composite_job
+ AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def
+ /AGMCORE_in_rip_sep
+ /AGMCORE_in_rip_sep where{
+ pop AGMCORE_in_rip_sep
+ }{
+ AGMCORE_distilling
+ {
+ false
+ }{
+ userdict/Adobe_AGM_OnHost_Seps known{
+ false
+ }{
+ level2{
+ currentpagedevice/Separations 2 copy known{
+ get
+ }{
+ pop pop false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def
+ /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def
+ /AGM_preserve_spots
+ /AGM_preserve_spots where{
+ pop AGM_preserve_spots
+ }{
+ AGMCORE_distilling AGMCORE_producing_seps or
+ }ifelse
+ def
+ /AGM_is_distiller_preserving_spotimages
+ {
+ currentdistillerparams/PreserveOverprintSettings known
+ {
+ currentdistillerparams/PreserveOverprintSettings get
+ {
+ currentdistillerparams/ColorConversionStrategy known
+ {
+ currentdistillerparams/ColorConversionStrategy get
+ /sRGB ne
+ }{
+ true
+ }ifelse
+ }{
+ false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }def
+ /convert_spot_to_process where{pop}{
+ /convert_spot_to_process
+ {
+ //Adobe_AGM_Core begin
+ dup map_alias{
+ /Name get exch pop
+ }if
+ dup dup(None)eq exch(All)eq or
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ gsave
+ 1 0 0 0 setcmykcolor currentgray 1 exch sub
+ 0 1 0 0 setcmykcolor currentgray 1 exch sub
+ 0 0 1 0 setcmykcolor currentgray 1 exch sub
+ 0 0 0 1 setcmykcolor currentgray 1 exch sub
+ add add add 0 eq
+ {
+ pop false
+ }{
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ }ifelse
+ grestore
+ }{
+ AGMCORE_distilling
+ {
+ pop AGM_is_distiller_preserving_spotimages not
+ }{
+ //Adobe_AGM_Core/AGMCORE_name xddf
+ false
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq
+ AGMUTIL_cpd/OverrideSeparations known and
+ {
+ AGMUTIL_cpd/OverrideSeparations get
+ {
+ /HqnSpots/ProcSet resourcestatus
+ {
+ pop pop pop true
+ }if
+ }if
+ }if
+ {
+ AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not
+ }{
+ gsave
+ [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace
+ false
+ AGMUTIL_cpd/SeparationColorNames 2 copy known
+ {
+ get
+ {AGMCORE_name eq or}forall
+ not
+ }{
+ pop pop pop true
+ }ifelse
+ grestore
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ }ifelse
+ /convert_to_process where{pop}{
+ /convert_to_process
+ {
+ dup length 0 eq
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ dup true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process and}ifelse
+ }
+ forall
+ {
+ true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ (Black)eq or and
+ }forall
+ not
+ }{pop false}ifelse
+ }{
+ false exch
+ {
+ /PhotoshopDuotoneList where{pop false}{true}ifelse
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process or}ifelse
+ }
+ {
+ convert_spot_to_process or
+ }
+ ifelse
+ }
+ forall
+ }ifelse
+ }ifelse
+ }def
+ }ifelse
+ /AGMCORE_avoid_L2_sep_space
+ version cvr 2012 lt
+ level2 and
+ AGMCORE_producing_seps not and
+ def
+ /AGMCORE_is_cmyk_sep
+ AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or
+ def
+ /AGM_avoid_0_cmyk where{
+ pop AGM_avoid_0_cmyk
+ }{
+ AGM_preserve_spots
+ userdict/Adobe_AGM_OnHost_Seps known
+ userdict/Adobe_AGM_InRip_Seps known or
+ not and
+ }ifelse
+ {
+ /setcmykcolor[
+ {
+ 4 copy add add add 0 eq currentoverprint and{
+ pop 0.0005
+ }if
+ }/exec cvx
+ /AGMCORE_&setcmykcolor load dup type/operatortype ne{
+ /exec cvx
+ }if
+ ]cvx def
+ }if
+ /AGMCORE_IsSeparationAProcessColor
+ {
+ dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or
+ }def
+ AGMCORE_host_sep{
+ /setcolortransfer
+ {
+ AGMCORE_cyan_plate{
+ pop pop pop
+ }{
+ AGMCORE_magenta_plate{
+ 4 3 roll pop pop pop
+ }{
+ AGMCORE_yellow_plate{
+ 4 2 roll pop pop pop
+ }{
+ 4 1 roll pop pop pop
+ }ifelse
+ }ifelse
+ }ifelse
+ settransfer
+ }
+ def
+ /AGMCORE_get_ink_data
+ AGMCORE_cyan_plate{
+ {pop pop pop}
+ }{
+ AGMCORE_magenta_plate{
+ {4 3 roll pop pop pop}
+ }{
+ AGMCORE_yellow_plate{
+ {4 2 roll pop pop pop}
+ }{
+ {4 1 roll pop pop pop}
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_RemoveProcessColorNames
+ {
+ 1 dict begin
+ /filtername
+ {
+ dup/Cyan eq 1 index(Cyan)eq or
+ {pop(_cyan_)}if
+ dup/Magenta eq 1 index(Magenta)eq or
+ {pop(_magenta_)}if
+ dup/Yellow eq 1 index(Yellow)eq or
+ {pop(_yellow_)}if
+ dup/Black eq 1 index(Black)eq or
+ {pop(_black_)}if
+ }def
+ dup type/arraytype eq
+ {[exch{filtername}forall]}
+ {filtername}ifelse
+ end
+ }def
+ level3{
+ /AGMCORE_IsCurrentColor
+ {
+ dup AGMCORE_IsSeparationAProcessColor
+ {
+ AGMCORE_plate_ndx 0 eq
+ {dup(Cyan)eq exch/Cyan eq or}if
+ AGMCORE_plate_ndx 1 eq
+ {dup(Magenta)eq exch/Magenta eq or}if
+ AGMCORE_plate_ndx 2 eq
+ {dup(Yellow)eq exch/Yellow eq or}if
+ AGMCORE_plate_ndx 3 eq
+ {dup(Black)eq exch/Black eq or}if
+ AGMCORE_plate_ndx 4 eq
+ {pop false}if
+ }{
+ gsave
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ grestore
+ }ifelse
+ }def
+ /AGMCORE_filter_functiondatasource
+ {
+ 5 dict begin
+ /data_in xdf
+ data_in type/stringtype eq
+ {
+ /ncomp xdf
+ /comp xdf
+ /string_out data_in length ncomp idiv string def
+ 0 ncomp data_in length 1 sub
+ {
+ string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put
+ }for
+ string_out
+ }{
+ string/string_in xdf
+ /string_out 1 string def
+ /component xdf
+ [
+ data_in string_in/readstring cvx
+ [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx
+ [/pop cvx()]cvx/ifelse cvx
+ ]cvx/ReusableStreamDecode filter
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingFunction
+ {
+ 2 dict begin
+ /paint? xdf
+ /channel xdf
+ dup type/dicttype eq
+ {
+ begin
+ FunctionType 0 eq
+ {
+ /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def
+ currentdict/Decode known
+ {/Decode Decode channel 2 mul 2 getinterval def}if
+ paint? not
+ {/Decode[1 1]def}if
+ }if
+ FunctionType 2 eq
+ {
+ paint?
+ {
+ /C0[C0 channel get 1 exch sub]def
+ /C1[C1 channel get 1 exch sub]def
+ }{
+ /C0[1]def
+ /C1[1]def
+ }ifelse
+ }if
+ FunctionType 3 eq
+ {
+ /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def
+ }if
+ currentdict/Range known
+ {/Range[0 1]def}if
+ currentdict
+ end}{
+ channel get 0 paint? AGMCORE_separateShadingFunction
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShading
+ {
+ 3 -1 roll begin
+ currentdict/Function known
+ {
+ currentdict/Background known
+ {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if
+ Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf
+ /ColorSpace[/DeviceGray]def
+ }{
+ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }{
+ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put
+ }ifelse
+ ColorSpace 0 get/Separation eq
+ {
+ {
+ [1/exch cvx/sub cvx]cvx
+ }{
+ [/pop cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll put
+ pop
+ }{
+ {
+ [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx
+ }{
+ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll bind put
+ }ifelse
+ ColorSpace 2/DeviceGray put
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingDict
+ {
+ dup/ColorSpace get
+ dup type/arraytype ne
+ {[exch]}if
+ dup 0 get/DeviceCMYK eq
+ {
+ exch begin
+ currentdict
+ AGMCORE_cyan_plate
+ {0 true}if
+ AGMCORE_magenta_plate
+ {1 true}if
+ AGMCORE_yellow_plate
+ {2 true}if
+ AGMCORE_black_plate
+ {3 true}if
+ AGMCORE_plate_ndx 4 eq
+ {0 false}if
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ currentdict
+ end exch
+ }if
+ dup 0 get/Separation eq
+ {
+ exch begin
+ ColorSpace 1 get dup/None ne exch/All ne and
+ {
+ ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /Separation
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }ifelse
+ }{
+ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor
+ 0 exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ }if
+ currentdict
+ end exch
+ }if
+ dup 0 get/DeviceN eq
+ {
+ exch begin
+ ColorSpace 1 get convert_to_process
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /DeviceN
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ /ColorSpace[/DeviceGray]def
+ }if
+ }ifelse
+ }{
+ currentdict
+ false -1 ColorSpace 1 get
+ {
+ AGMCORE_IsCurrentColor
+ {
+ 1 add
+ exch pop true exch exit
+ }if
+ 1 add
+ }forall
+ exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ currentdict
+ end exch
+ }if
+ dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not
+ {
+ exch begin
+ ColorSpace dup type/arraytype eq
+ {0 get}if
+ /DeviceGray ne
+ {
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ ColorSpace 0 get/CIEBasedA eq
+ {
+ /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def
+ }if
+ ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or
+ {
+ /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def
+ }if
+ ColorSpace 0 get/CIEBasedDEFG eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }if
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }if
+ currentdict
+ end exch
+ }if
+ pop
+ dup/AGMCORE_ignoreshade known
+ {
+ begin
+ /ColorSpace[/Separation(None)/DeviceGray{}]def
+ currentdict end
+ }if
+ }def
+ /shfill
+ {
+ AGMCORE_separateShadingDict
+ dup/AGMCORE_ignoreshade known
+ {pop}
+ {AGMCORE_&sysshfill}ifelse
+ }def
+ /makepattern
+ {
+ exch
+ dup/PatternType get 2 eq
+ {
+ clonedict
+ begin
+ /Shading Shading AGMCORE_separateShadingDict def
+ Shading/AGMCORE_ignoreshade known
+ currentdict end exch
+ {pop<</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if
+ exch AGMCORE_&sysmakepattern
+ }{
+ exch AGMCORE_&usrmakepattern
+ }ifelse
+ }def
+ }if
+ }if
+ AGMCORE_in_rip_sep{
+ /setcustomcolor
+ {
+ exch aload pop
+ dup 7 1 roll inRip_spot_has_ink not {
+ 4{4 index mul 4 1 roll}
+ repeat
+ /DeviceCMYK setcolorspace
+ 6 -2 roll pop pop
+ }{
+ //Adobe_AGM_Core begin
+ /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf
+ end
+ [/Separation 4 -1 roll/DeviceCMYK
+ {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul}
+ ]
+ setcolorspace
+ }ifelse
+ setcolor
+ }ndf
+ /setseparationgray
+ {
+ [/Separation(All)/DeviceGray{}]setcolorspace_opt
+ 1 exch sub setcolor
+ }ndf
+ }{
+ /setseparationgray
+ {
+ AGMCORE_&setgray
+ }ndf
+ }ifelse
+ /findcmykcustomcolor
+ {
+ 5 makereadonlyarray
+ }ndf
+ /setcustomcolor
+ {
+ exch aload pop pop
+ 4{4 index mul 4 1 roll}repeat
+ setcmykcolor pop
+ }ndf
+ /has_color
+ /colorimage where{
+ AGMCORE_producing_seps{
+ pop true
+ }{
+ systemdict eq
+ }ifelse
+ }{
+ false
+ }ifelse
+ def
+ /map_index
+ {
+ 1 index mul exch getinterval{255 div}forall
+ }bdf
+ /map_indexed_devn
+ {
+ Lookup Names length 3 -1 roll cvi map_index
+ }bdf
+ /n_color_components
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop 1
+ }{
+ /DeviceCMYK eq{
+ 4
+ }{
+ 3
+ }ifelse
+ }ifelse
+ }bdf
+ level2{
+ /mo/moveto ldf
+ /li/lineto ldf
+ /cv/curveto ldf
+ /knockout_unitsq
+ {
+ 1 setgray
+ 0 0 1 1 rectfill
+ }def
+ level2/setcolorspace AGMCORE_key_known not and{
+ /AGMCORE_&&&setcolorspace/setcolorspace ldf
+ /AGMCORE_ReplaceMappedColor
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ dup 0 get dup/Separation eq
+ {
+ pop
+ dup length array copy
+ dup dup 1 get
+ current_spot_alias
+ {
+ dup map_alias
+ {
+ false set_spot_alias
+ dup 1 exch setsepcolorspace
+ true set_spot_alias
+ begin
+ /sep_colorspace_dict currentdict AGMCORE_gput
+ pop pop pop
+ [
+ /Separation Name
+ CSA map_csa
+ MappedCSA
+ /sep_colorspace_proc load
+ ]
+ dup Name
+ end
+ }if
+ }if
+ map_reserved_ink_name 1 xpt
+ }{
+ /DeviceN eq
+ {
+ dup length array copy
+ dup dup 1 get[
+ exch{
+ current_spot_alias{
+ dup map_alias{
+ /Name get exch pop
+ }if
+ }if
+ map_reserved_ink_name
+ }forall
+ ]1 xpt
+ }if
+ }ifelse
+ end
+ }if
+ }if
+ }def
+ /setcolorspace
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/Indexed eq
+ {
+ AGMCORE_distilling
+ {
+ /PhotoshopDuotoneList where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ {
+ aload pop 3 -1 roll
+ AGMCORE_ReplaceMappedColor
+ 3 1 roll 4 array astore
+ }if
+ }{
+ AGMCORE_ReplaceMappedColor
+ }ifelse
+ }if
+ DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if
+ }def
+ }if
+ }{
+ /adj
+ {
+ currentstrokeadjust{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ }if
+ }def
+ /mo{
+ adj moveto
+ }def
+ /li{
+ adj lineto
+ }def
+ /cv{
+ 6 2 roll adj
+ 6 2 roll adj
+ 6 2 roll adj curveto
+ }def
+ /knockout_unitsq
+ {
+ 1 setgray
+ 8 8 1[8 0 0 8 0 0]{<ffffffffffffffff>}image
+ }def
+ /currentstrokeadjust{
+ /currentstrokeadjust AGMCORE_gget
+ }def
+ /setstrokeadjust{
+ /currentstrokeadjust exch AGMCORE_gput
+ }def
+ /setcolorspace
+ {
+ /currentcolorspace exch AGMCORE_gput
+ }def
+ /currentcolorspace
+ {
+ /currentcolorspace AGMCORE_gget
+ }def
+ /setcolor_devicecolor
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop setgray
+ }{
+ /DeviceCMYK eq{
+ setcmykcolor
+ }{
+ setrgbcolor
+ }ifelse
+ }ifelse
+ }def
+ /setcolor
+ {
+ currentcolorspace 0 get
+ dup/DeviceGray ne{
+ dup/DeviceCMYK ne{
+ dup/DeviceRGB ne{
+ dup/Separation eq{
+ pop
+ currentcolorspace 3 gx
+ currentcolorspace 2 get
+ }{
+ dup/Indexed eq{
+ pop
+ currentcolorspace 3 get dup type/stringtype eq{
+ currentcolorspace 1 get n_color_components
+ 3 -1 roll map_index
+ }{
+ exec
+ }ifelse
+ currentcolorspace 1 get
+ }{
+ /AGMCORE_cur_err/AGMCORE_invalid_color_space def
+ AGMCORE_invalid_color_space
+ }ifelse
+ }ifelse
+ }if
+ }if
+ }if
+ setcolor_devicecolor
+ }def
+ }ifelse
+ /sop/setoverprint ldf
+ /lw/setlinewidth ldf
+ /lc/setlinecap ldf
+ /lj/setlinejoin ldf
+ /ml/setmiterlimit ldf
+ /dsh/setdash ldf
+ /sadj/setstrokeadjust ldf
+ /gry/setgray ldf
+ /rgb/setrgbcolor ldf
+ /cmyk[
+ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx
+ /setcmykcolor load dup type/operatortype ne{/exec cvx}if
+ ]cvx bdf
+ level3 AGMCORE_host_sep not and{
+ /nzopmsc{
+ 6 dict begin
+ /kk exch def
+ /yy exch def
+ /mm exch def
+ /cc exch def
+ /sum 0 def
+ cc 0 ne{/sum sum 2#1000 or def cc}if
+ mm 0 ne{/sum sum 2#0100 or def mm}if
+ yy 0 ne{/sum sum 2#0010 or def yy}if
+ kk 0 ne{/sum sum 2#0001 or def kk}if
+ AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace
+ sum 0 eq{0}if
+ end
+ setcolor
+ }bdf
+ }{
+ /nzopmsc/cmyk ldf
+ }ifelse
+ /sep/setsepcolor ldf
+ /devn/setdevicencolor ldf
+ /idx/setindexedcolor ldf
+ /colr/setcolor ldf
+ /csacrd/set_csa_crd ldf
+ /sepcs/setsepcolorspace ldf
+ /devncs/setdevicencolorspace ldf
+ /idxcs/setindexedcolorspace ldf
+ /cp/closepath ldf
+ /clp/clp_npth ldf
+ /eclp/eoclp_npth ldf
+ /f/fill ldf
+ /ef/eofill ldf
+ /@/stroke ldf
+ /nclp/npth_clp ldf
+ /gset/graphic_setup ldf
+ /gcln/graphic_cleanup ldf
+ /ct/concat ldf
+ /cf/currentfile ldf
+ /fl/filter ldf
+ /rs/readstring ldf
+ /AGMCORE_def_ht currenthalftone def
+ /clonedict Adobe_AGM_Utils begin/clonedict load end def
+ /clonearray Adobe_AGM_Utils begin/clonearray load end def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+ /getrampcolor
+ {
+ /indx exch def
+ 0 1 NumComp 1 sub
+ {
+ dup
+ Samples exch get
+ dup type/stringtype eq{indx get}if
+ exch
+ Scaling exch get aload pop
+ 3 1 roll
+ mul add
+ }for
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }bdf
+ /sssetbackground{
+ aload pop
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }bdf
+ /RadialShade
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /r2 xdf
+ /c2y xdf
+ /c2x xdf
+ /r1 xdf
+ /c1y xdf
+ /c1x xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ c1x c2x eq
+ {
+ c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope c2y c1y sub c2x c1x sub div def
+ /theta slope 1 atan def
+ c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if
+ c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if
+ }ifelse
+ gsave
+ clippath
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax xdf
+ /xMax xdf
+ /yMin xdf
+ /xMin xdf
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ /max{2 copy gt{pop}{exch pop}ifelse}bdf
+ /min{2 copy lt{pop}{exch pop}ifelse}bdf
+ rampdict begin
+ 40 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def
+ /c1y 0 def
+ /c1x 0 def
+ /c2x 0 def
+ ext0
+ {
+ 0 getrampcolor
+ c2y r2 add r1 sub 0.0001 lt
+ {
+ c1x c1y r1 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2y r1 add r2 le
+ {
+ c1x c1y r1 0 360 arc
+ fill
+ }
+ {
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r1 neg def
+ /p1y c1y def
+ /p2x r1 def
+ /p2y c1y def
+ p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y p1x SS1 div neg def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y p2x SS2 div neg def
+ r1 r2 gt
+ {
+ /L1maxX p1x yMin p1y sub SS1 div add def
+ /L2maxX p2x yMin p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ c1x c2x sub dup mul
+ c1y c2y sub dup mul
+ add 0.5 exp
+ 0 dtransform
+ dup mul exch dup mul add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ /hires xdf
+ hires mul
+ /numpix xdf
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ /xInc c2x c1x sub numsteps div def
+ /yInc c2y c1y sub numsteps div def
+ /rInc r2 r1 sub numsteps div def
+ /cx c1x def
+ /cy c1y def
+ /radius r1 def
+ np
+ xInc 0 eq yInc 0 eq rInc 0 eq and and
+ {
+ 0 getrampcolor
+ cx cy radius 0 360 arc
+ stroke
+ NumSamples 1 sub getrampcolor
+ cx cy radius 72 hires div add 0 360 arc
+ 0 setlinewidth
+ stroke
+ }{
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ cx cy radius 0 360 arc
+ /cx cx xInc add def
+ /cy cy yInc add def
+ /radius radius rInc add def
+ cx cy radius 360 0 arcn
+ eofill
+ rampIndxInc add
+ }repeat
+ pop
+ }ifelse
+ ext1
+ {
+ c2y r2 add r1 lt
+ {
+ c2x c2y r2 0 360 arc
+ fill
+ }{
+ c2y r1 add r2 sub 0.0001 le
+ {
+ c2x c2y r2 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r2 neg def
+ /p1y c2y def
+ /p2x r2 def
+ /p2y c2y def
+ p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y c2y p1x SS1 div sub def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y c2y p2x SS2 div sub def
+ r1 r2 lt
+ {
+ /L1maxX p1x yMax p1y sub SS1 div add def
+ /L2maxX p2x yMax p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+ /GenStrips
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /y2 xdf
+ /x2 xdf
+ /y1 xdf
+ /x1 xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ x1 x2 eq
+ {
+ y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope y2 y1 sub x2 x1 sub div def
+ /theta slope 1 atan def
+ x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if
+ x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if
+ }
+ ifelse
+ gsave
+ clippath
+ x1 y1 translate
+ theta rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax exch def
+ /xMax exch def
+ /yMin exch def
+ /xMin exch def
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ rampdict begin
+ 20 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ x1 y1 translate
+ theta rotate
+ /xStart 0 def
+ /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def
+ /ySpan yMax yMin sub def
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ xStart 0 transform
+ xEnd 0 transform
+ 3 -1 roll
+ sub dup mul
+ 3 1 roll
+ sub dup mul
+ add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ mul
+ /numpix xdf
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ ext0
+ {
+ 0 getrampcolor
+ xMin xStart lt
+ {
+ xMin yMin xMin neg ySpan rectfill
+ }if
+ }if
+ /xInc xEnd xStart sub numsteps div def
+ /x xStart def
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ x yMin xInc ySpan rectfill
+ /x x xInc add def
+ rampIndxInc add
+ }repeat
+ pop
+ ext1{
+ xMax xEnd gt
+ {
+ xEnd yMin xMax xEnd sub ySpan rectfill
+ }if
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+}def
+/pt
+{
+ end
+}def
+/dt{
+}def
+/pgsv{
+ //Adobe_AGM_Core/AGMCORE_save save put
+}def
+/pgrs{
+ //Adobe_AGM_Core/AGMCORE_save get restore
+}def
+systemdict/findcolorrendering known{
+ /findcolorrendering systemdict/findcolorrendering get def
}if
-dup/FontDescriptor//knownget exec{
-0 get
-dup//IsRegistered exec{
-//PDFR_DEBUG{
-(already registered )print dup =
+systemdict/setcolorrendering known{
+ /setcolorrendering systemdict/setcolorrendering get def
}if
-pop
-}{
-//DoNothing exch
-[
-3 index//FontDescriptorDaemon/exec load
-]cvx
-//Register exec
-}ifelse
-}if
-}bind
->>def
-/MakeStreamReader
-{dup
-[
-exch
-//PDFR_DEBUG{
-(Stream proc )
-/print load
-//PDFR_STREAM{
-(<)
-/print load
-}if
-}if
-1 dict dup/i -1 put
-/dup load
-/i
-/get load
-1
-/add load
-/dup load
-3
-1
-/roll load
-/i
-/exch load
-/put load
-//knownget
-/exec load
-/not load
-{()}
-/if load
-//PDFR_DEBUG{
-//PDFR_STREAM{
-/dup load
-/print load
-(>)
-/print load
-}if
-( end of stream proc.\n)
-/print load
-}if
-]cvx
-//PDFR_DEBUG{
-(Stream reader )print dup ==
-}if
-0()/SubFileDecode filter
-exch//AppendFilters exec
-}bind def
-/RunDelayedStream
+/test_cmyk_color_plate
{
-//GraphicState/InitialTextMatrix get
-//InitialTextMatrixStack//PDFReader/InitialTextMatrixStackPointer get
-2 copy get null eq{
-2 copy currentglobal true setglobal matrix exch setglobal put
-}if
-get copy pop
-//PDFReader/InitialTextMatrixStackPointer 2 copy get 1 add put
-//MakeStreamReader exec
-mark exch
-cvx exec
-counttomark 0 ne{
-mark(Data left on ostack after a delayed stream execution.)//error exec
-}if
-cleartomark
-//PDFReader/InitialTextMatrixStackPointer 2 copy get 1 sub put
-//InitialTextMatrixStack//PDFReader/InitialTextMatrixStackPointer get get
-//GraphicState/InitialTextMatrix get
-copy pop
-}bind def
-//ReadFontProcs begin
-/Type1
-{//PDFR_DEBUG{
-(ReadFontProcs.Type1)=
-}if
-dup/.endobj_daemon[4 index//HookFont/exec load]cvx put
-dup/ImmediateExec true put
-/GlobalExec true put
-}bind def
-/MMType1//Type1 def
-/TrueType
-{//PDFR_DEBUG{
-(ReadFontProcs.TrueType)=
-}if
-dup/.endobj_daemon[4 index//HookFont/exec load]cvx put
-pop
-}bind def
-end
-/.opdloadttfontdict 50 dict def
-.opdloadttfontdict begin
-/maxstring 65400 def
-end
-/.InsertionSort
+ gsave
+ setcmykcolor currentgray 1 ne
+ grestore
+}def
+/inRip_spot_has_ink
{
-/CompareProc exch def
-/Array exch def
-1 1 Array length 1 sub
+ dup//Adobe_AGM_Core/AGMCORE_name xddf
+ convert_spot_to_process not
+}def
+/map255_to_range
{
-/Ix exch def
-/Value1 Array Ix get def
-/Jx Ix 1 sub def
+ 1 index sub
+ 3 -1 roll 255 div mul add
+}def
+/set_csa_crd
{
-Jx 0 lt{
-exit
-}if
-/Value2 Array Jx get def
-Value1 Value2 CompareProc{
-exit
-}if
-Array Jx 1 add Value2 put
-/Jx Jx 1 sub def
-}loop
-Array Jx 1 add Value1 put
-}for
-Array
-}bind def
-/putu16{
-3 copy -8 bitshift put
-exch 1 add exch 16#ff and put
-}bind def
-/putu32{
-3 copy -16 bitshift putu16
-exch 2 add exch 16#ffff and putu16
-}bind def
-/.readtable{
-dup dup 1 and add string
-dup 0 4 -1 roll getinterval
-3 -1 roll exch
-dup()ne{readstring}if pop pop
-}bind def
-/.readbigtable{
-dup maxstring lt{
-.readtable
-}{
-currentuserparams/VMReclaim get -2 vmreclaim
-[4 2 roll{
-dup maxstring le{exit}if
-1 index maxstring string readstring pop 3 1 roll maxstring sub
-}loop .readtable]
-exch vmreclaim
-}ifelse
-}bind def
-/ReadTTF
+ /sep_colorspace_dict null AGMCORE_gput
+ begin
+ CSA get_csa_by_name setcolorspace_opt
+ set_crd
+ end
+}
+def
+/map_csa
{
-.opdloadttfontdict begin
-/TTFontFile exch def
-/TableDir TTFontFile 12 string readstring pop def
-/tables TTFontFile TableDir 4 getu16 16 mul string readstring pop def
-/tabarray tables length 16 idiv array def
-TableDir 0 4 getinterval(ttcf)eq{
-QUIET not{(Can't handle TrueType font Collections.)=}if
-/.loadttfonttables cvx/invalidfont signalerror
-}{
-0 16 tables length 1 sub{
-dup
-tables exch 16 getinterval
-exch 16 div cvi exch
-tabarray 3 1 roll put
-}for
-}ifelse
-tabarray{exch 8 getu32 exch 8 getu32 gt}.InsertionSort pop
-/Read TableDir length tables length add def
-/tabs[
-tabarray{
-dup 8 getu32
-Read sub
-dup 0 gt{
-dup string TTFontFile exch readstring pop pop
-Read add/Read exch def
-}{
-pop
-}ifelse
-12 getu32
-dup Read add
-/Read exch def
-TTFontFile exch .readbigtable
-}forall
-]def
-end
-}bind def
-/GetLocaType
+ currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse
+ {pop}{get_csa_by_name/MappedCSA xdf}ifelse
+}def
+/setsepcolor
{
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(head)eq{
-tabs exch get
-50 gets16
-/LocaType exch def
-exit
-}{
-pop
-}ifelse
-}for
-}bind def
-/GetNumGlyphs
+ /sep_colorspace_dict AGMCORE_gget begin
+ dup/sep_tint exch AGMCORE_gput
+ TintProc
+ end
+}def
+/setdevicencolor
{
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(maxp)eq{
-tabs exch get
-4 getu16
-/NumGlyphs exch def
-exit
-}{
-pop
-}ifelse
-}for
-}bind def
-/StringToLoca
+ /devicen_colorspace_dict AGMCORE_gget begin
+ Names length copy
+ Names length 1 sub -1 0
+ {
+ /devicen_tints AGMCORE_gget 3 1 roll xpt
+ }for
+ TintProc
+ end
+}def
+/sep_colorspace_proc
{
-/LocaIndex exch def
-/StringOffset 0 def
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ currentdict/Components known{
+ Components aload pop
+ TintMethod/Lab eq{
+ 2{AGMCORE_tmp mul NComponents 1 roll}repeat
+ LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll
+ }{
+ TintMethod/Subtractive eq{
+ NComponents{
+ AGMCORE_tmp mul NComponents 1 roll
+ }repeat
+ }{
+ NComponents{
+ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll
+ }repeat
+ }ifelse
+ }ifelse
+ }{
+ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get
+ aload pop
+ }ifelse
+ end
+}def
+/sep_colorspace_gray_proc
{
-dup length StringOffset gt{
-dup
-LocaType 1 eq{
-StringOffset getu32
-LocaArray LocaIndex 3 -1 roll put
-/LocaIndex LocaIndex 1 add def
-/StringOffset StringOffset 4 add
-def
-}{
-StringOffset getu16 2 mul
-LocaArray length LocaIndex gt {LocaArray LocaIndex 3 -1 roll put}{pop}ifelse/LocaIndex LocaIndex 1 add def
-/StringOffset StringOffset 2 add
-def
-}ifelse
-}{
-pop
-LocaIndex
-exit
-}ifelse
-}loop
-}bind def
-/GetSortedLoca
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get
+ end
+}def
+/sep_proc_name
{
-NumGlyphs 1 add array/LocaArray exch def
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(loca)eq{
-tabs exch get
-exit
-}{
-pop
-}ifelse
-}for
-dup type/stringtype eq{
-0 StringToLoca pop
-}{
-0 exch
+ dup 0 get
+ dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{
+ pop[/DeviceGray]
+ /sep_colorspace_gray_proc
+ }{
+ /sep_colorspace_proc
+ }ifelse
+}def
+/setsepcolorspace
{
-exch StringToLoca
-}forall
-pop
-}ifelse
-LocaArray{gt}.InsertionSort pop
-}bind def
-/GetWorkingString
+ current_spot_alias{
+ dup begin
+ Name map_alias{
+ exch pop
+ }if
+ end
+ }if
+ dup/sep_colorspace_dict exch AGMCORE_gput
+ begin
+ CSA map_csa
+ /AGMCORE_sep_special Name dup()eq exch(All)eq or store
+ AGMCORE_avoid_L2_sep_space{
+ [/Indexed MappedCSA sep_proc_name 255 exch
+ {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx
+ ]setcolorspace_opt
+ /TintProc{
+ 255 mul round cvi setcolor
+ }bdf
+ }{
+ MappedCSA 0 get/DeviceCMYK eq
+ currentdict/Components known and
+ AGMCORE_sep_special not and{
+ /TintProc[
+ Components aload pop Name findcmykcustomcolor
+ /exch cvx/setcustomcolor cvx
+ ]cvx bdf
+ }{
+ AGMCORE_host_sep Name(All)eq and{
+ /TintProc{
+ 1 exch sub setseparationgray
+ }bdf
+ }{
+ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and
+ AGMCORE_host_sep or
+ Name()eq and{
+ /TintProc[
+ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{
+ cvx/setcmykcolor cvx
+ }{
+ cvx/setgray cvx
+ }ifelse
+ ]cvx bdf
+ }{
+ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{
+ /TintProc[
+ /dup cvx
+ MappedCSA sep_proc_name cvx exch
+ 0 get/DeviceGray eq{
+ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx
+ }if
+ /Name cvx/findcmykcustomcolor cvx/exch cvx
+ AGMCORE_host_sep{
+ AGMCORE_is_cmyk_sep
+ /Name cvx
+ /AGMCORE_IsSeparationAProcessColor load/exec cvx
+ /not cvx/and cvx
+ }{
+ Name inRip_spot_has_ink not
+ }ifelse
+ [
+ /pop cvx 1
+ ]cvx/if cvx
+ /setcustomcolor cvx
+ ]cvx bdf
+ }{
+ /TintProc{setcolor}bdf
+ [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ set_crd
+ setsepcolor
+ end
+}def
+/additive_blend
{
-WorkString 0
-GlyfArray GlyfStringIndex get
-putinterval
-/WorkBytes GlyfArray GlyfStringIndex get length def
-/GlyfStringIndex GlyfStringIndex 1 add def
-}bind def
-/GetWorkingBytes
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1
+ 0 1 numarrays 1 sub
+ {
+ 1 exch add/index cvx
+ c1/get cvx/mul cvx
+ }for
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/subtractive_blend
{
-/BytesToRead exch def
-WorkString 0 BytesToRead getinterval
-dup length string copy
-WorkString BytesToRead WorkBytes BytesToRead sub getinterval
-dup length string copy
-WorkString 0 3 -1 roll putinterval
-/WorkBytes WorkBytes BytesToRead sub def
-}bind def
-/GetGlyfBytes
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1 1
+ 0 1 numarrays 1 sub
+ {
+ 1 3 3 -1 roll add/index cvx
+ c1/get cvx/sub cvx/mul cvx
+ }for
+ /sub cvx
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/exec_tint_transform
{
-/ToRead exch def
-WorkBytes 0 eq{
-GetWorkingString
-}if
-WorkBytes ToRead ge{
-ToRead string dup 0
-ToRead GetWorkingBytes putinterval
-}{
-ToRead string
-dup
-0
-WorkString 0 WorkBytes getinterval
-putinterval
-dup
-WorkBytes
-ToRead WorkBytes sub
-GetWorkingString
-GetWorkingBytes
-putinterval
-}ifelse
-}bind def
-/SplitGlyf
+ /TintProc[
+ /TintTransform cvx/setcolor cvx
+ ]cvx bdf
+ MappedCSA setcolorspace_opt
+}bdf
+/devn_makecustomcolor
{
-/GlyfArray exch def
-/DestArray GlyfArray length 2 mul array def
-/DestArrayIndex 0 def
-/LastLoca 0 def
-/NextLocaIndex 0 def
-/LastLocaIndex 0 def
-/GlyfStringIndex 0 def
-/WorkString maxstring string def
-/WorkBytes 0 def
+ 2 dict begin
+ /names_index xdf
+ /Names xdf
+ 1 1 1 1 Names names_index get findcmykcustomcolor
+ /devicen_tints AGMCORE_gget names_index get setcustomcolor
+ Names length{pop}repeat
+ end
+}bdf
+/setdevicencolorspace
{
-LocaArray NextLocaIndex get
-LastLoca sub maxstring gt
+ dup/AliasedColorants known{false}{true}ifelse
+ current_spot_alias and{
+ 7 dict begin
+ /names_index 0 def
+ dup/names_len exch/Names get length def
+ /new_names names_len array def
+ /new_LookupTables names_len array def
+ /alias_cnt 0 def
+ dup/Names get
+ {
+ dup map_alias{
+ exch pop
+ dup/ColorLookup known{
+ dup begin
+ new_LookupTables names_index ColorLookup put
+ end
+ }{
+ dup/Components known{
+ dup begin
+ new_LookupTables names_index Components put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ new_names names_index 3 -1 roll/Name get put
+ /alias_cnt alias_cnt 1 add def
+ }{
+ /name xdf
+ new_names names_index name put
+ dup/LookupTables known{
+ dup begin
+ new_LookupTables names_index LookupTables names_index get put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ alias_cnt 0 gt{
+ /AliasedColorants true def
+ /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def
+ 0 1 names_len 1 sub{
+ /names_index xdf
+ new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{
+ /AliasedColorants false def
+ exit
+ }{
+ new_LookupTables names_index get 0 get null eq{
+ dup/Names get names_index get/name xdf
+ name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq
+ or or or not{
+ /AliasedColorants false def
+ exit
+ }if
+ }if
+ }ifelse
+ }for
+ lut_entry_len 1 eq{
+ /AliasedColorants false def
+ }if
+ AliasedColorants{
+ dup begin
+ /Names new_names def
+ /LookupTables new_LookupTables def
+ /AliasedColorants true def
+ /NComponents lut_entry_len def
+ /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def
+ /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def
+ currentdict/TTTablesIdx known not{
+ /TTTablesIdx -1 def
+ }if
+ end
+ }if
+ }if
+ end
+ }if
+ dup/devicen_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/AliasedColorants known{
+ AliasedColorants
+ }{
+ false
+ }ifelse
+ dup not{
+ CSA map_csa
+ }if
+ /TintTransform load type/nulltype eq or{
+ /TintTransform[
+ 0 1 Names length 1 sub
+ {
+ /TTTablesIdx TTTablesIdx 1 add def
+ dup LookupTables exch get dup 0 get null eq
+ {
+ 1 index
+ Names exch get
+ dup(Cyan)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0
+ }
+ {
+ dup(Magenta)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0/exch cvx 0 0
+ }{
+ (Yellow)eq
+ {
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 3 -1/roll cvx 0
+ }{
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0 4 -1/roll cvx
+ }ifelse
+ }ifelse
+ }ifelse
+ 5 -1/roll cvx/astore cvx
+ }{
+ dup length 1 sub
+ LookupTables length 4 -1 roll sub 1 add
+ /index cvx/mul cvx/round cvx/cvi cvx/get cvx
+ }ifelse
+ Names length TTTablesIdx add 1 add 1/roll cvx
+ }for
+ Names length[/pop cvx]cvx/repeat cvx
+ NComponents Names length
+ TintMethod/Subtractive eq
+ {
+ subtractive_blend
+ }{
+ additive_blend
+ }ifelse
+ ]cvx bdf
+ }if
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ exec_tint_transform
+ }
+ {
+ currentdict/AliasedColorants known{
+ AliasedColorants not
+ }{
+ false
+ }ifelse
+ 5 dict begin
+ /AvoidAliasedColorants xdf
+ /painted? false def
+ /names_index 0 def
+ /names_len Names length def
+ AvoidAliasedColorants{
+ /currentspotalias current_spot_alias def
+ false set_spot_alias
+ }if
+ Names{
+ AGMCORE_is_cmyk_sep{
+ dup(Cyan)eq AGMCORE_cyan_plate and exch
+ dup(Magenta)eq AGMCORE_magenta_plate and exch
+ dup(Yellow)eq AGMCORE_yellow_plate and exch
+ (Black)eq AGMCORE_black_plate and or or or{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ }if
+ painted?{exit}if
+ }{
+ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ exit
+ }if
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ AvoidAliasedColorants{
+ currentspotalias set_spot_alias
+ }if
+ painted?{
+ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put
+ }{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx
+ 0 0 0 0/setcmykcolor cvx
+ ]cvx ddf
+ }ifelse
+ end
+ }ifelse
+ }
+ {
+ AGMCORE_in_rip_sep{
+ Names convert_to_process not
+ }{
+ level3
+ }ifelse
+ {
+ [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt
+ /TintProc level3 not AGMCORE_in_rip_sep and{
+ [
+ Names/length cvx[/pop cvx]cvx/repeat cvx
+ ]cvx bdf
+ }{
+ {setcolor}bdf
+ }ifelse
+ }{
+ exec_tint_transform
+ }ifelse
+ }ifelse
+ set_crd
+ /AliasedColorants false def
+ end
+}def
+/setindexedcolorspace
{
-LocaArray LastLocaIndex get LastLoca sub
-GetGlyfBytes
-DestArray DestArrayIndex 3 -1 roll put
-/DestArrayIndex DestArrayIndex 1 add def
-LocaArray LastLocaIndex get/LastLoca exch def
-}{
-/LastLocaIndex NextLocaIndex def
-/NextLocaIndex NextLocaIndex 1 add def
-NextLocaIndex NumGlyphs gt
+ dup/indexed_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ currentdict devncs
+ }{
+ 1 currentdict sepcs
+ }ifelse
+ AGMCORE_host_sep{
+ 4 dict begin
+ /compCnt/Names where{pop Names length}{1}ifelse def
+ /NewLookup HiVal 1 add string def
+ 0 1 HiVal{
+ /tableIndex xdf
+ Lookup dup type/stringtype eq{
+ compCnt tableIndex map_index
+ }{
+ exec
+ }ifelse
+ /Names where{
+ pop setdevicencolor
+ }{
+ setsepcolor
+ }ifelse
+ currentgray
+ tableIndex exch
+ 255 mul cvi
+ NewLookup 3 1 roll put
+ }for
+ [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt
+ end
+ }{
+ level3
+ {
+ currentdict/Names known{
+ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt
+ }{
+ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt
+ }ifelse
+ }{
+ [/Indexed MappedCSA HiVal
+ [
+ currentdict/Names known{
+ Lookup dup type/stringtype eq
+ {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx}
+ {/exec cvx}ifelse
+ /TintTransform load/exec cvx
+ }{
+ Lookup dup type/stringtype eq
+ {/exch cvx/get cvx 255/div cvx}
+ {/exec cvx}ifelse
+ CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx
+ }ifelse
+ ]cvx
+ ]setcolorspace_opt
+ }ifelse
+ }ifelse
+ end
+ set_crd
+ }
+ {
+ CSA map_csa
+ AGMCORE_host_sep level2 not and{
+ 0 0 0 0 setcmykcolor
+ }{
+ [/Indexed MappedCSA
+ level2 not has_color not and{
+ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{
+ pop[/DeviceGray]
+ }if
+ HiVal GrayLookup
+ }{
+ HiVal
+ currentdict/RangeArray known{
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ Lookup exch
+ dup HiVal gt{
+ pop HiVal
+ }if
+ NComponents mul NComponents getinterval{}forall
+ NComponents 1 sub -1 0{
+ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range
+ NComponents 1 roll
+ }for
+ end
+ }bind
+ }{
+ Lookup
+ }ifelse
+ }ifelse
+ ]setcolorspace_opt
+ set_crd
+ }ifelse
+ }ifelse
+ end
+}def
+/setindexedcolor
{
-WorkBytes
-GlyfStringIndex GlyfArray length lt{
-GlyfArray GlyfStringIndex get length
-add string dup
-0
-WorkString 0 WorkBytes getinterval
-putinterval
-dup
-WorkBytes
-GetWorkingString
-WorkString 0 WorkBytes getinterval
-putinterval
-}{
-pop
-WorkString 0 WorkBytes getinterval
-}ifelse
-dup length string copy
-DestArray DestArrayIndex 3 -1 roll put
-exit
-}if
-}ifelse
-}loop
-DestArray
-}bind def
-/ProcessTTData
+ AGMCORE_host_sep{
+ /indexed_colorspace_dict AGMCORE_gget
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ map_indexed_devn
+ devn
+ }
+ {
+ Lookup 1 3 -1 roll map_index
+ sep
+ }ifelse
+ end
+ }{
+ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll
+ map_index
+ MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse
+ }ifelse
+ end
+ }{
+ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{
+ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin
+ map_indexed_devn
+ devn
+ end
+ }
+ {
+ setcolor
+ }ifelse
+ }ifelse
+}def
+/ignoreimagedata
{
-.opdloadttfontdict begin
-0 1 tabarray length 1 sub{
-/ix exch def
-tabarray ix get
-12 getu32 dup maxstring le{
-dup 4 mod 0 ne{
-4 div cvi 1 add 4 mul string/newstring exch def
-/oldstring tabs ix get def
-newstring 0 oldstring putinterval
-0 1 newstring length oldstring length sub 1 sub{
-newstring exch oldstring length add 0 put
-}for
-tabs ix newstring put
-}{
-pop
-}ifelse
-}{
-dup 4 mod 0 ne{
-dup maxstring idiv maxstring mul sub
-4 idiv 1 add 4 mul string/newstring exch def
-tabs ix get
-dup length 1 sub dup/iy exch def get/oldstring exch def
-newstring 0 oldstring putinterval
-0 1 newstring length oldstring length sub 1 sub{
-newstring exch oldstring length add 0 put
-}for
-tabs ix get iy newstring put
-}{
-pop
-}ifelse
-}ifelse
-}for
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-dup 12 getu32 maxstring gt{
-0 4 getinterval dup(glyf)eq{
-pop
-GetLocaType
-GetNumGlyphs
-GetSortedLoca
-dup tabs exch get
-SplitGlyf
-tabs 3 1 roll put
-}{
-(Warning, table )print print( > 64Kb\n)print
-pop
-}ifelse
-}{
-pop
-pop
-}ifelse
-}for
-end
-}bind def
-/Makesfnts
+ currentoverprint not{
+ gsave
+ dup clonedict begin
+ 1 setgray
+ /Decode[0 1]def
+ /DataSource<FF>def
+ /MultipleDataSources false def
+ /BitsPerComponent 8 def
+ currentdict end
+ systemdict/image gx
+ grestore
+ }if
+ consumeimagedata
+}def
+/add_res
{
-.opdloadttfontdict begin
-0
-tabs{
-dup type/stringtype eq{
-pop
-1 add
-}{
+ dup/CSD eq{
+ pop
+ //Adobe_AGM_Core begin
+ /AGMCORE_CSD_cache load 3 1 roll put
+ end
+ }{
+ defineresource pop
+ }ifelse
+}def
+/del_res
{
-type/stringtype eq{
-1 add
-}if
-}forall
-}ifelse
-}forall
-1 add
-/TTOffset
-TableDir length
-tabarray length 16 mul add
-def
-0
-tabarray{
-exch dup 1 add
-3 1 roll
-dup
-tabs exch get
-dup type/stringtype eq{
-length
-2 index exch
-TTOffset
-dup 3 1 roll add
-/TTOffset exch def
-8 exch putu32
-exch tabarray 3 1 roll
-put
-}{
-0 exch
+ {
+ aload pop exch
+ dup/CSD eq{
+ pop
+ {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall
+ }{
+ exch
+ {1 index undefineresource}forall
+ pop
+ }ifelse
+ }forall
+}def
+/get_res
{
-dup type/stringtype eq{
-length add
-}{
-pop
-}ifelse
-}forall
-2 index exch
-TTOffset
-dup 3 1 roll add
-/TTOffset exch def
-8 exch putu32
-exch tabarray 3 1 roll
-put
-}ifelse
-}forall
-pop
-array
-dup 0
-TableDir length
-tables length add
-string
-dup 0 TableDir putinterval
-dup 12 tables putinterval
-put
-dup
-/ix 1 def
-tabs{
-dup type/stringtype eq{
-ix exch
-put dup
-/ix ix 1 add def
-}{
+ dup/CSD eq{
+ pop
+ dup type dup/nametype eq exch/stringtype eq or{
+ AGMCORE_CSD_cache exch get
+ }if
+ }{
+ findresource
+ }ifelse
+}def
+/get_csa_by_name
{
-dup type/stringtype eq{
-ix exch put dup
-/ix ix 1 add def
-}{
-pop
-}ifelse
-}forall
-}ifelse
-}forall
-pop
-end
-}bind def
-/MakeType42
+ dup type dup/nametype eq exch/stringtype eq or{
+ /CSA get_res
+ }if
+}def
+/paintproc_buf_init
{
-//PDFR_DEBUG{
-(MakeType42 beg)=
-}if
-10 dict begin
-/FontName 1 index/FontName get def
-/FontType 42 def
-/FontMatrix[1 0 0 1 0 0]def
-/FontBBox 1 index/FontBBox get def
-dup/FontResource get
-dup/Encoding known{
-//PDFReader/ObtainEncoding get exec
-/Encoding get
-}{
-pop null
-}ifelse
-/PDFEncoding exch def
-/CharStrings 2 index//PDFReader/MakeTTCharStrings get exec def
-/sfnts 2 index//MakeStreamReader exec
-ReadTTF
-ProcessTTData
-Makesfnts
-def
-/Encoding StandardEncoding def
-/PaintType 0 def
-currentdict end
-//PDFR_DEBUG{
-(MakeType42 end)=
-}if
-}bind def
-/GetInstalledFont
+ /count get 0 0 put
+}def
+/paintproc_buf_next
{
-dup//InstalledFonts exch knownget{
-exch pop
-}{
-dup findfont dup 3 1 roll
-//InstalledFonts 3 1 roll put
-}ifelse
-}bind def
-/RemoveFontNamePrefix
-{//=string cvs true
-0 1 5{
-2 index exch get//IsUpper exec not{
-pop false exit
-}if
-}for
-{(+)search{
-pop pop
-}if
-}if
-cvn
-}bind def
-/CheckFont
-{dup/Type get/Font ne{
-mark(Resource )3 index( must have /Type/Font .)//error exec
-}if
-}bind def
-/CheckEncoding
-{dup type/nametype ne{
-dup/Type get/Encoding ne{
-mark(Resource )3 index( must have /Type/Encoding .)//error exec
-}if
-}if
-}bind def
-/ObtainEncoding
-{dup/Encoding known{
-dup dup/Encoding//CheckEncoding//ResolveD exec
-dup type dup/arraytype eq exch/packedarraytype eq or{
-pop pop
-}{
-dup type/nametype eq{
-/Encoding findresource
-}{
-dup/BaseEncoding//knownget exec not{
-/StandardEncoding
-}if
-/Encoding findresource
-exch
-/Differences//knownget exec{
-exch dup length array copy exch
-0 exch
+ dup/count get dup 0 get
+ dup 3 1 roll
+ 1 add 0 xpt
+ get
+}def
+/cachepaintproc_compress
{
-dup type/integertype eq{
-exch pop
-}{
-3 copy put pop
-1 add
-}ifelse
-}forall
-pop
-}if
-}ifelse
-/Encoding exch put
-}ifelse
-}{
-dup/Encoding/StandardEncoding/Encoding findresource put
-}ifelse
-}bind def
-/ObtainMetrics
-{dup/Widths//knownget exec{
-1 index/Encoding get
-256 dict
-3 index/Subtype get/TrueType eq{
-1000
-}{
-1
-}ifelse
-4 index/MissingWidth//knownget exec not{
-0
-}if
-5 index/FirstChar//knownget exec not{
-0
-}if
-6 5 roll
-dup 0 exch 1 exch length 1 sub{
-2 copy get
-exch 3 index add
-7 index exch get
-dup dup null ne exch/.notdef ne and{
-6 index 3 1 roll exch
-6 index div
-3 copy pop//knownget exec{
-0 eq
-}{
-true
-}ifelse
-{put
-}{
-pop pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}for
-pop pop pop pop exch pop
-1 index exch/Metrics exch put
-}{
-dup/MissingWidth//knownget exec{
-256 dict
-2 index/Encoding get{
-dup null ne{
-3 copy 3 2 roll put
-}if
-pop
-}forall
-exch pop
-1 index exch/Metrics exch put
-}if
-}ifelse
-}bind def
-/NotDef
+ 5 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ /string_size 16000 def
+ /readbuffer string_size string def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ /LZWFilter
+ {
+ exch
+ dup length 0 eq{
+ pop
+ }{
+ ppdict dup length 1 sub 3 -1 roll put
+ }ifelse
+ {string_size}{0}ifelse string
+ }/LZWEncode filter def
+ {
+ ReadFilter readbuffer readstring
+ exch LZWFilter exch writestring
+ not{exit}if
+ }loop
+ LZWFilter closefile
+ ppdict
+ end
+}def
+/cachepaintproc
{
-FontMatrix aload pop pop pop exch pop exch pop
-1 exch div exch
-1 exch div exch
-1 index 0 setcharwidth
-0 setlinewidth
-0 0 moveto
-2 copy rlineto
-1 index 0 rlineto
-neg exch neg exch rlineto
-closepath stroke
-}bind def
-/SaveResourcesToStack{[//PDFReader/OldResources known{//PDFReader/OldResources get}{null}ifelse
-//PDFReader/CurrentObject get/Context get/Resources get]//PDFReader/OldResources 3 -1 roll put}bind def
-/RestoreResourcesFromStack{//PDFReader/OldResources get dup
-0 get//PDFReader/OldResources 3 -1 roll put
-1 get//PDFReader/CurrentObject get/Context get/Resources 3 -1 roll put} bind def
-/BuildChar
-{//PDFR_DEBUG{
-(BuildChar )print dup//=only exec( )print
-}if
-exch begin
-Encoding exch get
-//PDFR_DEBUG{
-dup =
-}if
-dup null eq{
-pop//NotDef exec
-}{
-CharProcs exch//knownget exec{currentfont/Font get/Resources//knownget exec{exec SaveResourcesToStack//PDFReader/CurrentObject get/Context get/Resources 3 -1 roll put//RunDelayedStream exec RestoreResourcesFromStack}{//RunDelayedStream exec}ifelse}{
-//NotDef exec
-}ifelse
-}ifelse
-end
-}bind def
-/printdict
-{(<<)=
-{exch = ==}forall
-(>>)=
-}bind def
-/printfont
+ 2 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ {
+ ReadFilter 16000 string readstring exch
+ ppdict dup length 1 sub 3 -1 roll put
+ not{exit}if
+ }loop
+ ppdict dup dup length 1 sub()put
+ end
+}def
+/make_pattern
{
-dup{
-exch dup =
-dup/Encoding eq{
-pop =
-}{
-dup/FontInfo eq exch/Private eq or{
-//printdict exec
-}{
-==
-}ifelse
-}ifelse
-}forall
-}bind def
-/ScaleMetrics
-{1 index{
-2 index div
-3 index
-3 1 roll put
-}forall
-pop
-}bind def
-/ResolveAndSetFontAux
-{exch dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/Font//DoNothing//ResolveD exec
-exch//CheckFont//ResolveD exec
-dup/Font//knownget exec{
-exch pop exch pop
-}{
+ exch clonedict exch
+ dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform
+ exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub
+ exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub
+ matrix translate exch matrix concatmatrix
+ 1 index begin
+ BBox 0 get XStep div cvi XStep mul/xshift exch neg def
+ BBox 1 get YStep div cvi YStep mul/yshift exch neg def
+ BBox 0 get xshift add
+ BBox 1 get yshift add
+ BBox 2 get xshift add
+ BBox 3 get yshift add
+ 4 array astore
+ /BBox exch def
+ [xshift yshift/translate load null/exec load]dup
+ 3/PaintProc load put cvx/PaintProc exch def
+ end
+ gsave 0 setgray
+ makepattern
+ grestore
+}def
+/set_pattern
{
-dup/Subtype get dup dup/Type1 eq exch/TrueType eq or exch/MMType1 eq or{
-exch pop
-dup/BaseFont get
-//RemoveFontNamePrefix exec
-//PDFR_DEBUG{
-(Font )print dup =
-}if
-1 index/FontDescriptor known{
-//PDFR_DEBUG{
-(Font from a font descriptor.)=
-}if
-1 index
-/FontDescriptor//DoNothing//ResolveD exec
-/Font//knownget exec{
-exch pop
-}{
-//PDFR_DEBUG{
-(Font descriptor has no Font resolved.)=
-}if
-//GetInstalledFont exec
-}ifelse
-}{
-//GetInstalledFont exec
-}ifelse
-exch
-dup/Encoding known not{
-1 index/Encoding get 1 index exch/Encoding exch put
-}if
-//ObtainEncoding exec
-//ObtainMetrics exec
-exch
-dup length dict copy
-dup 2 index/Encoding get
-/Encoding exch put
-1 index/Metrics//knownget exec{
-2 index/Subtype get/TrueType ne{
-1 index/FontMatrix get 0 get
-dup 0 eq{
-pop
-1 index/FontMatrix get 1 get
-dup 0 eq{pop 1}if
-}if
-0.001 div
-//ScaleMetrics exec
-}{
-1 index/sfnts known not{
-1 index/FontMatrix get 0 get
-dup 0 eq{
-pop
-1 index/FontMatrix get 1 get
-dup 0 eq{pop 1}if
-}if
-//ScaleMetrics exec
-}if
-}ifelse
-1 index exch/Metrics exch put
-}if
-1 index/BaseFont get
-exch
-dup/FID undef
-dup/UniqueID undef
-definefont
-dup 3 1 roll
-/Font exch put
-exit
-}if
-dup/Subtype get/Type3 eq{
-//ObtainEncoding exec
-2 copy exch/FontName exch put
-dup/CharProcs get//ResolveDict exec
-dup/FontType 3 put
-dup/BuildChar//BuildChar put
-dup dup/Font exch put
-dup 3 1 roll
-definefont
-2 copy ne{
-2 copy/Font exch put
-}if
-exch pop
-exit
-}if
-dup/Subtype get/Type0 eq{
-}if
-dup/Subtype get/CIDFontType0 eq{
-}if
-dup/Subtype get/CIDFontType2 eq{
-}if
-mark(Unknown font type )2 index/Subtype get//error exec
-}loop
-}ifelse
-exch scalefont setfont
-}bind def
-/ResolveAndSetFont
+ dup/PatternType get 1 eq{
+ dup/PaintType get 1 eq{
+ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray
+ }if
+ }if
+ setpattern
+}def
+/setcolorspace_opt
{
-//ResolveAndSetFontAux exec
-}bind def
-/.knownget
-{2 copy known{
-get true
-}{
-pop pop false
-}ifelse
-}bind def
-/.min
-{2 copy lt{
-exch
-}if
-pop
-}bind def
-/.max
-{2 copy gt{
-exch
-}if
-pop
-}bind def
-/.dicttomark
-{>>
-}bind def
-/getu16{
-2 copy get 8 bitshift 3 1 roll 1 add get add
-}bind def
-/gets16{
-getu16 16#8000 xor 16#8000 sub
-}bind def
-/getu32{
-2 copy getu16 16 bitshift 3 1 roll 2 add getu16 add
-}bind def
-/gets32{
-2 copy gets16 16 bitshift 3 1 roll 2 add getu16 add
-}bind def
-/cmapformats mark
-0{
-6 256 getinterval{}forall 256 packedarray
-}bind
-2{
-/sHK_sz 2 def
-/sH_sz 8 def
-dup 2 getu16/cmapf2_tblen exch def
-dup 4 getu16/cmapf2_lang exch def
-dup 6 256 sHK_sz mul getinterval/sHKs exch def
-0
-0 1 255{
-sHKs exch
-2 mul getu16
-1 index
-1 index
-lt{exch}if pop
-}for
-/sH_len exch def
-dup 6 256 sHK_sz mul add
-cmapf2_tblen 1 index sub getinterval
-/sH_gIA exch def
-/cmapf2_glyph_array 65535 array def
-/.cmapf2_putGID{
-/cmapf2_ch cmapf2_ch_hi 8 bitshift cmapf2_ch_lo add def
-firstCode cmapf2_ch_lo le
-cmapf2_ch_lo firstCode entryCount add lt
-and{
-sH_offset idRangeOffset add
-cmapf2_ch_lo firstCode sub 2 mul
-add 6 add
-sH_gIA exch getu16
-dup 0 gt{
-idDelta add
-cmapf2_glyph_array exch cmapf2_ch exch put
-}{
-pop
-}ifelse
-}{
-}ifelse
+ dup currentcolorspace eq{pop}{setcolorspace}ifelse
}def
-16#00 1 16#ff{
-/cmapf2_ch_hi exch def
-sHKs cmapf2_ch_hi sHK_sz mul getu16
-/sH_offset exch def
-sH_gIA sH_offset sH_sz getinterval
-dup 0 getu16/firstCode exch def
-dup 2 getu16/entryCount exch def
-dup 4 gets16/idDelta exch def
-dup 6 getu16/idRangeOffset exch def
-pop
-sH_offset 0 eq{
-/cmapf2_ch_lo cmapf2_ch_hi def
-/cmapf2_ch_hi 0 def
-.cmapf2_putGID
-}{
-16#00 1 16#ff{
-/cmapf2_ch_lo exch def
-.cmapf2_putGID
-}for
-}ifelse
-}for
-pop
-0 1 cmapf2_glyph_array length 1 sub{
-dup cmapf2_glyph_array exch get
-null eq{cmapf2_glyph_array exch 0 put}{pop}ifelse
-}for
-cmapf2_glyph_array
-}bind
-4{
-/etab exch def
-/nseg2 etab 6 getu16 def
-14/endc etab 2 index nseg2 getinterval def
-2 add
-nseg2 add/startc etab 2 index nseg2 getinterval def
-nseg2 add/iddelta etab 2 index nseg2 getinterval def
-nseg2 add/idroff etab 2 index nseg2 getinterval def
-pop
-/firstcode startc 0 getu16 16#ff00 and dup 16#f000 ne{pop 0}if def
-/lastcode firstcode def
-/striptopbyte false def
-/putglyph{
-glyphs code 3 -1 roll put/code code 1 add def
-}bind def
-/numcodes 0 def/glyphs 0 0 2 nseg2 3 sub{
-/i2 exch def
-/scode startc i2 getu16 def
-/ecode endc i2 getu16 def
-ecode lastcode gt {
-/lastcode ecode def
-}if
-}for pop
-firstcode 16#f000 ge lastcode firstcode sub 255 le and {
-lastcode 255 and
-/striptopbyte true def
-} {
-lastcode
-}ifelse
-1 add
-array def
-glyphs length 1024 ge{
-.array1024z 0 1024 glyphs length 1023 sub{glyphs exch 2 index putinterval}for
-glyphs dup length 1024 sub 3 -1 roll
-putinterval
-}{
-0 1 glyphs length 1 sub{glyphs exch 0 put}for
-}ifelse
-/numcodes 0 def/code 0 def
-0 2 nseg2 3 sub{
-/i2 exch def
-/scode startc i2 getu16 def
-/ecode endc i2 getu16 def
-numcodes scode firstcode sub
-exch sub 0 .max dup/code exch code exch add def
-ecode scode sub 1 add add numcodes add/numcodes exch def
-/delta iddelta i2 gets16 def
-TTFDEBUG{
-(scode=)print scode =only
-( ecode=)print ecode =only
-( delta=)print delta =only
-( droff=)print idroff i2 getu16 =
-}if
-idroff i2 getu16 dup 0 eq{
-pop scode delta add 65535 and 1 ecode delta add 65535 and
-striptopbyte {
-/code scode 255 and def
-} {
-/code scode def
-} ifelse
-{putglyph}for
-}{
-/gloff exch 14 nseg2 3 mul add 2 add i2 add add def
-striptopbyte {
-/code scode 255 and def
-} {
-/code scode def
-} ifelse
-0 1 ecode scode sub{
-2 mul gloff add etab exch getu16
-dup 0 ne{delta add 65535 and}if putglyph
-}for
-}ifelse
-}for glyphs/glyphs null def
-}bind
-6{
-dup 6 getu16/firstcode exch def dup 8 getu16/ng exch def
-firstcode ng add array
-0 1 firstcode 1 sub{2 copy 0 put pop}for
-dup firstcode ng getinterval
-0 1 ng 1 sub{
-dup 2 mul 10 add 4 index exch getu16 3 copy put pop pop
-}for pop exch pop
-}bind
-.dicttomark readonly def
-/cmaparray{
-dup 0 getu16 cmapformats exch .knownget{
-TTFDEBUG{
-(cmap: format )print 1 index 0 getu16 = flush
-}if exec
-}{
-(Can't handle format )print 0 getu16 = flush
-0 1 255{}for 256 packedarray
-}ifelse
-TTFDEBUG{
-(cmap: length=)print dup length = dup ==
-}if
-}bind def
-/postremap mark
-/Cdot/Cdotaccent
-/Edot/Edotaccent
-/Eoverdot/Edotaccent
-/Gdot/Gdotaccent
-/Ldot/Ldotaccent
-/Zdot/Zdotaccent
-/cdot/cdotaccent
-/edot/edotaccent
-/eoverdot/edotaccent
-/gdot/gdotaccent
-/ldot/ldotaccent
-/zdot/zdotaccent
-.dicttomark readonly def
-/get_from_stringarray
-{1 index type/stringtype eq{
-get
-}{
-exch{
-2 copy length ge{
-length sub
-}{
-exch get exit
-}ifelse
-}forall
-}ifelse
-}bind def
-/getinterval_from_stringarray
+/updatecolorrendering
{
-2 index type/stringtype eq{
-getinterval
-}{
-string exch 0
-4 3 roll{
-dup length
-dup 4 index lt{
-3 index exch sub
-exch pop 3 1 roll exch pop
-}{
-dup 3 1 roll
-4 index sub
-5 index length 4 index sub
-2 copy gt{exch}if pop
-dup 3 1 roll
-5 index exch getinterval
-5 index 4 index 3 index
-getinterval
-copy pop
-exch pop add exch pop 0 exch
-dup 3 index length ge{exit}if
-}ifelse
-}forall
-pop pop
-}ifelse
-}bind def
-/string_array_size
-{dup type/stringtype eq{
-length
-}{
-0 exch{length add}forall
-}ifelse
-}bind def
-/postformats mark
-16#00010000{
-pop MacGlyphEncoding
-}
-16#00020000{
-dup dup type/arraytype eq{0 get}if length 36 lt{
-TTFDEBUG{(post format 2.0 invalid.)= flush}if
-pop[]
-}{
-/postglyphs exch def
-/post_first postglyphs dup type/arraytype eq{0 get}if def
-post_first 32 getu16/numglyphs exch def
-/glyphnames numglyphs 2 mul 34 add def
-/postpos glyphnames def
-/total_length postglyphs//string_array_size exec def
-numglyphs array 0 1 numglyphs 1 sub{
-postpos total_length ge{
-1 numglyphs 1 sub{1 index exch/.notdef put}for
-exit
-}if
-postglyphs postpos//get_from_stringarray exec
-postglyphs postpos 1 add 2 index//getinterval_from_stringarray exec cvn
-exch postpos add 1 add/postpos exch def
-2 index 3 1 roll
-put
-}for
-/postnames exch def
-numglyphs array 0 1 numglyphs 1 sub{
-dup 2 mul 34 add postglyphs exch 2//getinterval_from_stringarray exec
-dup 0 get 8 bitshift exch 1 get add dup 258 lt{
-MacGlyphEncoding exch get
-}{
-dup 32768 ge{
-pop/.notdef
-}{
-258 sub dup postnames length ge{
-TTFDEBUG{( *** warning: glyph index past end of 'post' table)= flush}if
-pop
-exit
-}if
-postnames exch get
-postremap 1 index .knownget{exch pop}if
-}ifelse
-}ifelse
-2 index 3 1 roll put
-}for
-}
-ifelse
-}bind
-16#00030000{
-pop[]
-}bind
-.dicttomark readonly def
-/first_post_string
-{
-post dup type/arraytype eq{0 get}if
-}bind def
-/.getpost{
-/glyphencoding post null eq{
-TTFDEBUG{(post missing)= flush}if[]
-}{
-postformats first_post_string 0 getu32 .knownget{
-TTFDEBUG{
-(post: format )print
-first_post_string
-dup 0 getu16 =only(,)print 2 getu16 = flush
-}if
-post exch exec
-}{
-TTFDEBUG{(post: unknown format )print post 0 getu32 = flush}if[]
-}ifelse
-}ifelse def
-}bind def
-/TTParser<<
-/Pos 0
-/post null
->>def
-/readu8
-{read not{
-mark(Insufficient data in the stream.)//error exec
-}if
-}bind def
-/readu16
-{dup//readu8 exec 8 bitshift exch//readu8 exec or
-}bind def
-/reads16
-{//readu16 exec 16#8000 xor 16#8000 sub
-}bind def
-/readu32
-{dup//readu16 exec 16 bitshift exch//readu16 exec or
-}bind def
-/reads32
-{dup//reads16 exec 16 bitshift exch//readu16 exec or
-}bind def
-/SkipToPosition
-{dup//TTParser/Pos get
-exch//TTParser exch/Pos exch put
-sub
-//PDFR_DEBUG{
-(Skipping )print dup//=only exec( bytes.)=
-}if
-dup 0 eq{
-pop pop
-}{
-dup 3 1 roll
-()/SubFileDecode filter
-exch
-{1 index//BlockBuffer readstring pop length
-dup 0 eq{pop exch pop exit}if
-sub
-}loop
-0 ne{
-mark(Insufficient data in the stream for SkipToPosition.)//error exec
-}if
-}ifelse
-}bind def
-/TagBuffer 4 string def
-/ParseTTTableDirectory
-{//PDFR_DEBUG{
-(ParseTTTableDirectory beg)=
-}if
-15 dict begin
-dup//readu32 exec 16#00010000 ne{
-mark(Unknown True Type version.)//error exec
-}if
-dup//readu16 exec/NumTables exch def
-dup//readu16 exec/SearchRange exch def
-dup//readu16 exec/EntrySelector exch def
-dup//readu16 exec/RangeShift exch def
-//PDFR_DEBUG{
-(NumTables = )print NumTables =
-}if
-NumTables{
-dup//TagBuffer readstring not{
-mark(Could not read TT tag.)//error exec
-}if
-cvn
-[2 index//readu32 exec pop
-2 index//readu32 exec
-3 index//readu32 exec
-]
-//PDFR_DEBUG{
-2 copy exch//=only exec( )print ==
-}if
-def
-}repeat
-pop
-//TTParser/Pos 12 NumTables 16 mul add put
-currentdict end
-//PDFR_DEBUG{
-(ParseTTTableDirectory end)=
-}if
-}bind def
-/ParseTTcmap
-{//PDFR_DEBUG{
-(ParseTTcmap beg)=
-}if
-/cmap get aload pop
-3 1 roll
-7 dict begin
-//PDFR_DEBUG{
-(Current position = )print//TTParser/Pos get =
-(cmap position = )print dup =
-}if
-1 index exch//SkipToPosition exec
-//TTParser/Pos get/TablePos exch def
-dup//readu16 exec pop
-dup//readu16 exec/NumEncodings exch def
-//PDFR_DEBUG{
-(NumEncodings = )print NumEncodings =
-}if
-null
-NumEncodings{
-1 index//readu32 exec
-2 index//readu32 exec
-3 array dup 3 2 roll 0 exch put
-2 index null ne{
-dup 0 get 3 index 0 get sub
-3 index exch 1 exch put
-}if
-dup 4 3 roll pop 3 1 roll
-def
-}repeat
-dup 0 get
-4 3 roll exch sub
-1 exch put
-//PDFR_DEBUG{
-currentdict{
-exch dup type/integertype eq{
-//PrintHex exec( )print ==
-}{
-pop pop
-}ifelse
-}forall
-}if
-4 NumEncodings 8 mul add/HeaderLength exch def
-//TTParser/Pos//TTParser/Pos get HeaderLength add put
-0
-NumEncodings{
-16#7FFFFFF null
-currentdict{
-1 index type/integertype eq{
-exch pop dup 0 get
-dup 5 index gt{
-dup 4 index lt{
-4 1 roll
-exch pop exch pop
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}forall
-//PDFR_DEBUG{
-(Obtaining subtable for )print dup ==
-}if
-3 2 roll pop
-3 copy pop
-TablePos add//SkipToPosition exec
-3 copy exch pop 1 get
-//TTParser/Pos//TTParser/Pos get 3 index add put
-string
-readstring not{
-mark(Can't read a cmap subtable.)//error exec
-}if
-2 exch put
-}repeat
-pop pop
-currentdict end
-//PDFR_DEBUG{
-(ParseTTcmap end)=
-}if
-}bind def
-/GetTTEncoding
-{//PDFR_DEBUG{
-(GetTTEncoding beg)=
-}if
-get
-exch pop
-2 get
-10 dict begin
-/TTFDEBUG//PDFR_DEBUG def
-//cmaparray exec
-end
-//PDFR_DEBUG{
-(GetTTEncoding end)=
-dup ==
-}if
-}bind def
-/InverseEncoding
+ currentcolorrendering/RenderingIntent known{
+ currentcolorrendering/RenderingIntent get
+ }
+ {
+ Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd AGMCORE_gget dup null eq
+ }
+ {
+ /perceptual_crd AGMCORE_gget dup null eq
+ }ifelse
+ }ifelse
+ }ifelse
+ {
+ pop null
+ }
+ {
+ /RenderingIntent known{null}{Intent}ifelse
+ }ifelse
+ }ifelse
+ Intent ne{
+ Intent/ColorRendering{findresource}stopped
+ {
+ pop pop systemdict/findcolorrendering known
+ {
+ Intent findcolorrendering
+ {
+ /ColorRendering findresource true exch
+ }
+ {
+ /ColorRendering findresource
+ product(Xerox Phaser 5400)ne
+ exch
+ }ifelse
+ dup Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Perceptual eq
+ {
+ /perceptual_crd exch AGMCORE_gput
+ }
+ {
+ pop
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ 1 index{exch}{pop}ifelse
+ }
+ {false}ifelse
+ }
+ {true}ifelse
+ {
+ dup begin
+ currentdict/TransformPQR known{
+ currentdict/TransformPQR get aload pop
+ 3{{}eq 3 1 roll}repeat or or
+ }
+ {true}ifelse
+ currentdict/MatrixPQR known{
+ currentdict/MatrixPQR get aload pop
+ 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq
+ and and and and and and and and
+ }
+ {true}ifelse
+ end
+ or
+ {
+ clonedict begin
+ /TransformPQR[
+ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div
+ 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div
+ 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div
+ 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind
+ ]def
+ /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def
+ /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def
+ currentdict end
+ }if
+ setcolorrendering_opt
+ }if
+ }if
+}def
+/set_crd
{
-256 dict begin
-dup length 1 sub -1 0{
-2 copy get
-exch
-1 index currentdict exch//knownget exec{
-dup type/arraytype eq{
-aload length 1 add array astore
-}{
-2 array astore
-}ifelse
-}if
-def
-}for
-pop
-currentdict end
-}bind def
-/GetMacRomanEncodingInverse
-{//PDFReader/MacRomanEncodingInverse get
-dup null eq{
-pop
-MacRomanEncoding//InverseEncoding exec
-dup//PDFReader exch/MacRomanEncodingInverse exch put
-}if
-}bind def
-/PutCharStringSingle
+ AGMCORE_host_sep not level2 and{
+ currentdict/ColorRendering known{
+ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if
+ }{
+ currentdict/Intent known{
+ updatecolorrendering
+ }if
+ }ifelse
+ currentcolorspace dup type/arraytype eq
+ {0 get}if
+ /DeviceRGB eq
+ {
+ currentdict/UCR known
+ {/UCR}{/AGMCORE_currentucr}ifelse
+ load setundercolorremoval
+ currentdict/BG known
+ {/BG}{/AGMCORE_currentbg}ifelse
+ load setblackgeneration
+ }if
+ }if
+}def
+/set_ucrbg
{
-dup 3 index length lt{
-2 index exch get
-dup 0 ne{
-def
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}bind def
-/PutCharString
-{1 index type/nametype ne{
-mark(Bad charstring name)//error exec
-}if
-dup type/arraytype eq{
+ dup null eq {pop /AGMCORE_currentbg load}{/Procedure get_res}ifelse
+ dup currentblackgeneration eq {pop}{setblackgeneration}ifelse
+ dup null eq {pop /AGMCORE_currentucr load}{/Procedure get_res}ifelse
+ dup currentundercolorremoval eq {pop}{setundercolorremoval}ifelse
+}def
+/setcolorrendering_opt
{
-3 copy//PutCharStringSingle exec
-pop pop
-}forall
-pop
-}{
-//PutCharStringSingle exec
-}ifelse
-}bind def
-/ComposeCharStrings
+ dup currentcolorrendering eq{
+ pop
+ }{
+ product(HP Color LaserJet 2605)anchorsearch{
+ pop pop pop
+ }{
+ pop
+ clonedict
+ begin
+ /Intent Intent def
+ currentdict
+ end
+ setcolorrendering
+ }ifelse
+ }ifelse
+}def
+/cpaint_gcomp
{
-//PDFR_DEBUG{
-(ComposeCharStrings beg)=
-}if
-1 index length 1 add dict begin
-/.notdef 0 def
-exch
-//TTParser/post get
-dup null ne{
-exch
-1 index length 1 sub -1 0{
-dup 3 index exch get exch
-dup 0 eq 2 index/.notdef eq or{
-pop pop
-}{
-def
-}ifelse
-}for
-}if
-exch pop exch
+ convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not
+ {
+ (%end_cpaint_gcomp)flushinput
+ }if
+}def
+/cpaint_gsep
{
-//PutCharString exec
-}forall
-pop
-currentdict end
-//PDFR_DEBUG{
-(ComposeCharStrings end)=
-}if
-}bind def
-/ParseTTpost
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get
+ {
+ (%end_cpaint_gsep)flushinput
+ }if
+}def
+/cpaint_gend
+{np}def
+/T1_path
{
-//PDFR_DEBUG{
-(ParseTTpost beg)=
-}if
-/post get aload pop
-3 1 roll
-//PDFR_DEBUG{
-(Current position = )print//TTParser/Pos get =
-(post position = )print dup =
-}if
-1 index exch//SkipToPosition exec
-//TTParser/Pos//TTParser/Pos get 4 index add put
-exch dup 65535 le{
-string
-readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-}{
-[3 1 roll
-dup 16384 div floor cvi
-exch 1 index 16384 mul
-sub exch
-1 sub 0 1 3 -1 roll
+ currentfile token pop currentfile token pop mo
+ {
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 exch rlineto
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 rlineto
+ }loop
+}def
+/T1_gsave
+ level3
+ {/clipsave}
+ {/gsave}ifelse
+ load def
+/T1_grestore
+ level3
+ {/cliprestore}
+ {/grestore}ifelse
+ load def
+/set_spot_alias_ary
{
-1 add index
-16384 string readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-}for
-counttomark -2 roll
-string readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-]
-}ifelse
-1 dict begin
-/post exch def
-//.getpost exec
-//TTParser/post glyphencoding put
-//PDFR_DEBUG{
-(ParseTTpost end)=
-glyphencoding ==
-}if
-end
-}bind def
-/MakeTTCharStrings
-{//MakeStreamReader exec
-dup dup//ParseTTTableDirectory exec
-//TTParser/post null put
-dup/post//knownget exec{
-0 get
-1 index/cmap get 0 get
-lt{
-2 copy//ParseTTpost exec
-//ParseTTcmap exec
-}{
-2 copy//ParseTTcmap exec
-3 1 roll
-//ParseTTpost exec
-}ifelse
-}{
-//ParseTTcmap exec
-}ifelse
+ dup inherit_aliases
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf
+}def
+/set_spot_normalization_ary
{
-dup 16#00030001 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding for Windows Unicode.)=
-}if
-16#00030001//GetTTEncoding exec
-AdobeGlyphList//ComposeCharStrings exec
-exit
-}if
-dup 16#00010000 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding for Macintosh Roman.)=
-}if
-16#00010000//GetTTEncoding exec
-PDFEncoding dup null eq{
-pop//GetMacRomanEncodingInverse exec
-}{
-//InverseEncoding exec
-}ifelse
-//ComposeCharStrings exec
-exit
-}if
-dup 16#00030000 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding 3.0 - not sure why Ghostscript writes it since old versions.)=
-}if
-16#00030000//GetTTEncoding exec
-PDFEncoding dup null eq{
-pop//GetMacRomanEncodingInverse exec
-}{
-//InverseEncoding exec
-}ifelse
-//ComposeCharStrings exec
-exit
-}if
-mark(True Type cmap has no useful encodings.)//error exec
-}loop
-//PDFR_DEBUG{
-(CharStrings <<)=
-dup{
-exch
-dup type/nametype eq{
-//=only exec
-}{
-==
-}ifelse
-( )print ==
-}forall
-(>>)=
-}if
-}bind def
-/ScaleVal
+ dup inherit_aliases
+ dup length
+ /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if
+ array
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf
+ /AGMCORE_SpotAliasAry where{
+ pop
+ AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval
+ AGMCORE_SpotAliasAry length
+ }{0}ifelse
+ AGMCORE_SpotAliasAry2 3 1 roll exch putinterval
+ true set_spot_alias
+}def
+/inherit_aliases
{
-aload pop
-1 index sub
-3 2 roll mul add
-}bind def
-/ScaleArg
+ {dup/Name get map_alias{/CSD put}{pop}ifelse}forall
+}def
+/set_spot_alias
{
-aload pop
-1 index sub
-3 1 roll
-sub exch div
-}bind def
-/ScaleArgN
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias 3 -1 roll put
+ }{
+ pop
+ }ifelse
+}def
+/current_spot_alias
{
-dup length 2 sub -2 0{
-2
-2 index 3 1 roll getinterval
-3 2 roll
-exch//ScaleArg exec
-1 index length 2 idiv 1 add 1 roll
-}for
-pop
-}bind def
-/ComputeFunction_10
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias get
+ }{
+ false
+ }ifelse
+}def
+/map_alias
{
-//PDFR_DEBUG{
-(ComputeFunction_10 beg )print 1 index//=only exec( stack=)print count =
-}if
-exch
-dup 1 eq{
-pop dup length 1 sub get
-}{
-1 index length 1 sub mul
-dup dup floor sub
-dup 0 eq{
-pop cvi get
-}{
-3 1 roll floor cvi
-2 getinterval
-aload pop
-2 index mul 3 2 roll 1 exch sub 3 2 roll mul add
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(ComputeFunction_10 end )print dup//=only exec( stack=)print count =
-}if
-}bind def
-/ComputeFunction_n0
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ /AGMCORE_name xdf
+ false
+ AGMCORE_SpotAliasAry2{
+ dup/Name get AGMCORE_name eq{
+ /CSD get/CSD get_res
+ exch pop true
+ exit
+ }{
+ pop
+ }ifelse
+ }forall
+ end
+ }{
+ pop false
+ }ifelse
+}bdf
+/spot_alias
{
-//PDFR_DEBUG{
-(ComputeFunction_n0 beg N=)print dup//=only exec( stack=)print count =
-}if
-dup 0 eq{
-pop
-}{
-dup 2 add -1 roll
-dup 3 index length 1 sub ge{
-pop 1 sub
-exch dup length 1 sub get exch
-//PDFReader/ComputeFunction_n0 get exec
-}{
-dup floor cvi dup
-4 index exch get
-3 index dup
-5 add copy
-6 2 roll
-pop pop pop pop
-1 sub
-//PDFReader/ComputeFunction_n0 get exec
-3 2 roll pop
-exch
-4 3 roll exch
-4 add 2 roll 1 add
-3 2 roll exch get
-exch 1 sub
-//PDFReader/ComputeFunction_n0 get exec
-1 index mul
-3 1 roll
-1 exch sub mul add
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(ComputeFunction_n0 end )print dup//=only exec( stack=)print count =
-}if
-}bind def
-/FunctionToProc_x01
+ true set_spot_alias
+ /AGMCORE_&setcustomcolor AGMCORE_key_known not{
+ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put
+ }if
+ /customcolor_tint 1 AGMCORE_gput
+ //Adobe_AGM_Core begin
+ /setcustomcolor
+ {
+ //Adobe_AGM_Core begin
+ dup/customcolor_tint exch AGMCORE_gput
+ 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not
+ current_spot_alias and{1 index 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /sep_colorspace_dict AGMCORE_gget null ne
+ {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse
+ 3 1 roll 2 index{
+ exch pop/sep_tint AGMCORE_gget exch
+ }if
+ mark 3 1 roll
+ setsepcolorspace
+ counttomark 0 ne{
+ setsepcolor
+ }if
+ pop
+ not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if
+ pop
+ true set_spot_alias
+ }{
+ AGMCORE_&setcustomcolor
+ }ifelse
+ end
+ }bdf
+ end
+}def
+/begin_feature
{
-dup/Domain get exch
-dup/Data get 0 get exch
-/Size get length
-[4 1 roll
-//PDFR_DEBUG{
-{(function beg, stack =)print count//=only exec(\n)print}/exec load
-5 2 roll
-}if
-dup 1 gt{
-{mark exch
-3 add 2 roll
-//ScaleArgN exec
-counttomark dup
-3 add -2 roll
-pop exch
-//ComputeFunction_n0 exec
-}/exec load
-}{
-pop
-3 1/roll load//ScaleArg/exec load
-/exch load
-//ComputeFunction_10/exec load
-}ifelse
-//PDFR_DEBUG{
-(function end, stack =)/print load/count load//=only/exec load(\n)/print load
-}if
-]cvx
-//PDFR_DEBUG{
-(Made a procedure for the 1-result function :)=
-dup ==
-}if
-}bind def
-/FunctionProcDebugBeg
-{(FunctionProcDebugBeg )print count =
-}bind def
-/FunctionProcDebugEnd
-{(FunctionProcDebugEnd )print count =
-}bind def
-/FunctionToProc_x0n
+ Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put
+ count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put
+ {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if
+}def
+/end_feature
{
-PDFR_DEBUG{
-(FunctionToProc_x0n beg m=)print dup =
-}if
-1 index/Size get length exch
-dup 7 mul 2 add array
-PDFR_DEBUG{
-dup 0//FunctionProcDebugBeg put
-}{
-dup 0//DoNothing put
-}ifelse
-dup 1/exec load put
-dup 2 5 index/Domain get put
-2 index 1 eq{
-dup 3//ScaleArg put
-}{
-dup 3//ScaleArgN put
-}ifelse
-dup 4/exec load put
-1 index 1 sub 0 exch 1 exch{
-dup 7 mul 5 add
-1 index 4 index 1 sub ne{
-dup 3 index exch 6 index put 1 add
-dup 3 index exch/copy load put 1 add
-}if
-[
-6 index/Data get 3 index get
-6 index 1 eq{
-//ComputeFunction_10/exec load
-}{
-6 index
-//ComputeFunction_n0/exec load
-}ifelse
-]cvx
-3 index exch 2 index exch put 1 add
-2 index 1 index/exec load put 1 add
-1 index 4 index 1 sub ne{
-2 index 1 index 6 index 1 add put 1 add
-2 index 1 index 1 put 1 add
-2 index 1 index/roll load put
-}if
-pop pop
-}for
-PDFR_DEBUG{
-dup dup length 2 sub//FunctionProcDebugEnd put
-}{
-dup dup length 2 sub//DoNothing put
-}ifelse
-dup dup length 1 sub/exec load put
-cvx exch pop exch pop exch pop
-//PDFR_DEBUG{
-(Made a procedure for the n-argument function :)=
-dup ==
-}if
-PDFR_DEBUG{
-(FunctionToProc_x0n end)=
-}if
-}bind def
-/MakeTableRec
+ 2 dict begin
+ /spd/setpagedevice load def
+ /setpagedevice{get_gstate spd set_gstate}def
+ stopped{$error/newerror false put}if
+ end
+ count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse
+ countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse
+ {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if
+}def
+/set_negative
{
-0
-exec
-}bind def
-/MakeTable
-{//PDFR_DEBUG{
-(MakeTable beg )print count =
-}if
-1 index/Size get exch
-1 sub dup
-3 1 roll
-get
-array
-1 index 0 eq{
-exch pop exch pop
-}{
-dup length 1 sub -1 0{
-3 index 3 index//MakeTableRec exec
-2 index 3 1 roll put
-}for
-exch pop exch pop
-}ifelse
-//PDFR_DEBUG{
-(MakeTable end )print count =
-}if
-}bind def
-//MakeTableRec 0//MakeTable put
-/StoreSample
+ //Adobe_AGM_Core begin
+ /AGMCORE_inverting exch def
+ level2{
+ currentpagedevice/NegativePrint known AGMCORE_distilling not and{
+ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{
+ true begin_feature true{
+ <</NegativePrint//Adobe_AGM_Core/AGMCORE_inverting get>>setpagedevice
+ }end_feature
+ }if
+ /AGMCORE_inverting false def
+ }if
+ }if
+ AGMCORE_inverting{
+ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer
+ AGMCORE_distilling{
+ erasepage
+ }{
+ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse
+ /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore
+ }ifelse
+ }if
+ end
+}def
+/lw_save_restore_override{
+ /md where{
+ pop
+ md begin
+ initializepage
+ /initializepage{}def
+ /pmSVsetup{}def
+ /endp{}def
+ /pse{}def
+ /psb{}def
+ /orig_showpage where
+ {pop}
+ {/orig_showpage/showpage load def}
+ ifelse
+ /showpage{orig_showpage gR}def
+ end
+ }if
+}def
+/pscript_showpage_override{
+ /NTPSOct95 where
+ {
+ begin
+ showpage
+ save
+ /showpage/restore load def
+ /restore{exch pop}def
+ end
+ }if
+}def
+/driver_media_override
{
-1 sub
-dup 0 eq{
-pop
-}{
--1 1{
-I exch get get
-}for
-}ifelse
-I 0 get 3 2 roll put
-}bind def
-/ReadSample32
+ /md where{
+ pop
+ md/initializepage known{
+ md/initializepage{}put
+ }if
+ md/rC known{
+ md/rC{4{pop}repeat}put
+ }if
+ }if
+ /mysetup where{
+ /mysetup[1 0 0 1 0 0]put
+ }if
+ Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put
+ level2
+ {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if
+}def
+/capture_mysetup
{
-4{
-File read not{
-mark(Insufficient data for function.)//error exec
-}if
-}repeat
-pop
-3 1 roll exch
-256 mul add 256 mul add
-//1_24_bitshift_1_sub div
-}bind def
-/ReadSample
+ /Pscript_Win_Data where{
+ pop
+ Pscript_Win_Data/mysetup known{
+ Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put
+ }if
+ }if
+}def
+/restore_mysetup
{
-Buffer BitsLeft BitsPerSample
-{2 copy ge{
-exit
-}if
-3 1 roll
-8 add 3 1 roll
-256 mul File read not{
-mark(Insufficient data for function.)//error exec
-}if
-add
-3 1 roll
-}loop
-sub dup
-2 index exch
-neg bitshift
-2 copy exch bitshift
-4 3 roll exch sub
-/Buffer exch def
-exch/BitsLeft exch def
-Div div
-}bind def
-/ReadSamplesRec
-{0
-exec
-}bind def
-/ReadSamples
+ /Pscript_Win_Data where{
+ pop
+ Pscript_Win_Data/mysetup known{
+ Adobe_AGM_Core/save_mysetup known{
+ Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put
+ Adobe_AGM_Core/save_mysetup undef
+ }if
+ }if
+ }if
+}def
+/driver_check_media_override
{
-//PDFR_DEBUG{
-(ReadSamples beg )print count =
-}if
-dup 1 eq{
-pop
-0 1 Size 0 get 1 sub{
-I exch 0 exch put
-0 1 M 1 sub{
-dup Range exch 2 mul 2 getinterval
-//PDFR_DEBUG{
-(Will read a sample ... )print
-}if
-BitsPerSample 32 eq{//ReadSample32}{//ReadSample}ifelse
-exec exch//ScaleVal exec
-//PDFR_DEBUG{
-(value=)print dup =
-}if
-exch Table exch get
-Size length//StoreSample exec
-}for
-}for
-}{
-1 sub
-dup Size exch get 0 exch 1 exch 1 sub{
-I exch 2 index exch put
-dup//ReadSamplesRec exec
-}for
-pop
-}ifelse
-//PDFR_DEBUG{
-(ReadSamples end )print count =
-}if
-}bind def
-//ReadSamplesRec 0//ReadSamples put
-/StreamToArray
-{//PDFR_DEBUG{
-(StreamToArray beg )print count =
-}if
-userdict/FuncDataReader get begin
-dup/BitsPerSample get/BitsPerSample exch def
-dup/Size get length/N exch def
-dup/Range get length 2 idiv/M exch def
-1 BitsPerSample bitshift 1 sub/Div exch def
-/BitsLeft 0 def
-/Buffer 0 def
-dup/Size get/Size exch def
-dup/Range get/Range exch def
-/File 1 index//MakeStreamReader exec def
-/I[N{0}repeat]def
-M array
-dup length 1 sub -1 0{
-2 index N//MakeTable exec
-2 index 3 1 roll put
-}for
-/Table exch def
-N//ReadSamples exec
-PDFR_DEBUG{
-(Table = )print Table ==
-}if
-/Data Table put
+ /PrepsDict where
+ {pop}
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and
+ }if
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix
+ }if
+ }ifelse
+}def
+AGMCORE_err_strings begin
+ /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def
+ /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def
+ /AGMCORE_invalid_color_space(This job contains an invalid color space. )def
end
-//PDFR_DEBUG{
-(StreamToArray end )print count =
-}if
-}bind def
-/FunctionToProc10
-{
-PDFR_DEBUG{
-(FunctionToProc10 beg, Range = )print dup/Range get ==
-}if
-dup/Order//knownget exec{
-1 ne{
-(Underimplemented function Type 0 Order 3.)=
-}if
-}if
-dup//StreamToArray exec
-dup/Range get length dup 2 eq{
-pop//FunctionToProc_x01 exec
-}{
-2 idiv//FunctionToProc_x0n exec
-}ifelse
-PDFR_DEBUG{
-(FunctionToProc10 end)=
-}if
-}bind def
-/FunctionToProc12
-{begin
-currentdict/C0//knownget exec{length 1 eq}{true}ifelse{
-N
-currentdict/C0//knownget exec{
-0 get
-}{
-0
-}ifelse
-currentdict/C1//knownget exec{
-0 get
-}{
-1
-}ifelse
-1 index sub
-[4 1 roll
-{
-4 2 roll
-exp mul add
-}aload pop
-]cvx
-}{
-[
-0 1 C0 length 1 sub{
-N
-C0 2 index get
-C1 3 index get
-4 3 roll pop
-1 index sub
-[/dup load
-5 2 roll
-{
-4 2 roll
-exp mul add
-exch
-}aload pop
-]cvx
-/exec load
-}for
-/pop load
-]cvx
-}ifelse
+/set_def_ht
+{AGMCORE_def_ht sethalftone}def
+/set_def_flat
+{AGMCORE_Default_flatness setflat}def
end
-//PDFR_DEBUG{
-(FunctionType2Proc : )print dup ==
-}if
-}bind def
-/FunctionToProc14
-{//MakeStreamReader exec cvx exec
-//PDFR_DEBUG{
-(FunctionType4Proc : )print dup ==
-}if
-}bind def
-/FunctionToProc1
-{
-dup/FunctionType get
-{dup 0 eq{
-pop//FunctionToProc10 exec exit
-}if
-dup 2 eq{
-pop//FunctionToProc12 exec exit
-}if
-dup 4 eq{
-pop//FunctionToProc14 exec exit
-}if
-mark exch(Function type )exch( isn't implemented yet.)//error exec
-}loop
-}bind def
-/FunctionToProc20
-{
-PDFR_DEBUG{
-(FunctionToProc20, Range = )print dup/Range get ==
-}if
-dup/Order//knownget exec{
-1 ne{
-(Underimplemented function Type 0 Order 3.)=
-}if
-}if
-dup//StreamToArray exec
-dup/Range get length dup 2 eq{
-pop//FunctionToProc_x01 exec
-}{
-2 idiv//FunctionToProc_x0n exec
-}ifelse
-}bind def
-/FunctionToProc
-{//PDFR_DEBUG{
-(FunctionToProc beg )print count =
-}if
-dup type/dicttype eq{
-dup/Domain get length 2 idiv
-{
-dup 1 eq{
-pop//FunctionToProc1 exec exit
-}if
-dup 2 eq{
-pop//FunctionToProc20 exec exit
-}if
-mark(Functions with many arguments aren't implemented yet.)//error exec
-}loop
-}{
-//PDFR_DEBUG{(Not a function dict, assume already a procedure.)print}if
-}ifelse
-//PDFR_DEBUG{
-(FunctionToProc end )print count =
-}if
-}bind def
-/spotfunctions mark
-/Round{
-abs exch abs 2 copy add 1 le{
-dup mul exch dup mul add 1 exch sub
-}{
-1 sub dup mul exch 1 sub dup mul add 1 sub
-}ifelse
-}
-/Diamond{
-abs exch abs 2 copy add .75 le{
-dup mul exch dup mul add 1 exch sub
-}{
-2 copy add 1.23 le{
-.85 mul add 1 exch sub
-}{
-1 sub dup mul exch 1 sub dup mul add 1 sub
-}ifelse
-}ifelse
-}
-/Ellipse{
-abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt{
-pop dup mul exch .75 div dup mul add 4 div 1 exch sub
-}{
-dup 1 gt{
-pop 1 exch sub dup mul exch 1 exch sub
-.75 div dup mul add 4 div 1 sub
-}{
-.5 exch sub exch pop exch pop
-}ifelse
-}ifelse
-}
-/EllipseA{dup mul .9 mul exch dup mul add 1 exch sub}
-/InvertedEllipseA{dup mul .9 mul exch dup mul add 1 sub}
-/EllipseB{dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub}
-/EllipseC{dup mul .9 mul exch dup mul add 1 exch sub}
-/InvertedEllipseC{dup mul .9 mul exch dup mul add 1 sub}
-/Line{exch pop abs neg}
-/LineX{pop}
-/LineY{exch pop}
-/Square{abs exch abs 2 copy lt{exch}if pop neg}
-/Cross{abs exch abs 2 copy gt{exch}if pop neg}
-/Rhomboid{abs exch abs 0.9 mul add 2 div}
-/DoubleDot{2{360 mul sin 2 div exch}repeat add}
-/InvertedDoubleDot{2{360 mul sin 2 div exch}repeat add neg}
-/SimpleDot{dup mul exch dup mul add 1 exch sub}
-/InvertedSimpleDot{dup mul exch dup mul add 1 sub}
-/CosineDot{180 mul cos exch 180 mul cos add 2 div}
-/Double{exch 2 div exch 2{360 mul sin 2 div exch}repeat add}
-/InvertedDouble{
-exch 2 div exch 2{360 mul sin 2 div exch}repeat add neg
-}
-.dicttomark readonly def
-/CheckColorSpace
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_CoolType_Core 2.31 0
%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved.
%%Version: 2.31 0
10 dict begin
/Adobe_CoolType_Passthru currentdict def
/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def
Adobe_CoolType_Core_Defined
{/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def}
if
userdict/Adobe_CoolType_Core 70 dict dup begin put
/Adobe_CoolType_Version 2.31 def
/Level2?
systemdict/languagelevel known dup
{pop systemdict/languagelevel get 2 ge}
if def
Level2? not
{
/currentglobal false def
/setglobal/pop load def
/gcheck{pop false}bind def
/currentpacking false def
/setpacking/pop load def
/SharedFontDirectory 0 dict def
}
if
currentpacking
true setpacking
currentglobal false setglobal
userdict/Adobe_CoolType_Data 2 copy known not
{2 copy 10 dict put}
if
get
begin
/@opStackCountByLevel 32 dict def
/@opStackLevel 0 def
/@dictStackCountByLevel 32 dict def
/@dictStackLevel 0 def
end
setglobal
currentglobal true setglobal
userdict/Adobe_CoolType_GVMFonts known not
{userdict/Adobe_CoolType_GVMFonts 10 dict put}
if
setglobal
currentglobal false setglobal
userdict/Adobe_CoolType_LVMFonts known not
{userdict/Adobe_CoolType_LVMFonts 10 dict put}
if
setglobal
/ct_VMDictPut
{
dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse
3 1 roll put
}bind def
/ct_VMDictUndef
{
dup Adobe_CoolType_GVMFonts exch known
{Adobe_CoolType_GVMFonts exch undef}
{
dup Adobe_CoolType_LVMFonts exch known
{Adobe_CoolType_LVMFonts exch undef}
{pop}
ifelse
}ifelse
}bind def
/ct_str1 1 string def
/ct_xshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
_ct_x _ct_y moveto
0
rmoveto
}
ifelse
/_ct_i _ct_i 1 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/ct_yshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
_ct_x _ct_y moveto
0 exch
rmoveto
}
ifelse
/_ct_i _ct_i 1 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/ct_xyshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
{_ct_na _ct_i 1 add get}stopped
{pop pop pop}
{
_ct_x _ct_y moveto
rmoveto
}
ifelse
}
ifelse
/_ct_i _ct_i 2 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def
/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def
/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def
currentglobal true setglobal
/ct_T3Defs
{
/BuildChar
{
1 index/Encoding get exch get
1 index/BuildGlyph get exec
}bind def
/BuildGlyph
{
exch begin
GlyphProcs exch get exec
end
}bind def
}bind def
setglobal
/@_SaveStackLevels
{
Adobe_CoolType_Data
begin
/@vmState currentglobal def false setglobal
@opStackCountByLevel
@opStackLevel
2 copy known not
{
2 copy
3 dict dup/args
7 index
5 add array put
put get
}
{
get dup/args get dup length 3 index lt
{
dup length 5 add array exch
1 index exch 0 exch putinterval
1 index exch/args exch put
}
{pop}
ifelse
}
ifelse
begin
count 1 sub
1 index lt
{pop count}
if
dup/argCount exch def
dup 0 gt
{
args exch 0 exch getinterval
astore pop
}
{pop}
ifelse
count
/restCount exch def
end
/@opStackLevel @opStackLevel 1 add def
countdictstack 1 sub
@dictStackCountByLevel exch @dictStackLevel exch put
/@dictStackLevel @dictStackLevel 1 add def
@vmState setglobal
end
}bind def
/@_RestoreStackLevels
{
Adobe_CoolType_Data
begin
/@opStackLevel @opStackLevel 1 sub def
@opStackCountByLevel @opStackLevel get
begin
count restCount sub dup 0 gt
{{pop}repeat}
{pop}
ifelse
args 0 argCount getinterval{}forall
end
/@dictStackLevel @dictStackLevel 1 sub def
@dictStackCountByLevel @dictStackLevel get
end
countdictstack exch sub dup 0 gt
{{end}repeat}
{pop}
ifelse
}bind def
/@_PopStackLevels
{
Adobe_CoolType_Data
begin
/@opStackLevel @opStackLevel 1 sub def
/@dictStackLevel @dictStackLevel 1 sub def
end
}bind def
/@Raise
{
exch cvx exch errordict exch get exec
stop
}bind def
/@ReRaise
{
cvx $error/errorname get errordict exch get exec
stop
}bind def
/@Stopped
{
0 @#Stopped
}bind def
/@#Stopped
{
@_SaveStackLevels
stopped
{@_RestoreStackLevels true}
{@_PopStackLevels false}
ifelse
}bind def
/@Arg
{
Adobe_CoolType_Data
begin
@opStackCountByLevel @opStackLevel 1 sub get
begin
args exch
argCount 1 sub exch sub get
end
end
}bind def
currentglobal true setglobal
/CTHasResourceForAllBug
Level2?
{
1 dict dup
/@shouldNotDisappearDictValue true def
Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put
begin
count @_SaveStackLevels
{(*){pop stop}128 string/Category resourceforall}
stopped pop
@_RestoreStackLevels
currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll
{
/@shouldNotDisappearDictValue known
{
{
end
currentdict 1 index eq
{pop exit}
if
}
loop
}
if
}
{
pop
end
}
ifelse
}
{false}
ifelse
def
true setglobal
/CTHasResourceStatusBug
Level2?
{
mark
{/steveamerige/Category resourcestatus}
stopped
{cleartomark true}
{cleartomark currentglobal not}
ifelse
}
{false}
ifelse
def
setglobal
/CTResourceStatus
{
mark 3 1 roll
/Category findresource
begin
({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
{cleartomark false}
{{3 2 roll pop true}{cleartomark false}ifelse}
ifelse
end
}bind def
/CTWorkAroundBugs
{
Level2?
{
/cid_PreLoad/ProcSet resourcestatus
{
pop pop
currentglobal
mark
{
(*)
{
dup/CMap CTHasResourceStatusBug
{CTResourceStatus}
{resourcestatus}
ifelse
{
pop dup 0 eq exch 1 eq or
{
dup/CMap findresource gcheck setglobal
/CMap undefineresource
}
{
pop CTHasResourceForAllBug
{exit}
{stop}
ifelse
}
ifelse
}
{pop}
ifelse
}
128 string/CMap resourceforall
}
stopped
{cleartomark}
stopped pop
setglobal
}
if
}
if
}bind def
/ds
{
Adobe_CoolType_Core
begin
CTWorkAroundBugs
/mo/moveto load def
/nf/newencodedfont load def
/msf{makefont setfont}bind def
/uf{dup undefinefont ct_VMDictUndef}bind def
/ur/undefineresource load def
/chp/charpath load def
/awsh/awidthshow load def
/wsh/widthshow load def
/ash/ashow load def
/@xshow/xshow load def
/@yshow/yshow load def
/@xyshow/xyshow load def
/@cshow/cshow load def
/sh/show load def
/rp/repeat load def
/.n/.notdef def
end
currentglobal false setglobal
userdict/Adobe_CoolType_Data 2 copy known not
{2 copy 10 dict put}
if
get
begin
/AddWidths? false def
/CC 0 def
/charcode 2 string def
/@opStackCountByLevel 32 dict def
/@opStackLevel 0 def
/@dictStackCountByLevel 32 dict def
/@dictStackLevel 0 def
/InVMFontsByCMap 10 dict def
/InVMDeepCopiedFonts 10 dict def
end
setglobal
}bind def
/dt
{
currentdict Adobe_CoolType_Core eq
{end}
if
}bind def
/ps
{
Adobe_CoolType_Core begin
Adobe_CoolType_GVMFonts begin
Adobe_CoolType_LVMFonts begin
SharedFontDirectory begin
}bind def
/pt
{
end
end
end
end
}bind def
/unload
{
systemdict/languagelevel known
{
systemdict/languagelevel get 2 ge
{
userdict/Adobe_CoolType_Core 2 copy known
{undef}
{pop pop}
ifelse
}
if
}
if
}bind def
/ndf
{
1 index where
{pop pop pop}
{dup xcheck{bind}if def}
ifelse
}def
/findfont systemdict
begin
userdict
begin
/globaldict where{/globaldict get begin}if
dup where pop exch get
/globaldict where{pop end}if
end
end
Adobe_CoolType_Core_Defined
{/systemfindfont exch def}
{
/findfont 1 index def
/systemfindfont exch def
}
ifelse
/undefinefont
{pop}ndf
/copyfont
{
currentglobal 3 1 roll
1 index gcheck setglobal
dup null eq{0}{dup length}ifelse
2 index length add 1 add dict
begin
exch
{
1 index/FID eq
{pop pop}
{def}
ifelse
}
forall
dup null eq
{pop}
{{def}forall}
ifelse
currentdict
end
exch setglobal
}bind def
/copyarray
{
currentglobal exch
dup gcheck setglobal
dup length array copy
exch setglobal
}bind def
/newencodedfont
{
currentglobal
{
SharedFontDirectory 3 index known
{SharedFontDirectory 3 index get/FontReferenced known}
{false}
ifelse
}
{
FontDirectory 3 index known
{FontDirectory 3 index get/FontReferenced known}
{
SharedFontDirectory 3 index known
{SharedFontDirectory 3 index get/FontReferenced known}
{false}
ifelse
}
ifelse
}
ifelse
dup
{
3 index findfont/FontReferenced get
2 index dup type/nametype eq
{findfont}
if ne
{pop false}
if
}
if
dup
{
1 index dup type/nametype eq
{findfont}
if
dup/CharStrings known
{
/CharStrings get length
4 index findfont/CharStrings get length
ne
{
pop false
}
if
}
{pop}
ifelse
}
if
{
pop
1 index findfont
/Encoding get exch
0 1 255
{2 copy get 3 index 3 1 roll put}
for
pop pop pop
}
{
currentglobal
4 1 roll
dup type/nametype eq
{findfont}
if
dup gcheck setglobal
dup dup maxlength 2 add dict
begin
exch
{
1 index/FID ne
2 index/Encoding ne and
{def}
{pop pop}
ifelse
}
forall
/FontReferenced exch def
/Encoding exch dup length array copy def
/FontName 1 index dup type/stringtype eq{cvn}if def dup
currentdict
end
definefont ct_VMDictPut
setglobal
}
ifelse
}bind def
/SetSubstituteStrategy
{
$SubstituteFont
begin
dup type/dicttype ne
{0 dict}
if
currentdict/$Strategies known
{
exch $Strategies exch
2 copy known
{
get
2 copy maxlength exch maxlength add dict
begin
{def}forall
{def}forall
currentdict
dup/$Init known
{dup/$Init get exec}
if
end
/$Strategy exch def
}
{pop pop pop}
ifelse
}
{pop pop}
ifelse
end
}bind def
/scff
{
$SubstituteFont
begin
dup type/stringtype eq
{dup length exch}
{null}
ifelse
/$sname exch def
/$slen exch def
/$inVMIndex
$sname null eq
{
1 index $str cvs
dup length $slen sub $slen getinterval cvn
}
{$sname}
ifelse def
end
{findfont}
@Stopped
{
dup length 8 add string exch
1 index 0(BadFont:)putinterval
1 index exch 8 exch dup length string cvs putinterval cvn
{findfont}
@Stopped
{pop/Courier findfont}
if
}
if
$SubstituteFont
begin
/$sname null def
/$slen 0 def
/$inVMIndex null def
end
}bind def
/isWidthsOnlyFont
{
dup/WidthsOnly known
{pop pop true}
{
dup/FDepVector known
{/FDepVector get{isWidthsOnlyFont dup{exit}if}forall}
{
dup/FDArray known
{/FDArray get{isWidthsOnlyFont dup{exit}if}forall}
{pop}
ifelse
}
ifelse
}
ifelse
}bind def
/ct_StyleDicts 4 dict dup begin
/Adobe-Japan1 4 dict dup begin
Level2?
{
/Serif
/HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiMin-W3}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiMin-W3/CIDFont resourcestatus
{pop pop/HeiseiMin-W3}
{/Ryumin-Light}
ifelse
}
{/Ryumin-Light}
ifelse
}
ifelse
def
/SansSerif
/HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiKakuGo-W5}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiKakuGo-W5/CIDFont resourcestatus
{pop pop/HeiseiKakuGo-W5}
{/GothicBBB-Medium}
ifelse
}
{/GothicBBB-Medium}
ifelse
}
ifelse
def
/HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiMaruGo-W4}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiMaruGo-W4/CIDFont resourcestatus
{pop pop/HeiseiMaruGo-W4}
{
/Jun101-Light-RKSJ-H/Font resourcestatus
{pop pop/Jun101-Light}
{SansSerif}
ifelse
}
ifelse
}
{
/Jun101-Light-RKSJ-H/Font resourcestatus
{pop pop/Jun101-Light}
{SansSerif}
ifelse
}
ifelse
}
ifelse
/RoundSansSerif exch def
/Default Serif def
}
{
/Serif/Ryumin-Light def
/SansSerif/GothicBBB-Medium def
{
(fonts/Jun101-Light-83pv-RKSJ-H)status
}stopped
{pop}{
{pop pop pop pop/Jun101-Light}
{SansSerif}
ifelse
/RoundSansSerif exch def
}ifelse
/Default Serif def
}
ifelse
end
def
/Adobe-Korea1 4 dict dup begin
/Serif/HYSMyeongJo-Medium def
/SansSerif/HYGoThic-Medium def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
/Adobe-GB1 4 dict dup begin
/Serif/STSong-Light def
/SansSerif/STHeiti-Regular def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
/Adobe-CNS1 4 dict dup begin
/Serif/MKai-Medium def
/SansSerif/MHei-Medium def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
end
def
Level2?{currentglobal true setglobal}if
/ct_BoldRomanWidthProc
{
stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth
0 0
}bind def
/ct_Type0WidthProc
{
dup stringwidth 0 0 moveto
2 index true charpath pathbbox
0 -1
7 index 2 div .88
setcachedevice2
pop
0 0
}bind def
/ct_Type0WMode1WidthProc
{
dup stringwidth
pop 2 div neg -0.88
2 copy
moveto
0 -1
5 -1 roll true charpath pathbbox
setcachedevice
}bind def
/cHexEncoding
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
/ct_BoldBaseFont
11 dict begin
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding cHexEncoding def
/_setwidthProc/ct_BoldRomanWidthProc load def
/_bcstr1 1 string def
/BuildChar
{
exch begin
_basefont setfont
_bcstr1 dup 0 4 -1 roll put
dup
_setwidthProc
3 copy
moveto
show
_basefonto setfont
moveto
show
end
}bind def
currentdict
end
def
systemdict/composefont known
{
/ct_DefineIdentity-H
{
/Identity-H/CMap resourcestatus
{
pop pop
}
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry(Adobe)def
/Ordering(Identity)def
/Supplement 0 def
end def
/CMapName/Identity-H def
/CMapVersion 1.000 def
/CMapType 1 def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
}
def
/ct_BoldBaseCIDFont
11 dict begin
/CIDFontType 1 def
/CIDFontName/ct_BoldBaseCIDFont def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/_setwidthProc/ct_Type0WidthProc load def
/_bcstr2 2 string def
/BuildGlyph
{
exch begin
_basefont setfont
_bcstr2 1 2 index 256 mod put
_bcstr2 0 3 -1 roll 256 idiv put
_bcstr2 dup _setwidthProc
3 copy
moveto
show
_basefonto setfont
moveto
show
end
}bind def
currentdict
end
def
}if
Level2?{setglobal}if
/ct_CopyFont{
{
1 index/FID ne 2 index/UniqueID ne and
{def}{pop pop}ifelse
}forall
}bind def
/ct_Type0CopyFont
{
exch
dup length dict
begin
ct_CopyFont
[
exch
FDepVector
{
dup/FontType get 0 eq
{
1 index ct_Type0CopyFont
/_ctType0 exch definefont
}
{
/_ctBaseFont exch
2 index exec
}
ifelse
exch
}
forall
pop
]
/FDepVector exch def
currentdict
end
}bind def
/ct_MakeBoldFont
{
dup/ct_SyntheticBold known
{
dup length 3 add dict begin
ct_CopyFont
/ct_StrokeWidth .03 0 FontMatrix idtransform pop def
/ct_SyntheticBold true def
currentdict
end
definefont
}
{
dup dup length 3 add dict
begin
ct_CopyFont
/PaintType 2 def
/StrokeWidth .03 0 FontMatrix idtransform pop def
/dummybold currentdict
end
definefont
dup/FontType get dup 9 ge exch 11 le and
{
ct_BoldBaseCIDFont
dup length 3 add dict copy begin
dup/CIDSystemInfo get/CIDSystemInfo exch def
ct_DefineIdentity-H
/_Type0Identity/Identity-H 3 -1 roll[exch]composefont
/_basefont exch def
/_Type0Identity/Identity-H 3 -1 roll[exch]composefont
/_basefonto exch def
currentdict
end
/CIDFont defineresource
}
{
ct_BoldBaseFont
dup length 3 add dict copy begin
/_basefont exch def
/_basefonto exch def
currentdict
end
definefont
}
ifelse
}
ifelse
}bind def
/ct_MakeBold{
1 index
1 index
findfont
currentglobal 5 1 roll
dup gcheck setglobal
dup
/FontType get 0 eq
{
dup/WMode known{dup/WMode get 1 eq}{false}ifelse
version length 4 ge
and
{version 0 4 getinterval cvi 2015 ge}
{true}
ifelse
{/ct_Type0WidthProc}
{/ct_Type0WMode1WidthProc}
ifelse
ct_BoldBaseFont/_setwidthProc 3 -1 roll load put
{ct_MakeBoldFont}ct_Type0CopyFont definefont
}
{
dup/_fauxfont known not 1 index/SubstMaster known not and
{
ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put
ct_MakeBoldFont
}
{
2 index 2 index eq
{exch pop }
{
dup length dict begin
ct_CopyFont
currentdict
end
definefont
}
ifelse
}
ifelse
}
ifelse
pop pop pop
setglobal
}bind def
/?str1 256 string def
/?set
{
$SubstituteFont
begin
/$substituteFound false def
/$fontname 1 index def
/$doSmartSub false def
end
dup
findfont
$SubstituteFont
begin
$substituteFound
{false}
{
dup/FontName known
{
dup/FontName get $fontname eq
1 index/DistillerFauxFont known not and
/currentdistillerparams where
{pop false 2 index isWidthsOnlyFont not and}
if
}
{false}
ifelse
}
ifelse
exch pop
/$doSmartSub true def
end
{
5 1 roll pop pop pop pop
findfont
}
{
1 index
findfont
dup/FontType get 3 eq
{
6 1 roll pop pop pop pop pop false
}
{pop true}
ifelse
{
$SubstituteFont
begin
pop pop
/$styleArray 1 index def
/$regOrdering 2 index def
pop pop
0 1 $styleArray length 1 sub
{
$styleArray exch get
ct_StyleDicts $regOrdering
2 copy known
{
get
exch 2 copy known not
{pop/Default}
if
get
dup type/nametype eq
{
?str1 cvs length dup 1 add exch
?str1 exch(-)putinterval
exch dup length exch ?str1 exch 3 index exch putinterval
add ?str1 exch 0 exch getinterval cvn
}
{
pop pop/Unknown
}
ifelse
}
{
pop pop pop pop/Unknown
}
ifelse
}
for
end
findfont
}if
}
ifelse
currentglobal false setglobal 3 1 roll
null copyfont definefont pop
setglobal
}bind def
setpacking
userdict/$SubstituteFont 25 dict put
1 dict
begin
/SubstituteFont
dup $error exch 2 copy known
{get}
{pop pop{pop/Courier}bind}
ifelse def
/currentdistillerparams where dup
{
pop pop
currentdistillerparams/CannotEmbedFontPolicy 2 copy known
{get/Error eq}
{pop pop false}
ifelse
}
if not
{
countdictstack array dictstack 0 get
begin
userdict
begin
$SubstituteFont
begin
/$str 128 string def
/$fontpat 128 string def
/$slen 0 def
/$sname null def
/$match false def
/$fontname null def
/$substituteFound false def
/$inVMIndex null def
/$doSmartSub true def
/$depth 0 def
/$fontname null def
/$italicangle 26.5 def
/$dstack null def
/$Strategies 10 dict dup
begin
/$Type3Underprint
{
currentglobal exch false setglobal
11 dict
begin
/UseFont exch
$WMode 0 ne
{
dup length dict copy
dup/WMode $WMode put
/UseFont exch definefont
}
if def
/FontName $fontname dup type/stringtype eq{cvn}if def
/FontType 3 def
/FontMatrix[.001 0 0 .001 0 0]def
/Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def
/FontBBox[0 0 0 0]def
/CCInfo 7 dict dup
begin
/cc null def
/x 0 def
/y 0 def
end def
/BuildChar
{
exch
begin
CCInfo
begin
1 string dup 0 3 index put exch pop
/cc exch def
UseFont 1000 scalefont setfont
cc stringwidth/y exch def/x exch def
x y setcharwidth
$SubstituteFont/$Strategy get/$Underprint get exec
0 0 moveto cc show
x y moveto
end
end
}bind def
currentdict
end
exch setglobal
}bind def
/$GetaTint
2 dict dup
begin
/$BuildFont
{
dup/WMode known
{dup/WMode get}
{0}
ifelse
/$WMode exch def
$fontname exch
dup/FontName known
{
dup/FontName get
dup type/stringtype eq{cvn}if
}
{/unnamedfont}
ifelse
exch
Adobe_CoolType_Data/InVMDeepCopiedFonts get
1 index/FontName get known
{
pop
Adobe_CoolType_Data/InVMDeepCopiedFonts get
1 index get
null copyfont
}
{$deepcopyfont}
ifelse
exch 1 index exch/FontBasedOn exch put
dup/FontName $fontname dup type/stringtype eq{cvn}if put
definefont
Adobe_CoolType_Data/InVMDeepCopiedFonts get
begin
dup/FontBasedOn get 1 index def
end
}bind def
/$Underprint
{
gsave
x abs y abs gt
{/y 1000 def}
{/x -1000 def 500 120 translate}
ifelse
Level2?
{
[/Separation(All)/DeviceCMYK{0 0 0 1 pop}]
setcolorspace
}
{0 setgray}
ifelse
10 setlinewidth
x .8 mul
[7 3]
{
y mul 8 div 120 sub x 10 div exch moveto
0 y 4 div neg rlineto
dup 0 rlineto
0 y 4 div rlineto
closepath
gsave
Level2?
{.2 setcolor}
{.8 setgray}
ifelse
fill grestore
stroke
}
forall
pop
grestore
}bind def
end def
/$Oblique
1 dict dup
begin
/$BuildFont
{
currentglobal exch dup gcheck setglobal
null copyfont
begin
/FontBasedOn
currentdict/FontName known
{
FontName
dup type/stringtype eq{cvn}if
}
{/unnamedfont}
ifelse
def
/FontName $fontname dup type/stringtype eq{cvn}if def
/currentdistillerparams where
{pop}
{
/FontInfo currentdict/FontInfo known
{FontInfo null copyfont}
{2 dict}
ifelse
dup
begin
/ItalicAngle $italicangle def
/FontMatrix FontMatrix
[1 0 ItalicAngle dup sin exch cos div 1 0 0]
matrix concatmatrix readonly
end
4 2 roll def
def
}
ifelse
FontName currentdict
end
definefont
exch setglobal
}bind def
end def
/$None
1 dict dup
begin
/$BuildFont{}bind def
end def
end def
/$Oblique SetSubstituteStrategy
/$findfontByEnum
{
dup type/stringtype eq{cvn}if
dup/$fontname exch def
$sname null eq
{$str cvs dup length $slen sub $slen getinterval}
{pop $sname}
ifelse
$fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval
/$match false def
$SubstituteFont/$dstack countdictstack array dictstack put
mark
{
$fontpat 0 $slen 7 add getinterval
{/$match exch def exit}
$str filenameforall
}
stopped
{
cleardictstack
currentdict
true
$SubstituteFont/$dstack get
{
exch
{
1 index eq
{pop false}
{true}
ifelse
}
{begin false}
ifelse
}
forall
pop
}
if
cleartomark
/$slen 0 def
$match false ne
{$match(fonts/)anchorsearch pop pop cvn}
{/Courier}
ifelse
}bind def
/$ROS 1 dict dup
begin
/Adobe 4 dict dup
begin
/Japan1 [/Ryumin-Light/HeiseiMin-W3
/GothicBBB-Medium/HeiseiKakuGo-W5
/HeiseiMaruGo-W4/Jun101-Light]def
/Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def
/GB1 [/STSong-Light/STHeiti-Regular]def
/CNS1 [/MKai-Medium/MHei-Medium]def
end def
end def
/$cmapname null def
/$deepcopyfont
{
dup/FontType get 0 eq
{
1 dict dup/FontName/copied put copyfont
begin
/FDepVector FDepVector copyarray
0 1 2 index length 1 sub
{
2 copy get $deepcopyfont
dup/FontName/copied put
/copied exch definefont
3 copy put pop pop
}
for
def
currentdict
end
}
{$Strategies/$Type3Underprint get exec}
ifelse
}bind def
/$buildfontname
{
dup/CIDFont findresource/CIDSystemInfo get
begin
Registry length Ordering length Supplement 8 string cvs
3 copy length 2 add add add string
dup 5 1 roll dup 0 Registry putinterval
dup 4 index(-)putinterval
dup 4 index 1 add Ordering putinterval
4 2 roll add 1 add 2 copy(-)putinterval
end
1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch
anchorsearch
{pop pop 3 2 roll putinterval cvn/$cmapname exch def}
{pop pop pop pop pop}
ifelse
length
$str 1 index(-)putinterval 1 add
$str 1 index $cmapname $fontpat cvs putinterval
$cmapname length add
$str exch 0 exch getinterval cvn
}bind def
/$findfontByROS
{
/$fontname exch def
$ROS Registry 2 copy known
{
get Ordering 2 copy known
{get}
{pop pop[]}
ifelse
}
{pop pop[]}
ifelse
false exch
{
dup/CIDFont resourcestatus
{
pop pop
save
1 index/CIDFont findresource
dup/WidthsOnly known
{dup/WidthsOnly get}
{false}
ifelse
exch pop
exch restore
{pop}
{exch pop true exit}
ifelse
}
{pop}
ifelse
}
forall
{$str cvs $buildfontname}
{
false(*)
{
save exch
dup/CIDFont findresource
dup/WidthsOnly known
{dup/WidthsOnly get not}
{true}
ifelse
exch/CIDSystemInfo get
dup/Registry get Registry eq
exch/Ordering get Ordering eq and and
{exch restore exch pop true exit}
{pop restore}
ifelse
}
$str/CIDFont resourceforall
{$buildfontname}
{$fontname $findfontByEnum}
ifelse
}
ifelse
}bind def
end
end
currentdict/$error known currentdict/languagelevel known and dup
{pop $error/SubstituteFont known}
if
dup
{$error}
{Adobe_CoolType_Core}
ifelse
begin
{
/SubstituteFont
/CMap/Category resourcestatus
{
pop pop
{
$SubstituteFont
begin
/$substituteFound true def
dup length $slen gt
$sname null ne or
$slen 0 gt and
{
$sname null eq
{dup $str cvs dup length $slen sub $slen getinterval cvn}
{$sname}
ifelse
Adobe_CoolType_Data/InVMFontsByCMap get
1 index 2 copy known
{
get
false exch
{
pop
currentglobal
{
GlobalFontDirectory 1 index known
{exch pop true exit}
{pop}
ifelse
}
{
FontDirectory 1 index known
{exch pop true exit}
{
GlobalFontDirectory 1 index known
{exch pop true exit}
{pop}
ifelse
}
ifelse
}
ifelse
}
forall
}
{pop pop false}
ifelse
{
exch pop exch pop
}
{
dup/CMap resourcestatus
{
pop pop
dup/$cmapname exch def
/CMap findresource/CIDSystemInfo get{def}forall
$findfontByROS
}
{
128 string cvs
dup(-)search
{
3 1 roll search
{
3 1 roll pop
{dup cvi}
stopped
{pop pop pop pop pop $findfontByEnum}
{
4 2 roll pop pop
exch length
exch
2 index length
2 index
sub
exch 1 sub -1 0
{
$str cvs dup length
4 index
0
4 index
4 3 roll add
getinterval
exch 1 index exch 3 index exch
putinterval
dup/CMap resourcestatus
{
pop pop
4 1 roll pop pop pop
dup/$cmapname exch def
/CMap findresource/CIDSystemInfo get{def}forall
$findfontByROS
true exit
}
{pop}
ifelse
}
for
dup type/booleantype eq
{pop}
{pop pop pop $findfontByEnum}
ifelse
}
ifelse
}
{pop pop pop $findfontByEnum}
ifelse
}
{pop pop $findfontByEnum}
ifelse
}
ifelse
}
ifelse
}
{//SubstituteFont exec}
ifelse
/$slen 0 def
end
}
}
{
{
$SubstituteFont
begin
/$substituteFound true def
dup length $slen gt
$sname null ne or
$slen 0 gt and
{$findfontByEnum}
{//SubstituteFont exec}
ifelse
end
}
}
ifelse
bind readonly def
Adobe_CoolType_Core/scfindfont/systemfindfont load put
}
{
/scfindfont
{
$SubstituteFont
begin
dup systemfindfont
dup/FontName known
{dup/FontName get dup 3 index ne}
{/noname true}
ifelse
dup
{
/$origfontnamefound 2 index def
/$origfontname 4 index def/$substituteFound true def
}
if
exch pop
{
$slen 0 gt
$sname null ne
3 index length $slen gt or and
{
pop dup $findfontByEnum findfont
dup maxlength 1 add dict
begin
{1 index/FID eq{pop pop}{def}ifelse}
forall
currentdict
end
definefont
dup/FontName known{dup/FontName get}{null}ifelse
$origfontnamefound ne
{
$origfontname $str cvs print
( substitution revised, using )print
dup/FontName known
{dup/FontName get}{(unspecified font)}
ifelse
$str cvs print(.\n)print
}
if
}
{exch pop}
ifelse
}
{exch pop}
ifelse
end
}bind def
}
ifelse
end
end
Adobe_CoolType_Core_Defined not
{
Adobe_CoolType_Core/findfont
{
$SubstituteFont
begin
$depth 0 eq
{
/$fontname 1 index dup type/stringtype ne{$str cvs}if def
/$substituteFound false def
}
if
/$depth $depth 1 add def
end
scfindfont
$SubstituteFont
begin
/$depth $depth 1 sub def
$substituteFound $depth 0 eq and
{
$inVMIndex null ne
{dup $inVMIndex $AddInVMFont}
if
$doSmartSub
{
currentdict/$Strategy known
{$Strategy/$BuildFont get exec}
if
}
if
}
if
end
}bind put
}
if
}
if
end
/$AddInVMFont
{
exch/FontName 2 copy known
{
get
1 dict dup begin exch 1 index gcheck def end exch
Adobe_CoolType_Data/InVMFontsByCMap get exch
$DictAdd
}
{pop pop pop}
ifelse
}bind def
/$DictAdd
{
2 copy known not
{2 copy 4 index length dict put}
if
Level2? not
{
2 copy get dup maxlength exch length 4 index length add lt
2 copy get dup length 4 index length add exch maxlength 1 index lt
{
2 mul dict
begin
2 copy get{forall}def
2 copy currentdict put
end
}
{pop}
ifelse
}
if
get
begin
{def}
forall
end
}bind def
end
end
%%EndResource
currentglobal true setglobal
%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated.
%%Version: 1.23 0
systemdict/languagelevel known dup
{currentglobal false setglobal}
{false}
ifelse
exch
userdict/Adobe_CoolType_Utility 2 copy known
{2 copy get dup maxlength 27 add dict copy}
{27 dict}
ifelse put
Adobe_CoolType_Utility
begin
/@eexecStartData
<BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A>def
/@recognizeCIDFont null def
/ct_Level2? exch def
/ct_Clone? 1183615869 internaldict dup
/CCRun known not
exch/eCCRun known not
ct_Level2? and or def
ct_Level2?
{globaldict begin currentglobal true setglobal}
if
/ct_AddStdCIDMap
ct_Level2?
{{
mark
Adobe_CoolType_Utility/@recognizeCIDFont currentdict put
{
((Hex)57 StartData
0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec
}
stopped
{
cleartomark
Adobe_CoolType_Utility/@recognizeCIDFont get
countdictstack dup array dictstack
exch 1 sub -1 0
{
2 copy get 3 index eq
{1 index length exch sub 1 sub{end}repeat exit}
{pop}
ifelse
}
for
pop pop
Adobe_CoolType_Utility/@eexecStartData get eexec
}
{cleartomark}
ifelse
}}
{{
Adobe_CoolType_Utility/@eexecStartData get eexec
}}
ifelse bind def
userdict/cid_extensions known
dup{cid_extensions/cid_UpdateDB known and}if
{
cid_extensions
begin
/cid_GetCIDSystemInfo
{
1 index type/stringtype eq
{exch cvn exch}
if
cid_extensions
begin
dup load 2 index known
{
2 copy
cid_GetStatusInfo
dup null ne
{
1 index load
3 index get
dup null eq
{pop pop cid_UpdateDB}
{
exch
1 index/Created get eq
{exch pop exch pop}
{pop cid_UpdateDB}
ifelse
}
ifelse
}
{pop cid_UpdateDB}
ifelse
}
{cid_UpdateDB}
ifelse
end
}bind def
end
}
if
ct_Level2?
{end setglobal}
if
/ct_UseNativeCapability? systemdict/composefont known def
/ct_MakeOCF 35 dict def
/ct_Vars 25 dict def
/ct_GlyphDirProcs 6 dict def
/ct_BuildCharDict 15 dict dup
begin
/charcode 2 string def
/dst_string 1500 string def
/nullstring()def
/usewidths? true def
end def
ct_Level2?{setglobal}{pop}ifelse
ct_GlyphDirProcs
begin
/GetGlyphDirectory
{
systemdict/languagelevel known
{pop/CIDFont findresource/GlyphDirectory get}
{
1 index/CIDFont findresource/GlyphDirectory
get dup type/dicttype eq
{
dup dup maxlength exch length sub 2 index lt
{
dup length 2 index add dict copy 2 index
/CIDFont findresource/GlyphDirectory 2 index put
}
if
}
if
exch pop exch pop
}
ifelse
+
}def
/+
{
systemdict/languagelevel known
{
currentglobal false setglobal
3 dict begin
/vm exch def
}
{1 dict begin}
ifelse
/$ exch def
systemdict/languagelevel known
{
vm setglobal
/gvm currentglobal def
$ gcheck setglobal
}
if
?{$ begin}if
}def
/?{$ type/dicttype eq}def
/|{
userdict/Adobe_CoolType_Data known
{
Adobe_CoolType_Data/AddWidths? known
{
currentdict Adobe_CoolType_Data
begin
begin
AddWidths?
{
Adobe_CoolType_Data/CC 3 index put
?{def}{$ 3 1 roll put}ifelse
CC charcode exch 1 index 0 2 index 256 idiv put
1 index exch 1 exch 256 mod put
stringwidth 2 array astore
currentfont/Widths get exch CC exch put
}
{?{def}{$ 3 1 roll put}ifelse}
ifelse
end
end
}
{?{def}{$ 3 1 roll put}ifelse} ifelse
}
{?{def}{$ 3 1 roll put}ifelse}
ifelse
}def
/!
{
?{end}if
systemdict/languagelevel known
{gvm setglobal}
if
end
}def
/:{string currentfile exch readstring pop}executeonly def
end
ct_MakeOCF
begin
/ct_cHexEncoding
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
/ct_CID_STR_SIZE 8000 def
/ct_mkocfStr100 100 string def
/ct_defaultFontMtx[.001 0 0 .001 0 0]def
/ct_1000Mtx[1000 0 0 1000 0 0]def
/ct_raise{exch cvx exch errordict exch get exec stop}bind def
/ct_reraise
{cvx $error/errorname get(Error: )print dup( )cvs print
errordict exch get exec stop
}bind def
/ct_cvnsi
{
1 index add 1 sub 1 exch 0 4 1 roll
{
2 index exch get
exch 8 bitshift
add
}
for
exch pop
}bind def
/ct_GetInterval
{
Adobe_CoolType_Utility/ct_BuildCharDict get
begin
/dst_index 0 def
dup dst_string length gt
{dup string/dst_string exch def}
if
1 index ct_CID_STR_SIZE idiv
/arrayIndex exch def
2 index arrayIndex get
2 index
arrayIndex ct_CID_STR_SIZE mul
sub
{
dup 3 index add 2 index length le
{
2 index getinterval
dst_string dst_index 2 index putinterval
length dst_index add/dst_index exch def
exit
}
{
1 index length 1 index sub
dup 4 1 roll
getinterval
dst_string dst_index 2 index putinterval
pop dup dst_index add/dst_index exch def
sub
/arrayIndex arrayIndex 1 add def
2 index dup length arrayIndex gt
{arrayIndex get}
{
pop
exit
}
ifelse
0
}
ifelse
}
loop
pop pop pop
dst_string 0 dst_index getinterval
end
}bind def
ct_Level2?
{
/ct_resourcestatus
currentglobal mark true setglobal
{/unknowninstancename/Category resourcestatus}
stopped
{cleartomark setglobal true}
{cleartomark currentglobal not exch setglobal}
ifelse
{
{
mark 3 1 roll/Category findresource
begin
ct_Vars/vm currentglobal put
({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
{cleartomark false}
{{3 2 roll pop true}{cleartomark false}ifelse}
ifelse
ct_Vars/vm get setglobal
end
}
}
{{resourcestatus}}
ifelse bind def
/CIDFont/Category ct_resourcestatus
{pop pop}
{
currentglobal true setglobal
/Generic/Category findresource
dup length dict copy
dup/InstanceType/dicttype put
/CIDFont exch/Category defineresource pop
setglobal
}
ifelse
ct_UseNativeCapability?
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry(Adobe)def
/Ordering(Identity)def
/Supplement 0 def
end def
/CMapName/Identity-H def
/CMapVersion 1.000 def
/CMapType 1 def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
if
}
{
/ct_Category 2 dict begin
/CIDFont 10 dict def
/ProcSet 2 dict def
currentdict
end
def
/defineresource
{
ct_Category 1 index 2 copy known
{
get
dup dup maxlength exch length eq
{
dup length 10 add dict copy
ct_Category 2 index 2 index put
}
if
3 index 3 index put
pop exch pop
}
{pop pop/defineresource/undefined ct_raise}
ifelse
}bind def
/findresource
{
ct_Category 1 index 2 copy known
{
get
2 index 2 copy known
{get 3 1 roll pop pop}
{pop pop/findresource/undefinedresource ct_raise}
ifelse
}
{pop pop/findresource/undefined ct_raise}
ifelse
}bind def
/resourcestatus
{
ct_Category 1 index 2 copy known
{
get
2 index known
exch pop exch pop
{
0 -1 true
}
{
false
}
ifelse
}
{pop pop/findresource/undefined ct_raise}
ifelse
}bind def
/ct_resourcestatus/resourcestatus load def
}
ifelse
/ct_CIDInit 2 dict
begin
/ct_cidfont_stream_init
{
{
dup(Binary)eq
{
pop
null
currentfile
ct_Level2?
{
{cid_BYTE_COUNT()/SubFileDecode filter}
stopped
{pop pop pop}
if
}
if
/readstring load
exit
}
if
dup(Hex)eq
{
pop
currentfile
ct_Level2?
{
{null exch/ASCIIHexDecode filter/readstring}
stopped
{pop exch pop(>)exch/readhexstring}
if
}
{(>)exch/readhexstring}
ifelse
load
exit
}
if
/StartData/typecheck ct_raise
}
loop
cid_BYTE_COUNT ct_CID_STR_SIZE le
{
2 copy cid_BYTE_COUNT string exch exec
pop
1 array dup
3 -1 roll
0 exch put
}
{
cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi
dup array exch 2 sub 0 exch 1 exch
{
2 copy
5 index
ct_CID_STR_SIZE
string
6 index exec
pop
put
pop
}
for
2 index
cid_BYTE_COUNT ct_CID_STR_SIZE mod string
3 index exec
pop
1 index exch
1 index length 1 sub
exch put
}
ifelse
cid_CIDFONT exch/GlyphData exch put
2 index null eq
{
pop pop pop
}
{
pop/readstring load
1 string exch
{
3 copy exec
pop
dup length 0 eq
{
pop pop pop pop pop
true exit
}
if
4 index
eq
{
pop pop pop pop
false exit
}
if
}
loop
pop
}
ifelse
}bind def
/StartData
{
mark
{
currentdict
dup/FDArray get 0 get/FontMatrix get
0 get 0.001 eq
{
dup/CDevProc known not
{
/CDevProc 1183615869 internaldict/stdCDevProc 2 copy known
{get}
{
pop pop
{pop pop pop pop pop 0 -1000 7 index 2 div 880}
}
ifelse
def
}
if
}
{
/CDevProc
{
pop pop pop pop pop
0
1 cid_temp/cid_CIDFONT get
/FDArray get 0 get
/FontMatrix get 0 get div
7 index 2 div
1 index 0.88 mul
}def
}
ifelse
/cid_temp 15 dict def
cid_temp
begin
/cid_CIDFONT exch def
3 copy pop
dup/cid_BYTE_COUNT exch def 0 gt
{
ct_cidfont_stream_init
FDArray
{
/Private get
dup/SubrMapOffset known
{
begin
/Subrs SubrCount array def
Subrs
SubrMapOffset
SubrCount
SDBytes
ct_Level2?
{
currentdict dup/SubrMapOffset undef
dup/SubrCount undef
/SDBytes undef
}
if
end
/cid_SD_BYTES exch def
/cid_SUBR_COUNT exch def
/cid_SUBR_MAP_OFFSET exch def
/cid_SUBRS exch def
cid_SUBR_COUNT 0 gt
{
GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
0 cid_SD_BYTES ct_cvnsi
0 1 cid_SUBR_COUNT 1 sub
{
exch 1 index
1 add
cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
GlyphData exch cid_SD_BYTES ct_GetInterval
0 cid_SD_BYTES ct_cvnsi
cid_SUBRS 4 2 roll
GlyphData exch
4 index
1 index
sub
ct_GetInterval
dup length string copy put
}
for
pop
}
if
}
{pop}
ifelse
}
forall
}
if
cleartomark pop pop
end
CIDFontName currentdict/CIDFont defineresource pop
end end
}
stopped
{cleartomark/StartData ct_reraise}
if
}bind def
currentdict
end def
/ct_saveCIDInit
{
/CIDInit/ProcSet ct_resourcestatus
{true}
{/CIDInitC/ProcSet ct_resourcestatus}
ifelse
{
pop pop
/CIDInit/ProcSet findresource
ct_UseNativeCapability?
{pop null}
{/CIDInit ct_CIDInit/ProcSet defineresource pop}
ifelse
}
{/CIDInit ct_CIDInit/ProcSet defineresource pop null}
ifelse
ct_Vars exch/ct_oldCIDInit exch put
}bind def
/ct_restoreCIDInit
{
ct_Vars/ct_oldCIDInit get dup null ne
{/CIDInit exch/ProcSet defineresource pop}
{pop}
ifelse
}bind def
/ct_BuildCharSetUp
{
1 index
begin
CIDFont
begin
Adobe_CoolType_Utility/ct_BuildCharDict get
begin
/ct_dfCharCode exch def
/ct_dfDict exch def
CIDFirstByte ct_dfCharCode add
dup CIDCount ge
{pop 0}
if
/cid exch def
{
GlyphDirectory cid 2 copy known
{get}
{pop pop nullstring}
ifelse
dup length FDBytes sub 0 gt
{
dup
FDBytes 0 ne
{0 FDBytes ct_cvnsi}
{pop 0}
ifelse
/fdIndex exch def
dup length FDBytes sub FDBytes exch getinterval
/charstring exch def
exit
}
{
pop
cid 0 eq
{/charstring nullstring def exit}
if
/cid 0 def
}
ifelse
}
loop
}def
/ct_SetCacheDevice
{
0 0 moveto
dup stringwidth
3 -1 roll
true charpath
pathbbox
0 -1000
7 index 2 div 880
setcachedevice2
0 0 moveto
}def
/ct_CloneSetCacheProc
{
1 eq
{
stringwidth
pop -2 div -880
0 -1000 setcharwidth
moveto
}
{
usewidths?
{
currentfont/Widths get cid
2 copy known
{get exch pop aload pop}
{pop pop stringwidth}
ifelse
}
{stringwidth}
ifelse
setcharwidth
0 0 moveto
}
ifelse
}def
/ct_Type3ShowCharString
{
ct_FDDict fdIndex 2 copy known
{get}
{
currentglobal 3 1 roll
1 index gcheck setglobal
ct_Type1FontTemplate dup maxlength dict copy
begin
FDArray fdIndex get
dup/FontMatrix 2 copy known
{get}
{pop pop ct_defaultFontMtx}
ifelse
/FontMatrix exch dup length array copy def
/Private get
/Private exch def
/Widths rootfont/Widths get def
/CharStrings 1 dict dup/.notdef
<d841272cf18f54fc13>dup length string copy put def
currentdict
end
/ct_Type1Font exch definefont
dup 5 1 roll put
setglobal
}
ifelse
dup/CharStrings get 1 index/Encoding get
ct_dfCharCode get charstring put
rootfont/WMode 2 copy known
{get}
{pop pop 0}
ifelse
exch
1000 scalefont setfont
ct_str1 0 ct_dfCharCode put
ct_str1 exch ct_dfSetCacheProc
ct_SyntheticBold
{
currentpoint
ct_str1 show
newpath
moveto
ct_str1 true charpath
ct_StrokeWidth setlinewidth
stroke
}
{ct_str1 show}
ifelse
}def
/ct_Type4ShowCharString
{
ct_dfDict ct_dfCharCode charstring
FDArray fdIndex get
dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not
{ct_1000Mtx matrix concatmatrix concat}
{pop}
ifelse
/Private get
Adobe_CoolType_Utility/ct_Level2? get not
{
ct_dfDict/Private
3 -1 roll
{put}
1183615869 internaldict/superexec get exec
}
if
1183615869 internaldict
Adobe_CoolType_Utility/ct_Level2? get
{1 index}
{3 index/Private get mark 6 1 roll}
ifelse
dup/RunInt known
{/RunInt get}
{pop/CCRun}
ifelse
get exec
Adobe_CoolType_Utility/ct_Level2? get not
{cleartomark}
if
}bind def
/ct_BuildCharIncremental
{
{
Adobe_CoolType_Utility/ct_MakeOCF get begin
ct_BuildCharSetUp
ct_ShowCharString
}
stopped
{stop}
if
end
end
end
end
}bind def
/BaseFontNameStr(BF00)def
/ct_Type1FontTemplate 14 dict
begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]def
/FontBBox [-250 -250 1250 1250]def
/Encoding ct_cHexEncoding def
/PaintType 0 def
currentdict
end def
/BaseFontTemplate 11 dict
begin
/FontMatrix [0.001 0 0 0.001 0 0]def
/FontBBox [-250 -250 1250 1250]def
/Encoding ct_cHexEncoding def
/BuildChar/ct_BuildCharIncremental load def
ct_Clone?
{
/FontType 3 def
/ct_ShowCharString/ct_Type3ShowCharString load def
/ct_dfSetCacheProc/ct_CloneSetCacheProc load def
/ct_SyntheticBold false def
/ct_StrokeWidth 1 def
}
{
/FontType 4 def
/Private 1 dict dup/lenIV 4 put def
/CharStrings 1 dict dup/.notdef<d841272cf18f54fc13>put def
/PaintType 0 def
/ct_ShowCharString/ct_Type4ShowCharString load def
}
ifelse
/ct_str1 1 string def
currentdict
end def
/BaseFontDictSize BaseFontTemplate length 5 add def
/ct_matrixeq
{
true 0 1 5
{
dup 4 index exch get exch 3 index exch get eq and
dup not
{exit}
if
}
for
exch pop exch pop
}bind def
/ct_makeocf
{
15 dict
begin
exch/WMode exch def
exch/FontName exch def
/FontType 0 def
/FMapType 2 def
dup/FontMatrix known
{dup/FontMatrix get/FontMatrix exch def}
{/FontMatrix matrix def}
ifelse
/bfCount 1 index/CIDCount get 256 idiv 1 add
dup 256 gt{pop 256}if def
/Encoding
256 array 0 1 bfCount 1 sub{2 copy dup put pop}for
bfCount 1 255{2 copy bfCount put pop}for
def
/FDepVector bfCount dup 256 lt{1 add}if array def
BaseFontTemplate BaseFontDictSize dict copy
begin
/CIDFont exch def
CIDFont/FontBBox known
{CIDFont/FontBBox get/FontBBox exch def}
if
CIDFont/CDevProc known
{CIDFont/CDevProc get/CDevProc exch def}
if
currentdict
end
BaseFontNameStr 3(0)putinterval
0 1 bfCount dup 256 eq{1 sub}if
{
FDepVector exch
2 index BaseFontDictSize dict copy
begin
dup/CIDFirstByte exch 256 mul def
FontType 3 eq
{/ct_FDDict 2 dict def}
if
currentdict
end
1 index 16
BaseFontNameStr 2 2 getinterval cvrs pop
BaseFontNameStr exch definefont
put
}
for
ct_Clone?
{/Widths 1 index/CIDFont get/GlyphDirectory get length dict def}
if
FontName
currentdict
end
definefont
ct_Clone?
{
gsave
dup 1000 scalefont setfont
ct_BuildCharDict
begin
/usewidths? false def
currentfont/Widths get
begin
exch/CIDFont get/GlyphDirectory get
{
pop
dup charcode exch 1 index 0 2 index 256 idiv put
1 index exch 1 exch 256 mod put
stringwidth 2 array astore def
}
forall
end
/usewidths? true def
end
grestore
}
{exch pop}
ifelse
}bind def
currentglobal true setglobal
/ct_ComposeFont
{
ct_UseNativeCapability?
{
2 index/CMap ct_resourcestatus
{pop pop exch pop}
{
/CIDInit/ProcSet findresource
begin
12 dict
begin
begincmap
/CMapName 3 index def
/CMapVersion 1.000 def
/CMapType 1 def
exch/WMode exch def
/CIDSystemInfo 3 dict dup
begin
/Registry(Adobe)def
/Ordering
CMapName ct_mkocfStr100 cvs
(Adobe-)search
{
pop pop
(-)search
{
dup length string copy
exch pop exch pop
}
{pop(Identity)}
ifelse
}
{pop (Identity)}
ifelse
def
/Supplement 0 def
end def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
composefont
}
{
3 2 roll pop
0 get/CIDFont findresource
ct_makeocf
}
ifelse
}bind def
setglobal
/ct_MakeIdentity
{
ct_UseNativeCapability?
{
1 index/CMap ct_resourcestatus
{pop pop}
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CMapName 2 index def
/CMapVersion 1.000 def
/CMapType 1 def
/CIDSystemInfo 3 dict dup
begin
/Registry(Adobe)def
/Ordering
CMapName ct_mkocfStr100 cvs
(Adobe-)search
{
pop pop
(-)search
{dup length string copy exch pop exch pop}
{pop(Identity)}
ifelse
}
{pop(Identity)}
ifelse
def
/Supplement 0 def
end def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
composefont
}
{
exch pop
0 get/CIDFont findresource
ct_makeocf
}
ifelse
}bind def
currentdict readonly pop
end
end
%%EndResource
setglobal
%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated.
%%Version: 1.0 0
userdict/ct_T42Dict 15 dict put
ct_T42Dict begin
/Is2015?
{
version
cvi
2015
ge
}bind def
/AllocGlyphStorage
{
Is2015?
{
pop
}
{
{string}forall
}ifelse
}bind def
/Type42DictBegin
{
25 dict begin
/FontName exch def
/CharStrings 256 dict
begin
/.notdef 0 def
currentdict
end def
/Encoding exch def
/PaintType 0 def
/FontType 42 def
/FontMatrix[1 0 0 1 0 0]def
4 array astore cvx/FontBBox exch def
/sfnts
}bind def
/Type42DictEnd
{
currentdict dup/FontName get exch definefont end
ct_T42Dict exch
dup/FontName get exch put
}bind def
/RD{string currentfile exch readstring pop}executeonly def
/PrepFor2015
{
Is2015?
{
/GlyphDirectory
16
dict def
sfnts 0 get
dup
2 index
(glyx)
putinterval
2 index
(locx)
putinterval
pop
pop
}
{
pop
pop
}ifelse
}bind def
/AddT42Char
{
Is2015?
{
/GlyphDirectory get
begin
def
end
pop
pop
}
{
/sfnts get
4 index
get
3 index
2 index
putinterval
pop
pop
pop
pop
}ifelse
}bind def
/T0AddT42Mtx2
{
/CIDFont findresource/Metrics2 get begin def end
}bind def
end
%%EndResource
currentglobal true setglobal
%%BeginFile: MMFauxFont.prc
%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated.
%%All Rights Reserved.
userdict /ct_EuroDict 10 dict put
ct_EuroDict begin
/ct_CopyFont
{
{ 1 index /FID ne {def} {pop pop} ifelse} forall
} def
/ct_GetGlyphOutline
{
gsave
initmatrix newpath
exch findfont dup
length 1 add dict
begin
ct_CopyFont
/Encoding Encoding dup length array copy
dup
4 -1 roll
0 exch put
def
currentdict
end
/ct_EuroFont exch definefont
1000 scalefont setfont
0 0 moveto
[
<00> stringwidth
<00> false charpath
pathbbox
[
{/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall
grestore
counttomark 8 add
}
def
/ct_MakeGlyphProc
{
] cvx
/ct_PSBuildGlyph cvx
] cvx
} def
/ct_PSBuildGlyph
{
gsave
8 -1 roll pop
7 1 roll
6 -2 roll ct_FontMatrix transform 6 2 roll
4 -2 roll ct_FontMatrix transform 4 2 roll
ct_FontMatrix transform
currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse
dup 9 1 roll
{
currentdict /StrokeWidth 2 copy known
{
get 2 div
0 ct_FontMatrix dtransform pop
5 1 roll
4 -1 roll 4 index sub
4 1 roll
3 -1 roll 4 index sub
3 1 roll
exch 4 index add exch
4 index add
5 -1 roll pop
}
{
pop pop
}
ifelse
}
if
setcachedevice
ct_FontMatrix concat
ct_PSPathOps begin
exec
end
{
currentdict /StrokeWidth 2 copy known
{ get }
{ pop pop 0 }
ifelse
setlinewidth stroke
}
{
fill
}
ifelse
grestore
} def
/ct_PSPathOps 4 dict dup begin
/m {moveto} def
/l {lineto} def
/c {curveto} def
/cp {closepath} def
end
def
/ct_matrix1000 [1000 0 0 1000 0 0] def
/ct_AddGlyphProc
{
2 index findfont dup length 4 add dict
begin
ct_CopyFont
/CharStrings CharStrings dup length 1 add dict copy
begin
3 1 roll def
currentdict
end
def
/ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def
/ct_PSBuildGlyph /ct_PSBuildGlyph load def
/ct_PSPathOps /ct_PSPathOps load def
currentdict
end
definefont pop
}
def
systemdict /languagelevel known
{
/ct_AddGlyphToPrinterFont {
2 copy
ct_GetGlyphOutline 3 add -1 roll restore
ct_MakeGlyphProc
ct_AddGlyphProc
} def
}
{
/ct_AddGlyphToPrinterFont {
pop pop restore
Adobe_CTFauxDict /$$$FONTNAME get
/Euro
Adobe_CTFauxDict /$$$SUBSTITUTEBASE get
ct_EuroDict exch get
ct_AddGlyphProc
} def
} ifelse
/AdobeSansMM
{
556 0 24 -19 541 703
{
541 628 m
510 669 442 703 354 703 c
201 703 117 607 101 444 c
50 444 l
25 372 l
97 372 l
97 301 l
49 301 l
24 229 l
103 229 l
124 67 209 -19 350 -19 c
435 -19 501 25 509 32 c
509 131 l
492 105 417 60 343 60 c
267 60 204 127 197 229 c
406 229 l
430 301 l
191 301 l
191 372 l
455 372 l
479 444 l
194 444 l
201 531 245 624 348 624 c
433 624 484 583 509 534 c
cp
556 0 m
}
ct_PSBuildGlyph
} def
/AdobeSerifMM
{
500 0 10 -12 484 692
{
347 298 m
171 298 l
170 310 170 322 170 335 c
170 362 l
362 362 l
374 403 l
172 403 l
184 580 244 642 308 642 c
380 642 434 574 457 457 c
481 462 l
474 691 l
449 691 l
433 670 429 657 410 657 c
394 657 360 692 299 692 c
204 692 94 604 73 403 c
22 403 l
10 362 l
70 362 l
69 352 69 341 69 330 c
69 319 69 308 70 298 c
22 298 l
10 257 l
73 257 l
97 57 216 -12 295 -12 c
364 -12 427 25 484 123 c
458 142 l
425 101 384 37 316 37 c
256 37 189 84 173 257 c
335 257 l
cp
500 0 m
}
ct_PSBuildGlyph
} def
end
%%EndFile
setglobal
Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
%%BeginResource: procset Adobe_AGM_Image 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
{
-dup type/arraytype ne{
-mark(Resource )3 index( must be an array.)//error exec
-}if
-}bind def
-/SubstitutePDFColorSpaceRec
-{0
-exec
-}bind def
-/SubstitutePDFColorSpace
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Image 71 dict dup begin put
+/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def
+/nd{
+ null def
+}bind def
+/AGMIMG_&image nd
+/AGMIMG_&colorimage nd
+/AGMIMG_&imagemask nd
+/AGMIMG_mbuf()def
+/AGMIMG_ybuf()def
+/AGMIMG_kbuf()def
+/AGMIMG_c 0 def
+/AGMIMG_m 0 def
+/AGMIMG_y 0 def
+/AGMIMG_k 0 def
+/AGMIMG_tmp nd
+/AGMIMG_imagestring0 nd
+/AGMIMG_imagestring1 nd
+/AGMIMG_imagestring2 nd
+/AGMIMG_imagestring3 nd
+/AGMIMG_imagestring4 nd
+/AGMIMG_imagestring5 nd
+/AGMIMG_cnt nd
+/AGMIMG_fsave nd
+/AGMIMG_colorAry nd
+/AGMIMG_override nd
+/AGMIMG_name nd
+/AGMIMG_maskSource nd
+/AGMIMG_flushfilters nd
+/invert_image_samples nd
+/knockout_image_samples nd
+/img nd
+/sepimg nd
+/devnimg nd
+/idximg nd
+/ds
{
+ Adobe_AGM_Core begin
+ Adobe_AGM_Image begin
+ /AGMIMG_&image systemdict/image get def
+ /AGMIMG_&imagemask systemdict/imagemask get def
+ /colorimage where{
+ pop
+ /AGMIMG_&colorimage/colorimage ldf
+ }if
+ end
+ end
+}def
+/ps
{
-dup 0 get/Pattern eq{
-dup length 1 gt{
-dup dup 1//CheckColorSpace//ResolveA exec
-dup type/nametype ne{
-//SubstitutePDFColorSpaceRec exec
-}if
-1 exch put
-}if
-exit
-}if
-dup 0 get/Indexed eq{
-exit
-}if
-dup 0 get/Separation eq{
-dup dup 2//CheckColorSpace//ResolveA exec
-dup type/nametype ne{
-//SubstitutePDFColorSpaceRec exec
-}if
-2 exch put
-exit
-}if
-dup 0 get/CalGray eq{
-1 get
-dup/Gamma//knownget exec{
-[exch[exch/exp load]cvx dup dup]
-1 index exch/DecodeLMN exch put
-}if
-[exch/CIEBasedA exch]
-exit
-}if
-dup 0 get/CalRGB eq{
-1 get
-dup/Matrix//knownget exec{
-1 index exch/MatrixLMN exch put
-}if
-dup/Gamma//knownget exec{
-aload pop
-[exch/exp load]cvx
-3 1 roll
-[exch/exp load]cvx
-3 1 roll
-[exch/exp load]cvx
-3 1 roll
-3 array astore
-1 index exch/DecodeLMN exch put
-}if
-[exch/CIEBasedABC exch]
-exit
-}if
-dup 0 get/Lab eq{
-1 get
-begin
-currentdict/Range//knownget exec{aload pop}{-100 100 -100 100}ifelse
-0 100 6 2 roll 6 array astore
-/RangeABC exch def
-/DecodeABC[{16 add 116 div}bind{500 div}bind{200 div}bind]def
-/MatrixABC[1 1 1 1 0 0 0 0 -1]def
-{dup 6 29 div ge{dup dup mul mul}{4 29 div sub 108 841 div mul}ifelse}
-/DecodeLMN[
-[3 index aload pop WhitePoint 0 get/mul load]cvx
-[4 index aload pop WhitePoint 1 get/mul load]cvx
-[5 index aload pop WhitePoint 2 get/mul load]cvx
-]def pop
-//PDFR_DEBUG{
-(Constructed from Lab <<)=
-currentdict{exch = ==}forall
-(>>)=
-}if
-[/CIEBasedABC currentdict]
-end
-exit
-pop
-}if
-dup 0 get/CIEBasedA eq{exit}if
-dup 0 get/CIEBasedABC eq{exit}if
-mark exch(Unimplemented color space )exch//error exec
-}loop
-}bind def
-//SubstitutePDFColorSpaceRec 0//SubstitutePDFColorSpace put
-/ResolveArrayElement
-{2 copy get
-dup type dup/arraytype eq exch
-/packedarraytype eq or{
-dup length 1 ge exch xcheck and{
-2 copy get
-dup 0 get type/integertype eq
-1 index 1 get type dup/arraytype
-eq exch
-/packedarraytype eq or
-and{
-exec
-2 index 4 1 roll put
-}{
-pop pop
-}ifelse
-}{
-pop
-}ifelse
-}{
-pop pop
-}ifelse
-}bind def
-/ResolveColorSpaceArrayRec
-{0
-exec
-}bind def
-/SetColorSpaceSafe
+ Adobe_AGM_Image begin
+ /AGMIMG_ccimage_exists{/customcolorimage where
+ {
+ pop
+ /Adobe_AGM_OnHost_Seps where
+ {
+ pop false
+ }{
+ /Adobe_AGM_InRip_Seps where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }ifelse
+ }{
+ false
+ }ifelse
+ }bdf
+ level2{
+ /invert_image_samples
+ {
+ Adobe_AGM_Image/AGMIMG_tmp Decode length ddf
+ /Decode[Decode 1 get Decode 0 get]def
+ }def
+ /knockout_image_samples
+ {
+ Operator/imagemask ne{
+ /Decode[1 1]def
+ }if
+ }def
+ }{
+ /invert_image_samples
+ {
+ {1 exch sub}currenttransfer addprocs settransfer
+ }def
+ /knockout_image_samples
+ {
+ {pop 1}currenttransfer addprocs settransfer
+ }def
+ }ifelse
+ /img/imageormask ldf
+ /sepimg/sep_imageormask ldf
+ /devnimg/devn_imageormask ldf
+ /idximg/indexed_imageormask ldf
+ /_ctype 7 def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+}def
+/pt
{
-PDFR_DEBUG{
-(SetColorSpaceSafe beg)=
-}if
-currentcolorspace dup type/arraytype eq{
-1 index type/arraytype eq{
-dup length 2 index length eq{
-false exch
-dup length 0 exch 1 exch 1 sub{
-dup
-4 index exch get exch
-2 index exch get
-ne{
-exch pop true exch exit
-}if
-}for
-pop
+ end
+}def
+/dt
{
-setcolorspace
-}{
-pop
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-PDFR_DEBUG{
-(SetColorSpaceSafe end)=
-}if
-}bind def
-/ResolveColorSpaceArray
+}def
+/AGMIMG_flushfilters
{
-//PDFR_DEBUG{
-(ResolveColorSpaceArray beg )print dup ==
-}if
-dup 0 get/Indexed eq{
-1//ResolveArrayElement exec
-dup dup 1 get
-dup type/arraytype eq{
-//SubstitutePDFColorSpace exec
-//ResolveColorSpaceArrayRec exec
-1 exch put
-}{
-pop pop
-}ifelse
-}if
-dup 0 get/Separation eq{
-dup dup 1 get UnPDFEscape 1 exch put
-3//ResolveArrayElement exec
-dup 3 get//FunctionToProc exec
-2 copy 3 exch put
-pop
-}if
-dup 0 get/Pattern eq{
-dup length 1 gt{dup
-1 get dup type/arraytype eq{
-ResolveColorSpaceArray
-1 index 1 3 -1 roll put
-}{pop}ifelse}if
-}if
-PDFR_DEBUG{
-(Construcrted color space :)=
-dup ==
-}if
-//PDFR_DEBUG{
-(ResolveColorSpaceArray end )print dup ==
-}if
-}bind def
-//ResolveColorSpaceArrayRec 0//ResolveColorSpaceArray put
-/ResolveColorSpace
+ dup type/arraytype ne
+ {1 array astore}if
+ dup 0 get currentfile ne
+ {dup 0 get flushfile}if
+ {
+ dup type/filetype eq
+ {
+ dup status 1 index currentfile ne and
+ {closefile}
+ {pop}
+ ifelse
+ }{pop}ifelse
+ }forall
+}def
+/AGMIMG_init_common
{
-//PDFR_DEBUG{
-(ResolveColorSpace beg )print dup =
-}if
-dup//SimpleColorSpaceNames exch known not{
-dup//PDFColorSpaces exch//knownget exec{
-exch pop
-//PDFR_DEBUG{
-(ResolveColorSpace known )=
-}if
-}{
-dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/ColorSpace//DoNothing//ResolveD exec
-exch//CheckColorSpace//ResolveD exec
-dup type/arraytype eq{
-//SubstitutePDFColorSpace exec
-//ResolveColorSpaceArray exec
-dup//PDFColorSpaces 4 2 roll put
-}if
-}ifelse
-}if
-//PDFR_DEBUG{
-(ResolveColorSpace end )print dup ==
-}if
-}bind def
-/CheckPattern
+ currentdict/T known{/ImageType/T ldf currentdict/T undef}if
+ currentdict/W known{/Width/W ldf currentdict/W undef}if
+ currentdict/H known{/Height/H ldf currentdict/H undef}if
+ currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if
+ currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if
+ currentdict/D known{/Decode/D ldf currentdict/D undef}if
+ currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if
+ currentdict/O known{
+ /Operator/O load 1 eq{
+ /imagemask
+ }{
+ /O load 2 eq{
+ /image
+ }{
+ /colorimage
+ }ifelse
+ }ifelse
+ def
+ currentdict/O undef
+ }if
+ currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if
+ currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if
+ currentdict/I known{/Interpolate/I ldf currentdict/I undef}if
+ currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if
+ /DataSource load xcheck not{
+ DataSource type/arraytype eq{
+ DataSource 0 get type/filetype eq{
+ /_Filters DataSource def
+ currentdict/MultipleDataSources known not{
+ /DataSource DataSource dup length 1 sub get def
+ }if
+ }if
+ }if
+ currentdict/MultipleDataSources known not{
+ /MultipleDataSources DataSource type/arraytype eq{
+ DataSource length 1 gt
+ }
+ {false}ifelse def
+ }if
+ }if
+ /NComponents Decode length 2 div def
+ currentdict/SkipImageProc known not{/SkipImageProc{false}def}if
+}bdf
+/imageormask_sys
{
-dup/PatternType//knownget exec{
-dup 1 ne{
-mark(Resource )4 index( is a shading, which can't be handled at level 2. )//error exec
-}if
-pop
-}if
-dup/Type knownget{
-/Pattern ne{
-mark(Resource )4 index( must have /Type/Pattern .)//error exec
-}if
-}if
-}bind def
-/PaintProc
-{/Context get
-//RunDelayedStream exec
-}bind def
-/ResolvePattern
+ begin
+ AGMIMG_init_common
+ save mark
+ level2{
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ AGMIMG_&imagemask
+ }{
+ BitsPerComponent ImageMatrix/DataSource load
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ cleartomark restore
+ end
+}def
+/overprint_plate
{
-dup
-userdict/PDFR_Patterns get
-exch//knownget exec{
-exch pop
-}{
-dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/Pattern//DoNothing//ResolveD exec
-exch//CheckPattern//ResolveD exec
-dup dup/Context exch put
-dup/Resources//DoNothing//ResolveD exec pop
-dup/PaintProc//PaintProc put
-gsave userdict/PDFR_InitialGS get setgstate
-currentglobal exch false setglobal
-dup/Matrix get
-makepattern
-exch setglobal
-grestore
-dup userdict/PDFR_Patterns get
-4 2 roll
-put
-}ifelse
-}bind def
-/SetColor
-{//PDFR_DEBUG{
-(SetColor beg)=
-}if
-currentcolorspace dup type/nametype eq{
-pop setcolor
-}{
-0 get/Pattern eq{
-//ResolvePattern exec setpattern
-}{
-setcolor
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(SetColor end)=
-}if
-}bind def
-/ImageKeys 15 dict begin
-/BPC/BitsPerComponent def
-/CS/ColorSpace def
-/D/Decode def
-/DP/DecodeParms def
-/F/Filter def
-/H/Height def
-/IM/ImageMask def
-/I/Interpolate def
-/W/Width def
-currentdict end readonly def
-/ImageValues 15 dict begin
-/G/DeviceGray def
-/RGB/DeviceRGB def
-/CMYK/DeviceCMYK def
-/I/Indexed def
-/AHx/ASCIIHexDecode def
-/A85/ASCII85Decode def
-/LZW/LZWDecode def
-/Fl/FlateDecode def
-/RL/RunLengthDecode def
-/CCF/CCITTFaxDecode def
-/DCT/DCTDecode def
-currentdict end readonly def
-/GetColorSpaceRange
-{2 index/ColorSpace get
-dup type/arraytype eq{
-1 get
-}if
-exch//knownget exec{
-exch pop
-}if
-}bind def
-/DecodeArrays 15 dict begin
-/DeviceGray{[0 1]}def
-/DeviceRGB{[0 1 0 1 0 1]}def
-/DeviceCMYK{[0 1 0 1 0 1 0 1]}def
-/Indexed{
-dup/BitsPerComponent get 1 exch bitshift 1 sub[exch 0 exch]
+ currentoverprint{
+ 0 get dup type/nametype eq{
+ dup/DeviceGray eq{
+ pop AGMCORE_black_plate not
+ }{
+ /DeviceCMYK eq{
+ AGMCORE_is_cmyk_sep not
+ }if
+ }ifelse
+ }{
+ false exch
+ {
+ AGMOHS_sepink eq or
+ }forall
+ not
+ }ifelse
+ }{
+ pop false
+ }ifelse
}def
-/Separation{[0 1]}def
-/CIEBasedA{[0 1]/RangeA//GetColorSpaceRange exec}def
-/CIEBasedABC{[0 1 0 1 0 1]/RangeABC//GetColorSpaceRange exec}def
-currentdict end readonly def
-/Substitute
-{1 index//knownget exec{
-exch pop
-}if
-}bind def
-/DebugImagePrinting
+/process_mask
{
-//PDFR_DEBUG{
-(Image :)=
-dup{exch//=only exec( )print ==
-}forall
-}if
-}bind def
-/CompleteImage
+ level3{
+ dup begin
+ /ImageType 1 def
+ end
+ 4 dict begin
+ /DataDict exch def
+ /ImageType 3 def
+ /InterleaveType 3 def
+ /MaskDict 9 dict begin
+ /ImageType 1 def
+ /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def
+ /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def
+ /ImageMatrix[Width 0 0 Height neg 0 Height]def
+ /NComponents 1 def
+ /BitsPerComponent 1 def
+ /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def
+ /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def
+ currentdict end def
+ currentdict end
+ }if
+}def
+/use_mask
{
-dup/ColorSpace known{
-dup/ColorSpace//CheckColorSpace//ResolveD exec pop
-}if
-dup/Decode known not{
-dup/ColorSpace//knownget exec{
-dup type/arraytype eq{
-0 get
-}if
-//DecodeArrays exch get exec
-}{
-[0 1]
-}ifelse
-1 index exch/Decode exch put
-}if
-dup/ImageMatrix[2 index/Width get 0 0 5 index/Height get neg
-0 7 index/Height get]put
-//DebugImagePrinting exec
-}bind def
-/CompleteInlineImage
+ dup/Mask known {dup/Mask get}{false}ifelse
+}def
+/imageormask
{
-//PDFR_DEBUG{
-(CompleteInlineImage beg)=
-}if
-dup/ImageType known not{
-dup/ImageType 1 put
-}if
-dup length dict exch{
-exch//ImageKeys//Substitute exec
-dup/Filter eq{
-exch//ImageValues//Substitute exec exch
-}if
-dup/ColorSpace eq{
-exch
-dup//ImageValues exch//knownget exec{
-exch pop
-}{
-//ResolveColorSpace exec
-}ifelse
-exch
-}if
-exch
-2 index 3 1 roll put
-}forall
-//CompleteImage exec
-dup/DataSource 2 copy get
-2 index//AppendFilters exec put
-//PDFR_DEBUG{
-(CompleteInlineImage end)=
-}if
-}bind def
-/CompleteOutlineImage
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }
+ {
+ save mark
+ level2 AGMCORE_host_sep not and{
+ currentdict
+ Operator/imagemask eq DeviceN_PS2 not and{
+ imagemask
+ }{
+ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ /Decode[Decode 1 get Decode 0 get]def
+ }if
+ use_mask{
+ process_mask image
+ }{
+ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and
+ {
+ Names convert_to_process not{
+ 2 dict begin
+ /imageDict xdf
+ /names_index 0 def
+ gsave
+ imageDict write_image_file{
+ Names{
+ dup(None)ne{
+ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace
+ Operator imageDict read_image_file
+ names_index 0 eq{true setoverprint}if
+ /names_index names_index 1 add def
+ }{
+ pop
+ }ifelse
+ }forall
+ close_image_file
+ }if
+ grestore
+ end
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ /Adobe_AGM_OnHost_Seps where{
+ pop imagemask
+ }{
+ currentgray 1 ne{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ BitsPerComponent ImageMatrix
+ MultipleDataSources{
+ 0 1 NComponents 1 sub{
+ DataSource exch get
+ }for
+ }{
+ /DataSource load
+ }ifelse
+ Operator/colorimage eq{
+ AGMCORE_host_sep{
+ MultipleDataSources level2 or NComponents 4 eq and{
+ AGMCORE_is_cmyk_sep{
+ MultipleDataSources{
+ /DataSource DataSource 0 get xcheck
+ {
+ [
+ DataSource 0 get/exec cvx
+ DataSource 1 get/exec cvx
+ DataSource 2 get/exec cvx
+ DataSource 3 get/exec cvx
+ /AGMCORE_get_ink_data cvx
+ ]cvx
+ }{
+ DataSource aload pop AGMCORE_get_ink_data
+ }ifelse def
+ }{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ /DataSource load
+ filter_cmyk 0()/SubFileDecode filter def
+ }ifelse
+ /Decode[Decode 0 get Decode 1 get]def
+ /MultipleDataSources false def
+ /NComponents 1 def
+ /Operator/image def
+ invert_image_samples
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }{
+ MultipleDataSources NComponents AGMIMG_&colorimage
+ }ifelse
+ }{
+ true NComponents colorimage
+ }ifelse
+ }{
+ Operator/image eq{
+ AGMCORE_host_sep{
+ /DoImage true def
+ currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse
+ {
+ AGMCORE_black_plate not Operator/imagemask ne and{
+ /DoImage false def
+ currentdict ignoreimagedata
+ }if
+ }if
+ 1 AGMCORE_&setgray
+ DoImage
+ {currentdict imageormask_sys}if
+ }{
+ use_mask{
+ process_mask image
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/knockout eq{
+ pop pop pop pop pop
+ currentcolorspace overprint_plate not{
+ knockout_unitsq
+ }if
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/sep_imageormask
{
-currentglobal exch dup gcheck setglobal
-//PDFR_DEBUG{
-(CompleteOutlineImage beg)=
-}if
-dup dup//MakeStreamReader exec/DataSource exch put
-dup/ImageType known not{
-//CompleteImage exec
-dup/ImageType 1 put
-dup/ColorSpace known{
-dup/ColorSpace//CheckColorSpace//ResolveD exec
-dup type/arraytype eq{
-//ResolveColorSpaceArray exec
-//SubstitutePDFColorSpace exec
-1 index exch/ColorSpace exch put
-}{
-pop
-}ifelse
-}if
-}if
-//PDFR_DEBUG{
-(CompleteOutlineImage end)=
-}if
-exch setglobal
-}bind def
-/DoImage
+ /sep_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_avoid_L2_sep_space{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ }if
+ AGMIMG_ccimage_exists
+ MappedCSA 0 get/DeviceCMYK eq and
+ currentdict/Components known and
+ Name()ne and
+ Name(All)ne and
+ Operator/image eq and
+ AGMCORE_producing_seps not and
+ level2 not and
+ {
+ Width Height BitsPerComponent ImageMatrix
+ [
+ /DataSource load/exec cvx
+ {
+ 0 1 2 index length 1 sub{
+ 1 index exch
+ 2 copy get 255 xor put
+ }for
+ }/exec cvx
+ ]cvx bind
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Name findcmykcustomcolor
+ customcolorimage
+ }{
+ AGMCORE_producing_seps not{
+ level2{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{
+ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ currentdict imageormask
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask
+ }{
+ sep_imageormask_lev1
+ }ifelse
+ }ifelse
+ }{
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ currentdict/ImageMatrix get concat
+ knockout_unitsq
+ }{
+ currentgray 1 ne{
+ AGMCORE_is_cmyk_sep Name(All)ne and{
+ level2{
+ Name AGMCORE_IsSeparationAProcessColor
+ {
+ Operator/imagemask eq{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor
+ }if
+ }{
+ invert_image_samples
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ [/Separation Name[/DeviceGray]
+ {
+ sep_colorspace_proc AGMCORE_get_ink_data
+ 1 exch sub
+ }bind
+ ]AGMCORE_&setcolorspace
+ /sep_tint AGMCORE_gget AGMCORE_&setcolor
+ }if
+ }ifelse
+ currentdict imageormask_sys
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ sep_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask ne{
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }ifelse
+ }{
+ currentoverprint not Name(All)eq or Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ currentcolorspace 0 get/Separation ne{
+ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ }if
+ currentoverprint
+ MappedCSA 0 get/DeviceCMYK eq and
+ Name AGMCORE_IsSeparationAProcessColor not and
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse
+ Name(All)ne and{
+ imageormask_l2_overprint
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+}def
+/colorSpaceElemCnt
{
-//PDFR_DEBUG{
-(DoImage beg)=
-}if
-gsave
-dup/ColorSpace//knownget exec{setcolorspace}if
-dup/ImageMask//knownget exec not{false}if
-{imagemask}{image}ifelse
-grestore
-//PDFR_DEBUG{
-(DoImage end)=
-}if
-}bind def
-/GSave
+ mark currentcolor counttomark dup 2 add 1 roll cleartomark
+}bdf
+/devn_sep_datasource
{
-gsave
-//PDFReader/GraphicStateStackPointer get
-dup//GraphicStateStack exch get null eq{
-dup//GraphicStateStack exch//InitialGraphicState length dict put
-}if
-dup//GraphicStateStack exch get
-//GraphicState exch copy pop
-1 add//PDFReader exch/GraphicStateStackPointer exch put
-}bind def
-/GRestore
+ 1 dict begin
+ /dataSource xdf
+ [
+ 0 1 dataSource length 1 sub{
+ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx
+ /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx
+ }for
+ ]cvx bind
+ end
+}bdf
+/devn_alt_datasource
{
-grestore
-//PDFReader/GraphicStateStackPointer get
-1 sub dup
-//PDFReader exch/GraphicStateStackPointer exch put
-//GraphicStateStack exch get
-//GraphicState copy pop
-}bind def
-/SetFont
-{dup//GraphicState exch/FontSize exch put
-//ResolveAndSetFont exec
-//GraphicState/FontMatrixNonHV currentfont/FontMatrix get 1 get 0 ne put
-}bind def
-/ShowText
-{//GraphicState/TextRenderingMode get 0 eq{
-//GraphicState/WordSpacing get 0
-32
-//GraphicState/CharacterSpacing get 0
-6 5 roll
-//GraphicState/FontMatrixNonHV get{
-[
-7 -2 roll pop
-5 -2 roll pop
-5 -1 roll
+ 11 dict begin
+ /convProc xdf
+ /origcolorSpaceElemCnt xdf
+ /origMultipleDataSources xdf
+ /origBitsPerComponent xdf
+ /origDecode xdf
+ /origDataSource xdf
+ /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def
+ /DataSource origMultipleDataSources
+ {
+ [
+ BitsPerComponent 8 idiv origDecode length 2 idiv mul string
+ 0 1 origDecode length 2 idiv 1 sub
+ {
+ dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch
+ origDataSource exch get 0()/SubFileDecode filter
+ BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx
+ }for
+ ]bind cvx
+ }{origDataSource}ifelse 0()/SubFileDecode filter def
+ [
+ origcolorSpaceElemCnt string
+ 0 2 origDecode length 2 sub
+ {
+ dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div
+ 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx
+ }for
+ /convProc load/exec cvx
+ origcolorSpaceElemCnt 1 sub -1 0
+ {
+ /dup cvx 2/add cvx/index cvx
+ 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx
+ }for
+ ]bind cvx 0()/SubFileDecode filter
+ end
+}bdf
+/devn_imageormask
{
-exch
-pop
-3 index add
-exch 2 index eq{3 index add}if
-4 1 roll
-}
-currentfont/FontMatrix get 0 get 0 ne{
-1 1 index length 1 sub getinterval cvx
-}if
-5 index
-cshow
-pop pop pop]
-xshow
-}{
-awidthshow
-}ifelse
-}{
-//GraphicState/CharacterSpacing get 0 eq
-//GraphicState/FontMatrixNonHV get not and
-//GraphicState/WordSpacing get 0 eq and{
-true charpath
-}{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ 2 dict begin
+ dup
+ /srcDataStrs[3 -1 roll begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi
+ {
+ dup 65535 gt{1 add 2 div cvi}{exit}ifelse
+ }loop
+ string
+ }repeat
+ end]def
+ /dstDataStr srcDataStrs 0 get length string def
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_producing_seps not{
+ level3 not{
+ Operator/imagemask ne{
+ /DataSource[[
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def
+ /MultipleDataSources true def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ }if
+ }if
+ currentdict imageormask
+ }{
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ CSA get_csa_by_name 0 get/DeviceCMYK eq{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ filter_cmyk 0()/SubFileDecode filter def
+ /MultipleDataSources false def
+ /Decode[1 0]def
+ /DeviceGray setcolorspace
+ currentdict imageormask_sys
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate{
+ /DataSource
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ /MultipleDataSources false def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ currentdict imageormask_sys
+ }{
+ gsave
+ knockout_unitsq
+ grestore
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }
+ {
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ Operator/imagemask ne{
+ MultipleDataSources{
+ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def
+ /MultipleDataSources false def
+ }{
+ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def
+ }ifelse
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+ end
+}def
+/imageormask_l2_overprint
{
-exch
-pop 0
-currentpoint 5 4 roll
-( )dup 0 3 index put true charpath
-5 1 roll
-moveto rmoveto
-//GraphicState/CharacterSpacing get 0 rmoveto
-32 eq{
-//GraphicState/WordSpacing get 0 rmoveto
-}if
-}
-//GraphicState/FontMatrixNonHV get dup not exch{
-pop currentfont/FontMatrix get 0 get 0 ne
-}if{
-1 1 index length 1 sub getinterval cvx
-}if
-exch cshow
-}ifelse
-}ifelse
-}bind def
-/ShowTextBeg
-{//GraphicState/TextRenderingMode get 0 ne{
-currentpoint newpath moveto
-}if
-}bind def
-/ShowTextEnd
-{//GraphicState/TextRenderingMode get
-{dup 1 eq{
-stroke exit
-}if
-dup 2 eq{
-gsave fill grestore stroke exit
-}if
-dup 3 eq{
-currentpoint newpath moveto
-}if
-dup 4 eq{
-gsave fill grestore clip exit
-}if
-dup 5 eq{
-gsave stroke grestore clip exit
-}if
-dup 6 eq{
-gsave fill grestore gsave stroke grestore fill exit
-}if
-dup 7 eq{
-clip exit
-}if
-exit
-}loop
-pop
-}bind def
-/ShowTextWithGlyphPositioning
-{//ShowTextBeg exec
-{dup type/stringtype eq{
-//ShowText exec
-}{
-neg 1000 div//GraphicState/FontSize get mul 0 rmoveto
-}ifelse
-}forall
-//ShowTextEnd exec
-}bind def
-/CheckFont
-{dup/Type get/ExtGState ne{
-mark(Resource )3 index( must have /Type/ExtGState.)//error exec
-}if
-}bind def
-/SetTransfer
+ currentdict
+ currentcmykcolor add add add 0 eq{
+ currentdict consumeimagedata
+ }{
+ level3{
+ currentcmykcolor
+ /AGMIMG_k xdf
+ /AGMIMG_y xdf
+ /AGMIMG_m xdf
+ /AGMIMG_c xdf
+ Operator/imagemask eq{
+ [/DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]/DeviceCMYK{}]setcolorspace
+ AGMIMG_c 0 ne{AGMIMG_c}if
+ AGMIMG_m 0 ne{AGMIMG_m}if
+ AGMIMG_y 0 ne{AGMIMG_y}if
+ AGMIMG_k 0 ne{AGMIMG_k}if
+ setcolor
+ }{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ [/Indexed
+ [
+ /DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]
+ /DeviceCMYK{
+ AGMIMG_k 0 eq{0}if
+ AGMIMG_y 0 eq{0 exch}if
+ AGMIMG_m 0 eq{0 3 1 roll}if
+ AGMIMG_c 0 eq{0 4 1 roll}if
+ }
+ ]
+ 255
+ {
+ 255 div
+ mark exch
+ dup dup dup
+ AGMIMG_k 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_y 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_m 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_c 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ counttomark 1 add -1 roll pop
+ }
+ ]setcolorspace
+ }ifelse
+ imageormask_sys
+ }{
+ write_image_file{
+ currentcmykcolor
+ 0 ne{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ gsave
+ /Black
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Yellow/DeviceGray{}]setcolorspace
+ gsave
+ /Yellow
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Magenta/DeviceGray{}]setcolorspace
+ gsave
+ /Magenta
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Cyan/DeviceGray{}]setcolorspace
+ gsave
+ /Cyan
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ close_image_file
+ }{
+ imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+}def
+/indexed_imageormask
{
-//PDFR_DEBUG{(SetTransfer beg )print count =}if
-dup type/arraytype eq 1 index xcheck not and{
-0 4 getinterval aload pop
-setcolortransfer
-}{
-settransfer
-}ifelse
-//PDFR_DEBUG{(SetTransfer end )print count =}if
-}bind def
-/CheckExtGState
-{dup/Type get/ExtGState ne{
-mark(Resource )3 index( must have /Type/ExtGState.)//error exec
-}if
-}bind def
-/CheckHalftone
-{dup/HalftoneType known not{
-mark(Resource )3 index( must have /HalftoneType.)//error exec
-}if
-}bind def
-/ResolveFunction
+ begin
+ AGMIMG_init_common
+ save mark
+ currentdict
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{
+ /CSA get get_csa_by_name
+ }{
+ /Names get
+ }ifelse
+ overprint_plate not{
+ knockout_unitsq
+ }if
+ }{
+ Indexed_DeviceN{
+ /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{
+ indexed_image_lev2_sep
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }{
+ AGMCORE_is_cmyk_sep{
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ level2{
+ indexed_image_lev2_sep
+ }{
+ indexed_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ level2{
+ Indexed_DeviceN{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ }{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne
+ {
+ begin
+ currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse
+ get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and
+ AGMCORE_in_rip_sep and{
+ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup]
+ setcolorspace
+ }if
+ end
+ }
+ {pop}ifelse
+ }ifelse
+ imageormask
+ Indexed_DeviceN{
+ end
+ }if
+ }{
+ Operator/imagemask eq{
+ imageormask
+ }{
+ indexed_imageormask_lev1
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/indexed_image_lev2_sep
{
-//PDFR_DEBUG{(ResolveFunction beg )print dup = count =}if
-2 copy get//IsObjRef exec{
-2 copy//DoNothing//ResolveD exec
-3 copy put pop
-}if
-2 copy get dup type/arraytype eq exch xcheck and not{
-2 copy get
-dup type/arraytype eq 1 index xcheck not and{
-dup length 1 sub -1 0{
-2 copy//DoNothing ResolveA
-dup/Identity eq{
-pop 2 copy{}put
-}{
-//FunctionToProc exec
-3 copy put pop
-}ifelse
-pop
-}for
-}{
-dup/Default eq{
-}{
-dup/Identity eq{
-pop{}
-}{dup type/nametype eq{
-//spotfunctions exch get
-}{
-//FunctionToProc exec
-}ifelse
-}ifelse
-}ifelse
-}ifelse
-3 copy put
-exch pop
-}{
-1 index exch get
-}ifelse
-//PDFR_DEBUG{(ResolveFunction end )print dup == count =}if
-}bind def
-/ResolveFunctionSafe
-{2 copy known{
-//ResolveFunction exec
-}if
-pop
-}bind def
-/CreateHalftoneThresholds
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ Indexed_DeviceN not{
+ currentcolorspace
+ dup 1/DeviceGray put
+ dup 3
+ currentcolorspace 2 get 1 add string
+ 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub
+ {
+ dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put
+ }for
+ put setcolorspace
+ }if
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ end end
+}def
+ /OPIimage
+ {
+ dup type/dicttype ne{
+ 10 dict begin
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /ImageType 1 def
+ /Decode[0 1 def]
+ currentdict
+ end
+ }if
+ dup begin
+ /NComponents 1 cdndf
+ /MultipleDataSources false cdndf
+ /SkipImageProc{false}cdndf
+ /Decode[
+ 0
+ currentcolorspace 0 get/Indexed eq{
+ 2 BitsPerComponent exp 1 sub
+ }{
+ 1
+ }ifelse
+ ]cdndf
+ /Operator/image cdndf
+ end
+ /sep_colorspace_dict AGMCORE_gget null eq{
+ imageormask
+ }{
+ gsave
+ dup begin invert_image_samples end
+ sep_imageormask
+ grestore
+ }ifelse
+ }def
+/cachemask_level2
{
-dup/Thresholds known not{
-dup/HalftoneType get 10 eq{
-dup dup//MakeStreamReader exec
-/Thresholds exch put
-}if
-dup/HalftoneType get dup 3 eq exch 6 eq or{
-dup dup//MakeStreamReader exec
-//BlockBuffer readstring pop
-dup length
-dup 0 eq{
-mark(Could not read Thresholds)//error exec
-}if
-string copy/Thresholds exch put
-dup/HalftoneType 3 put
-}if
-}if
-}bind def
-/SetExtGState
+ 3 dict begin
+ /LZWEncode filter/WriteFilter xdf
+ /readBuffer 256 string def
+ /ReadFilter
+ currentfile
+ 0(%EndMask)/SubFileDecode filter
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+ def
+ {
+ ReadFilter readBuffer readstring exch
+ WriteFilter exch writestring
+ not{exit}if
+ }loop
+ WriteFilter closefile
+ end
+}def
+/spot_alias
{
-//PDFReader/CurrentObject get/Context get/Resources get
-/ExtGState//DoNothing//ResolveD exec
-exch//CheckExtGState//ResolveD exec
-dup/LW//knownget exec{
-setlinewidth
-}if
-dup/LC//knownget exec{
-setlinecap
-}if
-dup/LJ//knownget exec{
-setlinejoin
-}if
-dup/ML//knownget exec{
-setmeterlimit
-}if
-dup/D//knownget exec{
-setdash
-}if
-dup/RI//knownget exec{
-mark(Unimplemented ExtGState.RI)//error exec
-}if
-dup/OP//knownget exec{
-setoverprint
-}if
-dup/op//knownget exec{
-setoverprint
-}if
-dup/OPM//knownget exec{
-mark(Unimplemented ExtGState.OPM)//error exec
-}if
-dup/Font//knownget exec{
-mark(Unimplemented ExtGState.Font)//error exec
-}if
-dup/BG known{
-/BG//ResolveFunction exec
-setblackgeneration
-}if
-dup/BG2 known{
-/BG2//ResolveFunction exec
-dup/Default eq{
-//InitialExtGState/BG2 get
-}if
-setblackgeneration
-}if
-dup/UCR known{
-/UCR//ResolveFunction exec
-setundercolorremoval
-}if
-dup/UCR2 known{
-/UCR2//ResolveFunction exec
-dup/Default eq{
-//InitialExtGState/UCR2 get
-}if
-setundercolorremoval
-}if
-dup/TR known{
-/TR//ResolveFunction exec
-//SetTransfer exec
-}if
-dup/TR2 known{
-/TR2//ResolveFunction exec
-dup/Default eq{
-pop//InitialExtGState/TR2 get
-aload pop setcolortransfer
-}{
-//SetTransfer exec
-}ifelse
-}if
-dup/HT//knownget exec{
-dup/Default eq{
-pop//InitialExtGState/HT get
-sethalftone
-}{
-//PDFR_DEBUG{(Ht beg)=}if
-pop dup/HT//CheckHalftone//ResolveD exec
-/SpotFunction//ResolveFunctionSafe exec
-/TransferFunction//ResolveFunctionSafe exec
-null exch
-dup/HalftoneType get dup 5 eq exch dup 4 eq exch 2 eq or or{
-dup{
-dup//IsObjRef exec{
-pop
-1 index exch//CheckHalftone ResolveD
-}if
-dup type/dicttype eq{
-dup/SpotFunction//ResolveFunctionSafe exec
-/TransferFunction//ResolveFunctionSafe exec
-//CreateHalftoneThresholds exec
-dup/HalftoneType get 5 gt{
-4 3 roll pop
-dup 4 1 roll
-}if
-}if
-pop pop
-}forall
-}if
-//CreateHalftoneThresholds exec
-//PDFR_DEBUG{
-(HT:)=
-dup{
-1 index/Default eq{
-(Default <<)=
-exch pop
-{exch = ==}forall
-(>>)=
-}{
-exch = ==
-}ifelse
-}forall
-(HT end)= flush
-}if
-exch dup null ne{
-(Warning: Ignoring a halftone with a Level 3 component halftone Type )print dup/HalftoneType get =
-pop pop
-}{
-pop
-dup/HalftoneType get 5 gt{
-(Warning: Ignoring a Level 3 halftone Type )print dup/HalftoneType get =
-pop
-}{
-sethalftone
-}ifelse
-}ifelse
-//PDFR_DEBUG{(HT set)= flush}if
-}ifelse
-}if
-dup/FL//knownget exec{
-setflattness
-}if
-dup/SM//knownget exec{
-setsmoothness
-}if
-dup/SA//knownget exec{
-setstrokeadjust
-}if
-dup/BM//knownget exec{
-mark(Unimplemented ExtGState.BM)//error exec
-}if
-dup/SMask//knownget exec{
-mark(Unimplemented ExtGState.SMask)//error exec
-}if
-dup/CA//knownget exec{
-mark(Unimplemented ExtGState.CA)//error exec
-}if
-dup/ca//knownget exec{
-mark(Unimplemented ExtGState.ca)//error exec
-}if
-dup/AIS//knownget exec{
-mark(Unimplemented ExtGState.AIS)//error exec
-}if
-dup/TK//knownget exec{
-mark(Unimplemented ExtGState.TK)//error exec
-}if
-pop
-}bind def
-/CheckXObject
-{dup/Subtype get dup/Image ne exch dup/Form ne exch/PS ne and and{
-mark(Resource )3 index( must have /Subtype /Image or /Form or /PS.)//error exec
-}if
-}bind def
-/DoXObject
+ /mapto_sep_imageormask
+ {
+ dup type/dicttype ne{
+ 12 dict begin
+ /ImageType 1 def
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /MultipleDataSources false def
+ }{
+ begin
+ }ifelse
+ /Decode[/customcolor_tint AGMCORE_gget 0]def
+ /Operator/image def
+ /SkipImageProc{false}def
+ currentdict
+ end
+ sep_imageormask
+ }bdf
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_colorAry xddf
+ /customcolor_tint AGMCORE_gget
+ <<
+ /Name AGMIMG_colorAry 4 get
+ /CSA[/DeviceCMYK]
+ /TintMethod/Subtractive
+ /TintProc null
+ /MappedCSA null
+ /NComponents 4
+ /Components[AGMIMG_colorAry aload pop pop]
+ >>
+ setsepcolorspace
+ mapto_sep_imageormask
+ }ndf
+ Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_override false put
+ current_spot_alias{dup 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /customcolor_tint AGMCORE_gget exch setsepcolorspace
+ pop
+ mapto_sep_imageormask
+ true set_spot_alias
+ }{
+ //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec
+ }ifelse
+ }bdf
+}def
+/snap_to_device
{
-//PDFReader/CurrentObject get/Context get/Resources get
-/XObject//DoNothing//ResolveD exec
-exch//CheckXObject//ResolveD exec
-dup/Subtype get
-dup/Image eq{
-pop
-//CompleteOutlineImage exec
-//DoImage exec
-}{
-dup/PS eq{
-PDFR_DEBUG{
-(Executing a PS Xobject)=
-}if
-pop
-//RunDelayedStream exec
-}{
-dup/Form eq{
-pop
-PDFR_DEBUG{
-(Executing a Form XObject)=
-}if
-//PDFReader/CurrentObject get exch
-dup//PDFReader exch<< exch/Context exch >>/CurrentObject exch put
-dup/Matrix get concat
-dup/BBox get aload pop exch 3 index sub exch 2 index sub rectclip
-//RunDelayedStream exec
-//PDFReader exch/CurrentObject exch put
-}{
-mark exch(unimplemented XObject type )exch//error exec
-}ifelse
-}ifelse
-}ifelse
-}bind def
-/Operators 50 dict begin
-/q{//GSave exec}bind def
-/Q{//GRestore exec}bind def
-/cm{//TempMatrix astore concat}bind def
-/i{1 .min setflat}bind def
-/J/setlinecap load def
-/d/setdash load def
-/j/setlinejoin load def
-/w/setlinewidth load def
-/M/setmiterlimit load def
-/gs{SetExtGState}bind def
-/g/setgray load def
-/rg/setrgbcolor load def
-/k/setcmykcolor load def
-/cs{//ResolveColorSpace exec//SetColorSpaceSafe exec
-}bind def
-/sc/setcolor load def
-/scn{//SetColor exec}bind def
-/G/setgray load def
-/RG/setrgbcolor load def
-/K/setcmykcolor load def
-/CS//cs def
-/ri{SetColorRenderingIntent}bind def
-/SC/setcolor load def
-/SCN{//SetColor exec}bind def
-/m/moveto load def
-/l/lineto load def
-/c/curveto load def
-/v{currentpoint 6 2 roll curveto}bind def
-/y{2 copy curveto}bind def
-/re{
-4 2 roll moveto exch dup 0 rlineto 0 3 -1 roll rlineto neg 0 rlineto
-closepath
+ 6 dict begin
+ matrix currentmatrix
+ dup 0 get 0 eq 1 index 3 get 0 eq and
+ 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop
+ {
+ 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def
+ 0 0 transform
+ AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ itransform/AGMIMG_llY exch def/AGMIMG_llX exch def
+ 1 1 transform
+ AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ itransform/AGMIMG_urY exch def/AGMIMG_urX exch def
+ [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat
+ }{
+ }ifelse
+ end
}def
-/h/closepath load def
-/n/newpath load def
-/S/stroke load def
-/s{closepath stroke}bind def
-/f/fill load def
-/f*/eofill load def
-/B{gsave fill grestore stroke}bind def
-/b{closepath gsave fill grestore stroke}bind def
-/B*{gsave eofill grestore stroke}bind def
-/b*{closepath gsave eofill grestore stroke}bind def
-/W/clip load def
-/W*/eoclip load def
-/sh{
-ResolveShading
-dup/Background known{
-gsave
-dup/ColorSpace get setcolorspace
-dup/Background get aload pop setcolor
-pathbbox
-2 index sub exch 3 index sub exch
-rectfill
-grestore
-}if
-shfill
-}bind def
-/Do{//DoXObject exec}bind def
-/BI{currentglobal false setglobal<<}bind def
-/ID{>>
-dup/DataSource currentfile
-2 index/F//knownget exec{
-/A85 eq{
-0(~>)/SubFileDecode filter
-}if
-}if
-put
-//CompleteInlineImage exec
-exch setglobal
-//DoImage exec
-}bind def
-/EI{}bind def
-/BT{gsave//GraphicState/InitialTextMatrix get currentmatrix pop}bind def
-/ET{grestore}bind def
-/Tc{//GraphicState exch/CharacterSpacing exch put}bind def
-/TL{//GraphicState exch/TextLeading exch put}bind def
-/Tr{//GraphicState exch/TextRenderingMode exch put}bind def
-/Ts{
-mark(Unimplemented SetTextRise)//error exec
-}bind def
-/Tw{//GraphicState exch/WordSpacing exch put}bind def
-/Tz{
-mark(Unimplemented SetHorizontalTextScaling)//error exec
-}bind def
-/Td{translate 0 0 moveto}bind def
-/TD{dup neg//TL exec//Td exec}bind def
-/Tm{//GraphicState/InitialTextMatrix get setmatrix
-//TempMatrix astore concat
-0 0 moveto}bind def
-/T*{0//GraphicState/TextLeading get neg//Td exec}bind def
-/Tj{//ShowTextBeg exec//ShowText exec//ShowTextEnd exec}bind def
-/'{//T* exec//ShowText exec//ShowTextEnd exec}bind def
-/"{3 2 roll//Tw exec exch//Tc exec//' exec}bind def
-/TJ//ShowTextWithGlyphPositioning def
-/Tf//SetFont def
-/d0/setcharwidth load def
-/d1/setcachedevice load def
-/BDC{pop pop}bind def
-/BMC{pop}bind def
-/EMC{}bind def
-/BX{BeginCompatibilitySection}bind def
-/EX{EndCompatibilitySection}bind def
-/DP{DefineMarkedContentPointWithPropertyList}bind def
-/MP{DefineMarkedContentPoint}bind def
-/PS{cvx exec}bind def
-currentdict end def
-//PDFR_STREAM{
-//Operators length dict begin
-//Operators{
-exch dup
-[exch//=only/exec load
-( )/print load
-8 7 roll
-dup type/arraytype eq{
-/exec load
+level2 not{
+ /colorbuf
+ {
+ 0 1 2 index length 1 sub{
+ dup 2 index exch get
+ 255 exch sub
+ 2 index
+ 3 1 roll
+ put
+ }for
+ }def
+ /tint_image_to_color
+ {
+ begin
+ Width Height BitsPerComponent ImageMatrix
+ /DataSource load
+ end
+ Adobe_AGM_Image begin
+ /AGMIMG_mbuf 0 string def
+ /AGMIMG_ybuf 0 string def
+ /AGMIMG_kbuf 0 string def
+ {
+ colorbuf dup length AGMIMG_mbuf length ne
+ {
+ dup length dup dup
+ /AGMIMG_mbuf exch string def
+ /AGMIMG_ybuf exch string def
+ /AGMIMG_kbuf exch string def
+ }if
+ dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop
+ }
+ addprocs
+ {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage
+ end
+ }def
+ /sep_imageormask_lev1
+ {
+ begin
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {
+ 255 mul round cvi GrayLookup exch get
+ }currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{
+ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ currentcolortransfer
+ {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ /sep_image_lev1_sep
+ {
+ begin
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ Components aload pop
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ {AGMIMG_c mul 1 exch sub}
+ {AGMIMG_m mul 1 exch sub}
+ {AGMIMG_y mul 1 exch sub}
+ {AGMIMG_k mul 1 exch sub}
+ }{
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}
+ }ifelse
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end
+ }def
+ /indexed_imageormask_lev1
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ currentdict
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ end end
+ }def
+ /indexed_image_lev1_sep
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end end
+ }def
}if
-( )/print load
-]cvx
-def
-}forall
-currentdict end/Operators exch def
-}if
-/.registerencoding
-{pop pop
-}bind def
-/.defineencoding
-{def
-}bind def
-/.findencoding
-{load
-}bind def
-/currentglobal where
-{pop currentglobal{setglobal}true setglobal}
-{{}}
-ifelse
-/MacRomanEncoding
-StandardEncoding 0 39 getinterval aload pop
-/quotesingle
-StandardEncoding 40 56 getinterval aload pop
-/grave
-StandardEncoding 97 31 getinterval aload pop
-/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
-/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
-/ecircumflex/edieresis/iacute/igrave
-/icircumflex/idieresis/ntilde/oacute
-/ograve/ocircumflex/odieresis/otilde
-/uacute/ugrave/ucircumflex/udieresis
-/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
-/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
-/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
-/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
-/questiondown/exclamdown/logicalnot/.notdef
-/florin/.notdef/.notdef/guillemotleft
-/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe
-/endash/emdash/quotedblleft/quotedblright
-/quoteleft/quoteright/divide/.notdef
-/ydieresis/Ydieresis/fraction/currency
-/guilsinglleft/guilsinglright/fi/fl
-/daggerdbl/periodcentered/quotesinglbase/quotedblbase
-/perthousand/Acircumflex/Ecircumflex/Aacute
-/Edieresis/Egrave/Iacute/Icircumflex
-/Idieresis/Igrave/Oacute/Ocircumflex
-/.notdef/Ograve/Uacute/Ucircumflex
-/Ugrave/dotlessi/circumflex/tilde
-/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
-256 packedarray
-5 1 index .registerencoding
-.defineencoding
-exec
-/AdobeGlyphList mark
-/A 16#0041
-/AE 16#00c6
-/AEacute 16#01fc
-/AEmacron 16#01e2
-/AEsmall 16#f7e6
-/Aacute 16#00c1
-/Aacutesmall 16#f7e1
-/Abreve 16#0102
-/Abreveacute 16#1eae
-/Abrevecyrillic 16#04d0
-/Abrevedotbelow 16#1eb6
-/Abrevegrave 16#1eb0
-/Abrevehookabove 16#1eb2
-/Abrevetilde 16#1eb4
-/Acaron 16#01cd
-/Acircle 16#24b6
-/Acircumflex 16#00c2
-/Acircumflexacute 16#1ea4
-/Acircumflexdotbelow 16#1eac
-/Acircumflexgrave 16#1ea6
-/Acircumflexhookabove 16#1ea8
-/Acircumflexsmall 16#f7e2
-/Acircumflextilde 16#1eaa
-/Acute 16#f6c9
-/Acutesmall 16#f7b4
-/Acyrillic 16#0410
-/Adblgrave 16#0200
-/Adieresis 16#00c4
-/Adieresiscyrillic 16#04d2
-/Adieresismacron 16#01de
-/Adieresissmall 16#f7e4
-/Adotbelow 16#1ea0
-/Adotmacron 16#01e0
-/Agrave 16#00c0
-/Agravesmall 16#f7e0
-/Ahookabove 16#1ea2
-/Aiecyrillic 16#04d4
-/Ainvertedbreve 16#0202
-/Alpha 16#0391
-/Alphatonos 16#0386
-/Amacron 16#0100
-/Amonospace 16#ff21
-/Aogonek 16#0104
-/Aring 16#00c5
-/Aringacute 16#01fa
-/Aringbelow 16#1e00
-/Aringsmall 16#f7e5
-/Asmall 16#f761
-/Atilde 16#00c3
-/Atildesmall 16#f7e3
-/Aybarmenian 16#0531
-/B 16#0042
-/Bcircle 16#24b7
-/Bdotaccent 16#1e02
-/Bdotbelow 16#1e04
-/Becyrillic 16#0411
-/Benarmenian 16#0532
-/Beta 16#0392
-/Bhook 16#0181
-/Blinebelow 16#1e06
-/Bmonospace 16#ff22
-/Brevesmall 16#f6f4
-/Bsmall 16#f762
-/Btopbar 16#0182
-/C 16#0043
-/Caarmenian 16#053e
-/Cacute 16#0106
-/Caron 16#f6ca
-/Caronsmall 16#f6f5
-/Ccaron 16#010c
-/Ccedilla 16#00c7
-/Ccedillaacute 16#1e08
-/Ccedillasmall 16#f7e7
-/Ccircle 16#24b8
-/Ccircumflex 16#0108
-/Cdot 16#010a
-/Cdotaccent 16#010a
-/Cedillasmall 16#f7b8
-/Chaarmenian 16#0549
-/Cheabkhasiancyrillic 16#04bc
-/Checyrillic 16#0427
-/Chedescenderabkhasiancyrillic 16#04be
-/Chedescendercyrillic 16#04b6
-/Chedieresiscyrillic 16#04f4
-/Cheharmenian 16#0543
-/Chekhakassiancyrillic 16#04cb
-/Cheverticalstrokecyrillic 16#04b8
-/Chi 16#03a7
-/Chook 16#0187
-/Circumflexsmall 16#f6f6
-/Cmonospace 16#ff23
-/Coarmenian 16#0551
-/Csmall 16#f763
-/D 16#0044
-/DZ 16#01f1
-/DZcaron 16#01c4
-/Daarmenian 16#0534
-/Dafrican 16#0189
-/Dcaron 16#010e
-/Dcedilla 16#1e10
-/Dcircle 16#24b9
-/Dcircumflexbelow 16#1e12
-/Dcroat 16#0110
-/Ddotaccent 16#1e0a
-/Ddotbelow 16#1e0c
-/Decyrillic 16#0414
-/Deicoptic 16#03ee
-/Delta 16#2206
-/Deltagreek 16#0394
-/Dhook 16#018a
-/Dieresis 16#f6cb
-/DieresisAcute 16#f6cc
-/DieresisGrave 16#f6cd
-/Dieresissmall 16#f7a8
-/Digammagreek 16#03dc
-/Djecyrillic 16#0402
-/Dlinebelow 16#1e0e
-/Dmonospace 16#ff24
-/Dotaccentsmall 16#f6f7
-/Dslash 16#0110
-/Dsmall 16#f764
-/Dtopbar 16#018b
-/Dz 16#01f2
-/Dzcaron 16#01c5
-/Dzeabkhasiancyrillic 16#04e0
-/Dzecyrillic 16#0405
-/Dzhecyrillic 16#040f
-/E 16#0045
-/Eacute 16#00c9
-/Eacutesmall 16#f7e9
-/Ebreve 16#0114
-/Ecaron 16#011a
-/Ecedillabreve 16#1e1c
-/Echarmenian 16#0535
-/Ecircle 16#24ba
-/Ecircumflex 16#00ca
-/Ecircumflexacute 16#1ebe
-/Ecircumflexbelow 16#1e18
-/Ecircumflexdotbelow 16#1ec6
-/Ecircumflexgrave 16#1ec0
-/Ecircumflexhookabove 16#1ec2
-/Ecircumflexsmall 16#f7ea
-/Ecircumflextilde 16#1ec4
-/Ecyrillic 16#0404
-/Edblgrave 16#0204
-/Edieresis 16#00cb
-/Edieresissmall 16#f7eb
-/Edot 16#0116
-/Edotaccent 16#0116
-/Edotbelow 16#1eb8
-/Efcyrillic 16#0424
-/Egrave 16#00c8
-/Egravesmall 16#f7e8
-/Eharmenian 16#0537
-/Ehookabove 16#1eba
-/Eightroman 16#2167
-/Einvertedbreve 16#0206
-/Eiotifiedcyrillic 16#0464
-/Elcyrillic 16#041b
-/Elevenroman 16#216a
-/Emacron 16#0112
-/Emacronacute 16#1e16
-/Emacrongrave 16#1e14
-/Emcyrillic 16#041c
-/Emonospace 16#ff25
-/Encyrillic 16#041d
-/Endescendercyrillic 16#04a2
-/Eng 16#014a
-/Enghecyrillic 16#04a4
-/Enhookcyrillic 16#04c7
-/Eogonek 16#0118
-/Eopen 16#0190
-/Epsilon 16#0395
-/Epsilontonos 16#0388
-/Ercyrillic 16#0420
-/Ereversed 16#018e
-/Ereversedcyrillic 16#042d
-/Escyrillic 16#0421
-/Esdescendercyrillic 16#04aa
-/Esh 16#01a9
-/Esmall 16#f765
-/Eta 16#0397
-/Etarmenian 16#0538
-/Etatonos 16#0389
-/Eth 16#00d0
-/Ethsmall 16#f7f0
-/Etilde 16#1ebc
-/Etildebelow 16#1e1a
-/Euro 16#20ac
-/Ezh 16#01b7
-/Ezhcaron 16#01ee
-/Ezhreversed 16#01b8
-/F 16#0046
-/Fcircle 16#24bb
-/Fdotaccent 16#1e1e
-/Feharmenian 16#0556
-/Feicoptic 16#03e4
-/Fhook 16#0191
-/Fitacyrillic 16#0472
-/Fiveroman 16#2164
-/Fmonospace 16#ff26
-/Fourroman 16#2163
-/Fsmall 16#f766
-/G 16#0047
-/GBsquare 16#3387
-/Gacute 16#01f4
-/Gamma 16#0393
-/Gammaafrican 16#0194
-/Gangiacoptic 16#03ea
-/Gbreve 16#011e
-/Gcaron 16#01e6
-/Gcedilla 16#0122
-/Gcircle 16#24bc
-/Gcircumflex 16#011c
-/Gcommaaccent 16#0122
-/Gdot 16#0120
-/Gdotaccent 16#0120
-/Gecyrillic 16#0413
-/Ghadarmenian 16#0542
-/Ghemiddlehookcyrillic 16#0494
-/Ghestrokecyrillic 16#0492
-/Gheupturncyrillic 16#0490
-/Ghook 16#0193
-/Gimarmenian 16#0533
-/Gjecyrillic 16#0403
-/Gmacron 16#1e20
-/Gmonospace 16#ff27
-/Grave 16#f6ce
-/Gravesmall 16#f760
-/Gsmall 16#f767
-/Gsmallhook 16#029b
-/Gstroke 16#01e4
-/H 16#0048
-/H18533 16#25cf
-/H18543 16#25aa
-/H18551 16#25ab
-/H22073 16#25a1
-/HPsquare 16#33cb
-/Haabkhasiancyrillic 16#04a8
-/Hadescendercyrillic 16#04b2
-/Hardsigncyrillic 16#042a
-/Hbar 16#0126
-/Hbrevebelow 16#1e2a
-/Hcedilla 16#1e28
-/Hcircle 16#24bd
-/Hcircumflex 16#0124
-/Hdieresis 16#1e26
-/Hdotaccent 16#1e22
-/Hdotbelow 16#1e24
-/Hmonospace 16#ff28
-/Hoarmenian 16#0540
-/Horicoptic 16#03e8
-/Hsmall 16#f768
-/Hungarumlaut 16#f6cf
-/Hungarumlautsmall 16#f6f8
-/Hzsquare 16#3390
-/I 16#0049
-/IAcyrillic 16#042f
-/IJ 16#0132
-/IUcyrillic 16#042e
-/Iacute 16#00cd
-/Iacutesmall 16#f7ed
-/Ibreve 16#012c
-/Icaron 16#01cf
-/Icircle 16#24be
-/Icircumflex 16#00ce
-/Icircumflexsmall 16#f7ee
-/Icyrillic 16#0406
-/Idblgrave 16#0208
-/Idieresis 16#00cf
-/Idieresisacute 16#1e2e
-/Idieresiscyrillic 16#04e4
-/Idieresissmall 16#f7ef
-/Idot 16#0130
-/Idotaccent 16#0130
-/Idotbelow 16#1eca
-/Iebrevecyrillic 16#04d6
-/Iecyrillic 16#0415
-/Ifraktur 16#2111
-/Igrave 16#00cc
-/Igravesmall 16#f7ec
-/Ihookabove 16#1ec8
-/Iicyrillic 16#0418
-/Iinvertedbreve 16#020a
-/Iishortcyrillic 16#0419
-/Imacron 16#012a
-/Imacroncyrillic 16#04e2
-/Imonospace 16#ff29
-/Iniarmenian 16#053b
-/Iocyrillic 16#0401
-/Iogonek 16#012e
-/Iota 16#0399
-/Iotaafrican 16#0196
-/Iotadieresis 16#03aa
-/Iotatonos 16#038a
-/Ismall 16#f769
-/Istroke 16#0197
-/Itilde 16#0128
-/Itildebelow 16#1e2c
-/Izhitsacyrillic 16#0474
-/Izhitsadblgravecyrillic 16#0476
-/J 16#004a
-/Jaarmenian 16#0541
-/Jcircle 16#24bf
-/Jcircumflex 16#0134
-/Jecyrillic 16#0408
-/Jheharmenian 16#054b
-/Jmonospace 16#ff2a
-/Jsmall 16#f76a
-/K 16#004b
-/KBsquare 16#3385
-/KKsquare 16#33cd
-/Kabashkircyrillic 16#04a0
-/Kacute 16#1e30
-/Kacyrillic 16#041a
-/Kadescendercyrillic 16#049a
-/Kahookcyrillic 16#04c3
-/Kappa 16#039a
-/Kastrokecyrillic 16#049e
-/Kaverticalstrokecyrillic 16#049c
-/Kcaron 16#01e8
-/Kcedilla 16#0136
-/Kcircle 16#24c0
-/Kcommaaccent 16#0136
-/Kdotbelow 16#1e32
-/Keharmenian 16#0554
-/Kenarmenian 16#053f
-/Khacyrillic 16#0425
-/Kheicoptic 16#03e6
-/Khook 16#0198
-/Kjecyrillic 16#040c
-/Klinebelow 16#1e34
-/Kmonospace 16#ff2b
-/Koppacyrillic 16#0480
-/Koppagreek 16#03de
-/Ksicyrillic 16#046e
-/Ksmall 16#f76b
-/L 16#004c
-/LJ 16#01c7
-/LL 16#f6bf
-/Lacute 16#0139
-/Lambda 16#039b
-/Lcaron 16#013d
-/Lcedilla 16#013b
-/Lcircle 16#24c1
-/Lcircumflexbelow 16#1e3c
-/Lcommaaccent 16#013b
-/Ldot 16#013f
-/Ldotaccent 16#013f
-/Ldotbelow 16#1e36
-/Ldotbelowmacron 16#1e38
-/Liwnarmenian 16#053c
-/Lj 16#01c8
-/Ljecyrillic 16#0409
-/Llinebelow 16#1e3a
-/Lmonospace 16#ff2c
-/Lslash 16#0141
-/Lslashsmall 16#f6f9
-/Lsmall 16#f76c
-/M 16#004d
-/MBsquare 16#3386
-/Macron 16#f6d0
-/Macronsmall 16#f7af
-/Macute 16#1e3e
-/Mcircle 16#24c2
-/Mdotaccent 16#1e40
-/Mdotbelow 16#1e42
-/Menarmenian 16#0544
-/Mmonospace 16#ff2d
-/Msmall 16#f76d
-/Mturned 16#019c
-/Mu 16#039c
-/N 16#004e
-/NJ 16#01ca
-/Nacute 16#0143
-/Ncaron 16#0147
-/Ncedilla 16#0145
-/Ncircle 16#24c3
-/Ncircumflexbelow 16#1e4a
-/Ncommaaccent 16#0145
-/Ndotaccent 16#1e44
-/Ndotbelow 16#1e46
-/Nhookleft 16#019d
-/Nineroman 16#2168
-/Nj 16#01cb
-/Njecyrillic 16#040a
-/Nlinebelow 16#1e48
-/Nmonospace 16#ff2e
-/Nowarmenian 16#0546
-/Nsmall 16#f76e
-/Ntilde 16#00d1
-/Ntildesmall 16#f7f1
-/Nu 16#039d
-/O 16#004f
-/OE 16#0152
-/OEsmall 16#f6fa
-/Oacute 16#00d3
-/Oacutesmall 16#f7f3
-/Obarredcyrillic 16#04e8
-/Obarreddieresiscyrillic 16#04ea
-/Obreve 16#014e
-/Ocaron 16#01d1
-/Ocenteredtilde 16#019f
-/Ocircle 16#24c4
-/Ocircumflex 16#00d4
-/Ocircumflexacute 16#1ed0
-/Ocircumflexdotbelow 16#1ed8
-/Ocircumflexgrave 16#1ed2
-/Ocircumflexhookabove 16#1ed4
-/Ocircumflexsmall 16#f7f4
-/Ocircumflextilde 16#1ed6
-/Ocyrillic 16#041e
-/Odblacute 16#0150
-/Odblgrave 16#020c
-/Odieresis 16#00d6
-/Odieresiscyrillic 16#04e6
-/Odieresissmall 16#f7f6
-/Odotbelow 16#1ecc
-/Ogoneksmall 16#f6fb
-/Ograve 16#00d2
-/Ogravesmall 16#f7f2
-/Oharmenian 16#0555
-/Ohm 16#2126
-/Ohookabove 16#1ece
-/Ohorn 16#01a0
-/Ohornacute 16#1eda
-/Ohorndotbelow 16#1ee2
-/Ohorngrave 16#1edc
-/Ohornhookabove 16#1ede
-/Ohorntilde 16#1ee0
-/Ohungarumlaut 16#0150
-/Oi 16#01a2
-/Oinvertedbreve 16#020e
-/Omacron 16#014c
-/Omacronacute 16#1e52
-/Omacrongrave 16#1e50
-/Omega 16#2126
-/Omegacyrillic 16#0460
-/Omegagreek 16#03a9
-/Omegaroundcyrillic 16#047a
-/Omegatitlocyrillic 16#047c
-/Omegatonos 16#038f
-/Omicron 16#039f
-/Omicrontonos 16#038c
-/Omonospace 16#ff2f
-/Oneroman 16#2160
-/Oogonek 16#01ea
-/Oogonekmacron 16#01ec
-/Oopen 16#0186
-/Oslash 16#00d8
-/Oslashacute 16#01fe
-/Oslashsmall 16#f7f8
-/Osmall 16#f76f
-/Ostrokeacute 16#01fe
-/Otcyrillic 16#047e
-/Otilde 16#00d5
-/Otildeacute 16#1e4c
-/Otildedieresis 16#1e4e
-/Otildesmall 16#f7f5
-/P 16#0050
-/Pacute 16#1e54
-/Pcircle 16#24c5
-/Pdotaccent 16#1e56
-/Pecyrillic 16#041f
-/Peharmenian 16#054a
-/Pemiddlehookcyrillic 16#04a6
-/Phi 16#03a6
-/Phook 16#01a4
-/Pi 16#03a0
-/Piwrarmenian 16#0553
-/Pmonospace 16#ff30
-/Psi 16#03a8
-/Psicyrillic 16#0470
-/Psmall 16#f770
-/Q 16#0051
-/Qcircle 16#24c6
-/Qmonospace 16#ff31
-/Qsmall 16#f771
-/R 16#0052
-/Raarmenian 16#054c
-/Racute 16#0154
-/Rcaron 16#0158
-/Rcedilla 16#0156
-/Rcircle 16#24c7
-/Rcommaaccent 16#0156
-/Rdblgrave 16#0210
-/Rdotaccent 16#1e58
-/Rdotbelow 16#1e5a
-/Rdotbelowmacron 16#1e5c
-/Reharmenian 16#0550
-/Rfraktur 16#211c
-/Rho 16#03a1
-/Ringsmall 16#f6fc
-/Rinvertedbreve 16#0212
-/Rlinebelow 16#1e5e
-/Rmonospace 16#ff32
-/Rsmall 16#f772
-/Rsmallinverted 16#0281
-/Rsmallinvertedsuperior 16#02b6
-/S 16#0053
-/SF010000 16#250c
-/SF020000 16#2514
-/SF030000 16#2510
-/SF040000 16#2518
-/SF050000 16#253c
-/SF060000 16#252c
-/SF070000 16#2534
-/SF080000 16#251c
-/SF090000 16#2524
-/SF100000 16#2500
-/SF110000 16#2502
-/SF190000 16#2561
-/SF200000 16#2562
-/SF210000 16#2556
-/SF220000 16#2555
-/SF230000 16#2563
-/SF240000 16#2551
-/SF250000 16#2557
-/SF260000 16#255d
-/SF270000 16#255c
-/SF280000 16#255b
-/SF360000 16#255e
-/SF370000 16#255f
-/SF380000 16#255a
-/SF390000 16#2554
-/SF400000 16#2569
-/SF410000 16#2566
-/SF420000 16#2560
-/SF430000 16#2550
-/SF440000 16#256c
-/SF450000 16#2567
-/SF460000 16#2568
-/SF470000 16#2564
-/SF480000 16#2565
-/SF490000 16#2559
-/SF500000 16#2558
-/SF510000 16#2552
-/SF520000 16#2553
-/SF530000 16#256b
-/SF540000 16#256a
-/Sacute 16#015a
-/Sacutedotaccent 16#1e64
-/Sampigreek 16#03e0
-/Scaron 16#0160
-/Scarondotaccent 16#1e66
-/Scaronsmall 16#f6fd
-/Scedilla 16#015e
-/Schwa 16#018f
-/Schwacyrillic 16#04d8
-/Schwadieresiscyrillic 16#04da
-/Scircle 16#24c8
-/Scircumflex 16#015c
-/Scommaaccent 16#0218
-/Sdotaccent 16#1e60
-/Sdotbelow 16#1e62
-/Sdotbelowdotaccent 16#1e68
-/Seharmenian 16#054d
-/Sevenroman 16#2166
-/Shaarmenian 16#0547
-/Shacyrillic 16#0428
-/Shchacyrillic 16#0429
-/Sheicoptic 16#03e2
-/Shhacyrillic 16#04ba
-/Shimacoptic 16#03ec
-/Sigma 16#03a3
-/Sixroman 16#2165
-/Smonospace 16#ff33
-/Softsigncyrillic 16#042c
-/Ssmall 16#f773
-/Stigmagreek 16#03da
-/T 16#0054
-/Tau 16#03a4
-/Tbar 16#0166
-/Tcaron 16#0164
-/Tcedilla 16#0162
-/Tcircle 16#24c9
-/Tcircumflexbelow 16#1e70
-/Tcommaaccent 16#0162
-/Tdotaccent 16#1e6a
-/Tdotbelow 16#1e6c
-/Tecyrillic 16#0422
-/Tedescendercyrillic 16#04ac
-/Tenroman 16#2169
-/Tetsecyrillic 16#04b4
-/Theta 16#0398
-/Thook 16#01ac
-/Thorn 16#00de
-/Thornsmall 16#f7fe
-/Threeroman 16#2162
-/Tildesmall 16#f6fe
-/Tiwnarmenian 16#054f
-/Tlinebelow 16#1e6e
-/Tmonospace 16#ff34
-/Toarmenian 16#0539
-/Tonefive 16#01bc
-/Tonesix 16#0184
-/Tonetwo 16#01a7
-/Tretroflexhook 16#01ae
-/Tsecyrillic 16#0426
-/Tshecyrillic 16#040b
-/Tsmall 16#f774
-/Twelveroman 16#216b
-/Tworoman 16#2161
-/U 16#0055
-/Uacute 16#00da
-/Uacutesmall 16#f7fa
-/Ubreve 16#016c
-/Ucaron 16#01d3
-/Ucircle 16#24ca
-/Ucircumflex 16#00db
-/Ucircumflexbelow 16#1e76
-/Ucircumflexsmall 16#f7fb
-/Ucyrillic 16#0423
-/Udblacute 16#0170
-/Udblgrave 16#0214
-/Udieresis 16#00dc
-/Udieresisacute 16#01d7
-/Udieresisbelow 16#1e72
-/Udieresiscaron 16#01d9
-/Udieresiscyrillic 16#04f0
-/Udieresisgrave 16#01db
-/Udieresismacron 16#01d5
-/Udieresissmall 16#f7fc
-/Udotbelow 16#1ee4
-/Ugrave 16#00d9
-/Ugravesmall 16#f7f9
-/Uhookabove 16#1ee6
-/Uhorn 16#01af
-/Uhornacute 16#1ee8
-/Uhorndotbelow 16#1ef0
-/Uhorngrave 16#1eea
-/Uhornhookabove 16#1eec
-/Uhorntilde 16#1eee
-/Uhungarumlaut 16#0170
-/Uhungarumlautcyrillic 16#04f2
-/Uinvertedbreve 16#0216
-/Ukcyrillic 16#0478
-/Umacron 16#016a
-/Umacroncyrillic 16#04ee
-/Umacrondieresis 16#1e7a
-/Umonospace 16#ff35
-/Uogonek 16#0172
-/Upsilon 16#03a5
-/Upsilon1 16#03d2
-/Upsilonacutehooksymbolgreek 16#03d3
-/Upsilonafrican 16#01b1
-/Upsilondieresis 16#03ab
-/Upsilondieresishooksymbolgreek 16#03d4
-/Upsilonhooksymbol 16#03d2
-/Upsilontonos 16#038e
-/Uring 16#016e
-/Ushortcyrillic 16#040e
-/Usmall 16#f775
-/Ustraightcyrillic 16#04ae
-/Ustraightstrokecyrillic 16#04b0
-/Utilde 16#0168
-/Utildeacute 16#1e78
-/Utildebelow 16#1e74
-/V 16#0056
-/Vcircle 16#24cb
-/Vdotbelow 16#1e7e
-/Vecyrillic 16#0412
-/Vewarmenian 16#054e
-/Vhook 16#01b2
-/Vmonospace 16#ff36
-/Voarmenian 16#0548
-/Vsmall 16#f776
-/Vtilde 16#1e7c
-/W 16#0057
-/Wacute 16#1e82
-/Wcircle 16#24cc
-/Wcircumflex 16#0174
-/Wdieresis 16#1e84
-/Wdotaccent 16#1e86
-/Wdotbelow 16#1e88
-/Wgrave 16#1e80
-/Wmonospace 16#ff37
-/Wsmall 16#f777
-/X 16#0058
-/Xcircle 16#24cd
-/Xdieresis 16#1e8c
-/Xdotaccent 16#1e8a
-/Xeharmenian 16#053d
-/Xi 16#039e
-/Xmonospace 16#ff38
-/Xsmall 16#f778
-/Y 16#0059
-/Yacute 16#00dd
-/Yacutesmall 16#f7fd
-/Yatcyrillic 16#0462
-/Ycircle 16#24ce
-/Ycircumflex 16#0176
-/Ydieresis 16#0178
-/Ydieresissmall 16#f7ff
-/Ydotaccent 16#1e8e
-/Ydotbelow 16#1ef4
-/Yericyrillic 16#042b
-/Yerudieresiscyrillic 16#04f8
-/Ygrave 16#1ef2
-/Yhook 16#01b3
-/Yhookabove 16#1ef6
-/Yiarmenian 16#0545
-/Yicyrillic 16#0407
-/Yiwnarmenian 16#0552
-/Ymonospace 16#ff39
-/Ysmall 16#f779
-/Ytilde 16#1ef8
-/Yusbigcyrillic 16#046a
-/Yusbigiotifiedcyrillic 16#046c
-/Yuslittlecyrillic 16#0466
-/Yuslittleiotifiedcyrillic 16#0468
-/Z 16#005a
-/Zaarmenian 16#0536
-/Zacute 16#0179
-/Zcaron 16#017d
-/Zcaronsmall 16#f6ff
-/Zcircle 16#24cf
-/Zcircumflex 16#1e90
-/Zdot 16#017b
-/Zdotaccent 16#017b
-/Zdotbelow 16#1e92
-/Zecyrillic 16#0417
-/Zedescendercyrillic 16#0498
-/Zedieresiscyrillic 16#04de
-/Zeta 16#0396
-/Zhearmenian 16#053a
-/Zhebrevecyrillic 16#04c1
-/Zhecyrillic 16#0416
-/Zhedescendercyrillic 16#0496
-/Zhedieresiscyrillic 16#04dc
-/Zlinebelow 16#1e94
-/Zmonospace 16#ff3a
-/Zsmall 16#f77a
-/Zstroke 16#01b5
-/a 16#0061
-/aabengali 16#0986
-/aacute 16#00e1
-/aadeva 16#0906
-/aagujarati 16#0a86
-/aagurmukhi 16#0a06
-/aamatragurmukhi 16#0a3e
-/aarusquare 16#3303
-/aavowelsignbengali 16#09be
-/aavowelsigndeva 16#093e
-/aavowelsigngujarati 16#0abe
-/abbreviationmarkarmenian 16#055f
-/abbreviationsigndeva 16#0970
-/abengali 16#0985
-/abopomofo 16#311a
-/abreve 16#0103
-/abreveacute 16#1eaf
-/abrevecyrillic 16#04d1
-/abrevedotbelow 16#1eb7
-/abrevegrave 16#1eb1
-/abrevehookabove 16#1eb3
-/abrevetilde 16#1eb5
-/acaron 16#01ce
-/acircle 16#24d0
-/acircumflex 16#00e2
-/acircumflexacute 16#1ea5
-/acircumflexdotbelow 16#1ead
-/acircumflexgrave 16#1ea7
-/acircumflexhookabove 16#1ea9
-/acircumflextilde 16#1eab
-/acute 16#00b4
-/acutebelowcmb 16#0317
-/acutecmb 16#0301
-/acutecomb 16#0301
-/acutedeva 16#0954
-/acutelowmod 16#02cf
-/acutetonecmb 16#0341
-/acyrillic 16#0430
-/adblgrave 16#0201
-/addakgurmukhi 16#0a71
-/adeva 16#0905
-/adieresis 16#00e4
-/adieresiscyrillic 16#04d3
-/adieresismacron 16#01df
-/adotbelow 16#1ea1
-/adotmacron 16#01e1
-/ae 16#00e6
-/aeacute 16#01fd
-/aekorean 16#3150
-/aemacron 16#01e3
-/afii00208 16#2015
-/afii08941 16#20a4
-/afii10017 16#0410
-/afii10018 16#0411
-/afii10019 16#0412
-/afii10020 16#0413
-/afii10021 16#0414
-/afii10022 16#0415
-/afii10023 16#0401
-/afii10024 16#0416
-/afii10025 16#0417
-/afii10026 16#0418
-/afii10027 16#0419
-/afii10028 16#041a
-/afii10029 16#041b
-/afii10030 16#041c
-/afii10031 16#041d
-/afii10032 16#041e
-/afii10033 16#041f
-/afii10034 16#0420
-/afii10035 16#0421
-/afii10036 16#0422
-/afii10037 16#0423
-/afii10038 16#0424
-/afii10039 16#0425
-/afii10040 16#0426
-/afii10041 16#0427
-/afii10042 16#0428
-/afii10043 16#0429
-/afii10044 16#042a
-/afii10045 16#042b
-/afii10046 16#042c
-/afii10047 16#042d
-/afii10048 16#042e
-/afii10049 16#042f
-/afii10050 16#0490
-/afii10051 16#0402
-/afii10052 16#0403
-/afii10053 16#0404
-/afii10054 16#0405
-/afii10055 16#0406
-/afii10056 16#0407
-/afii10057 16#0408
-/afii10058 16#0409
-/afii10059 16#040a
-/afii10060 16#040b
-/afii10061 16#040c
-/afii10062 16#040e
-/afii10063 16#f6c4
-/afii10064 16#f6c5
-/afii10065 16#0430
-/afii10066 16#0431
-/afii10067 16#0432
-/afii10068 16#0433
-/afii10069 16#0434
-/afii10070 16#0435
-/afii10071 16#0451
-/afii10072 16#0436
-/afii10073 16#0437
-/afii10074 16#0438
-/afii10075 16#0439
-/afii10076 16#043a
-/afii10077 16#043b
-/afii10078 16#043c
-/afii10079 16#043d
-/afii10080 16#043e
-/afii10081 16#043f
-/afii10082 16#0440
-/afii10083 16#0441
-/afii10084 16#0442
-/afii10085 16#0443
-/afii10086 16#0444
-/afii10087 16#0445
-/afii10088 16#0446
-/afii10089 16#0447
-/afii10090 16#0448
-/afii10091 16#0449
-/afii10092 16#044a
-/afii10093 16#044b
-/afii10094 16#044c
-/afii10095 16#044d
-/afii10096 16#044e
-/afii10097 16#044f
-/afii10098 16#0491
-/afii10099 16#0452
-/afii10100 16#0453
-/afii10101 16#0454
-/afii10102 16#0455
-/afii10103 16#0456
-/afii10104 16#0457
-/afii10105 16#0458
-/afii10106 16#0459
-/afii10107 16#045a
-/afii10108 16#045b
-/afii10109 16#045c
-/afii10110 16#045e
-/afii10145 16#040f
-/afii10146 16#0462
-/afii10147 16#0472
-/afii10148 16#0474
-/afii10192 16#f6c6
-/afii10193 16#045f
-/afii10194 16#0463
-/afii10195 16#0473
-/afii10196 16#0475
-/afii10831 16#f6c7
-/afii10832 16#f6c8
-/afii10846 16#04d9
-/afii299 16#200e
-/afii300 16#200f
-/afii301 16#200d
-/afii57381 16#066a
-/afii57388 16#060c
-/afii57392 16#0660
-/afii57393 16#0661
-/afii57394 16#0662
-/afii57395 16#0663
-/afii57396 16#0664
-/afii57397 16#0665
-/afii57398 16#0666
-/afii57399 16#0667
-/afii57400 16#0668
-/afii57401 16#0669
-/afii57403 16#061b
-/afii57407 16#061f
-/afii57409 16#0621
-/afii57410 16#0622
-/afii57411 16#0623
-/afii57412 16#0624
-/afii57413 16#0625
-/afii57414 16#0626
-/afii57415 16#0627
-/afii57416 16#0628
-/afii57417 16#0629
-/afii57418 16#062a
-/afii57419 16#062b
-/afii57420 16#062c
-/afii57421 16#062d
-/afii57422 16#062e
-/afii57423 16#062f
-/afii57424 16#0630
-/afii57425 16#0631
-/afii57426 16#0632
-/afii57427 16#0633
-/afii57428 16#0634
-/afii57429 16#0635
-/afii57430 16#0636
-/afii57431 16#0637
-/afii57432 16#0638
-/afii57433 16#0639
-/afii57434 16#063a
-/afii57440 16#0640
-/afii57441 16#0641
-/afii57442 16#0642
-/afii57443 16#0643
-/afii57444 16#0644
-/afii57445 16#0645
-/afii57446 16#0646
-/afii57448 16#0648
-/afii57449 16#0649
-/afii57450 16#064a
-/afii57451 16#064b
-/afii57452 16#064c
-/afii57453 16#064d
-/afii57454 16#064e
-/afii57455 16#064f
-/afii57456 16#0650
-/afii57457 16#0651
-/afii57458 16#0652
-/afii57470 16#0647
-/afii57505 16#06a4
-/afii57506 16#067e
-/afii57507 16#0686
-/afii57508 16#0698
-/afii57509 16#06af
-/afii57511 16#0679
-/afii57512 16#0688
-/afii57513 16#0691
-/afii57514 16#06ba
-/afii57519 16#06d2
-/afii57534 16#06d5
-/afii57636 16#20aa
-/afii57645 16#05be
-/afii57658 16#05c3
-/afii57664 16#05d0
-/afii57665 16#05d1
-/afii57666 16#05d2
-/afii57667 16#05d3
-/afii57668 16#05d4
-/afii57669 16#05d5
-/afii57670 16#05d6
-/afii57671 16#05d7
-/afii57672 16#05d8
-/afii57673 16#05d9
-/afii57674 16#05da
-/afii57675 16#05db
-/afii57676 16#05dc
-/afii57677 16#05dd
-/afii57678 16#05de
-/afii57679 16#05df
-/afii57680 16#05e0
-/afii57681 16#05e1
-/afii57682 16#05e2
-/afii57683 16#05e3
-/afii57684 16#05e4
-/afii57685 16#05e5
-/afii57686 16#05e6
-/afii57687 16#05e7
-/afii57688 16#05e8
-/afii57689 16#05e9
-/afii57690 16#05ea
-/afii57694 16#fb2a
-/afii57695 16#fb2b
-/afii57700 16#fb4b
-/afii57705 16#fb1f
-/afii57716 16#05f0
-/afii57717 16#05f1
-/afii57718 16#05f2
-/afii57723 16#fb35
-/afii57793 16#05b4
-/afii57794 16#05b5
-/afii57795 16#05b6
-/afii57796 16#05bb
-/afii57797 16#05b8
-/afii57798 16#05b7
-/afii57799 16#05b0
-/afii57800 16#05b2
-/afii57801 16#05b1
-/afii57802 16#05b3
-/afii57803 16#05c2
-/afii57804 16#05c1
-/afii57806 16#05b9
-/afii57807 16#05bc
-/afii57839 16#05bd
-/afii57841 16#05bf
-/afii57842 16#05c0
-/afii57929 16#02bc
-/afii61248 16#2105
-/afii61289 16#2113
-/afii61352 16#2116
-/afii61573 16#202c
-/afii61574 16#202d
-/afii61575 16#202e
-/afii61664 16#200c
-/afii63167 16#066d
-/afii64937 16#02bd
-/agrave 16#00e0
-/agujarati 16#0a85
-/agurmukhi 16#0a05
-/ahiragana 16#3042
-/ahookabove 16#1ea3
-/aibengali 16#0990
-/aibopomofo 16#311e
-/aideva 16#0910
-/aiecyrillic 16#04d5
-/aigujarati 16#0a90
-/aigurmukhi 16#0a10
-/aimatragurmukhi 16#0a48
-/ainarabic 16#0639
-/ainfinalarabic 16#feca
-/aininitialarabic 16#fecb
-/ainmedialarabic 16#fecc
-/ainvertedbreve 16#0203
-/aivowelsignbengali 16#09c8
-/aivowelsigndeva 16#0948
-/aivowelsigngujarati 16#0ac8
-/akatakana 16#30a2
-/akatakanahalfwidth 16#ff71
-/akorean 16#314f
-/alef 16#05d0
-/alefarabic 16#0627
-/alefdageshhebrew 16#fb30
-/aleffinalarabic 16#fe8e
-/alefhamzaabovearabic 16#0623
-/alefhamzaabovefinalarabic 16#fe84
-/alefhamzabelowarabic 16#0625
-/alefhamzabelowfinalarabic 16#fe88
-/alefhebrew 16#05d0
-/aleflamedhebrew 16#fb4f
-/alefmaddaabovearabic 16#0622
-/alefmaddaabovefinalarabic 16#fe82
-/alefmaksuraarabic 16#0649
-/alefmaksurafinalarabic 16#fef0
-/alefmaksurainitialarabic 16#fef3
-/alefmaksuramedialarabic 16#fef4
-/alefpatahhebrew 16#fb2e
-/alefqamatshebrew 16#fb2f
-/aleph 16#2135
-/allequal 16#224c
-/alpha 16#03b1
-/alphatonos 16#03ac
-/amacron 16#0101
-/amonospace 16#ff41
-/ampersand 16#0026
-/ampersandmonospace 16#ff06
-/ampersandsmall 16#f726
-/amsquare 16#33c2
-/anbopomofo 16#3122
-/angbopomofo 16#3124
-/angkhankhuthai 16#0e5a
-/angle 16#2220
-/anglebracketleft 16#3008
-/anglebracketleftvertical 16#fe3f
-/anglebracketright 16#3009
-/anglebracketrightvertical 16#fe40
-/angleleft 16#2329
-/angleright 16#232a
-/angstrom 16#212b
-/anoteleia 16#0387
-/anudattadeva 16#0952
-/anusvarabengali 16#0982
-/anusvaradeva 16#0902
-/anusvaragujarati 16#0a82
-/aogonek 16#0105
-/apaatosquare 16#3300
-/aparen 16#249c
-/apostrophearmenian 16#055a
-/apostrophemod 16#02bc
-/apple 16#f8ff
-/approaches 16#2250
-/approxequal 16#2248
-/approxequalorimage 16#2252
-/approximatelyequal 16#2245
-/araeaekorean 16#318e
-/araeakorean 16#318d
-/arc 16#2312
-/arighthalfring 16#1e9a
-/aring 16#00e5
-/aringacute 16#01fb
-/aringbelow 16#1e01
-/arrowboth 16#2194
-/arrowdashdown 16#21e3
-/arrowdashleft 16#21e0
-/arrowdashright 16#21e2
-/arrowdashup 16#21e1
-/arrowdblboth 16#21d4
-/arrowdbldown 16#21d3
-/arrowdblleft 16#21d0
-/arrowdblright 16#21d2
-/arrowdblup 16#21d1
-/arrowdown 16#2193
-/arrowdownleft 16#2199
-/arrowdownright 16#2198
-/arrowdownwhite 16#21e9
-/arrowheaddownmod 16#02c5
-/arrowheadleftmod 16#02c2
-/arrowheadrightmod 16#02c3
-/arrowheadupmod 16#02c4
-/arrowhorizex 16#f8e7
-/arrowleft 16#2190
-/arrowleftdbl 16#21d0
-/arrowleftdblstroke 16#21cd
-/arrowleftoverright 16#21c6
-/arrowleftwhite 16#21e6
-/arrowright 16#2192
-/arrowrightdblstroke 16#21cf
-/arrowrightheavy 16#279e
-/arrowrightoverleft 16#21c4
-/arrowrightwhite 16#21e8
-/arrowtableft 16#21e4
-/arrowtabright 16#21e5
-/arrowup 16#2191
-/arrowupdn 16#2195
-/arrowupdnbse 16#21a8
-/arrowupdownbase 16#21a8
-/arrowupleft 16#2196
-/arrowupleftofdown 16#21c5
-/arrowupright 16#2197
-/arrowupwhite 16#21e7
-/arrowvertex 16#f8e6
-/asciicircum 16#005e
-/asciicircummonospace 16#ff3e
-/asciitilde 16#007e
-/asciitildemonospace 16#ff5e
-/ascript 16#0251
-/ascriptturned 16#0252
-/asmallhiragana 16#3041
-/asmallkatakana 16#30a1
-/asmallkatakanahalfwidth 16#ff67
-/asterisk 16#002a
-/asteriskaltonearabic 16#066d
-/asteriskarabic 16#066d
-/asteriskmath 16#2217
-/asteriskmonospace 16#ff0a
-/asterisksmall 16#fe61
-/asterism 16#2042
-/asuperior 16#f6e9
-/asymptoticallyequal 16#2243
-/at 16#0040
-/atilde 16#00e3
-/atmonospace 16#ff20
-/atsmall 16#fe6b
-/aturned 16#0250
-/aubengali 16#0994
-/aubopomofo 16#3120
-/audeva 16#0914
-/augujarati 16#0a94
-/augurmukhi 16#0a14
-/aulengthmarkbengali 16#09d7
-/aumatragurmukhi 16#0a4c
-/auvowelsignbengali 16#09cc
-/auvowelsigndeva 16#094c
-/auvowelsigngujarati 16#0acc
-/avagrahadeva 16#093d
-/aybarmenian 16#0561
-/ayin 16#05e2
-/ayinaltonehebrew 16#fb20
-/ayinhebrew 16#05e2
-/b 16#0062
-/babengali 16#09ac
-/backslash 16#005c
-/backslashmonospace 16#ff3c
-/badeva 16#092c
-/bagujarati 16#0aac
-/bagurmukhi 16#0a2c
-/bahiragana 16#3070
-/bahtthai 16#0e3f
-/bakatakana 16#30d0
-/bar 16#007c
-/barmonospace 16#ff5c
-/bbopomofo 16#3105
-/bcircle 16#24d1
-/bdotaccent 16#1e03
-/bdotbelow 16#1e05
-/beamedsixteenthnotes 16#266c
-/because 16#2235
-/becyrillic 16#0431
-/beharabic 16#0628
-/behfinalarabic 16#fe90
-/behinitialarabic 16#fe91
-/behiragana 16#3079
-/behmedialarabic 16#fe92
-/behmeeminitialarabic 16#fc9f
-/behmeemisolatedarabic 16#fc08
-/behnoonfinalarabic 16#fc6d
-/bekatakana 16#30d9
-/benarmenian 16#0562
-/bet 16#05d1
-/beta 16#03b2
-/betasymbolgreek 16#03d0
-/betdagesh 16#fb31
-/betdageshhebrew 16#fb31
-/bethebrew 16#05d1
-/betrafehebrew 16#fb4c
-/bhabengali 16#09ad
-/bhadeva 16#092d
-/bhagujarati 16#0aad
-/bhagurmukhi 16#0a2d
-/bhook 16#0253
-/bihiragana 16#3073
-/bikatakana 16#30d3
-/bilabialclick 16#0298
-/bindigurmukhi 16#0a02
-/birusquare 16#3331
-/blackcircle 16#25cf
-/blackdiamond 16#25c6
-/blackdownpointingtriangle 16#25bc
-/blackleftpointingpointer 16#25c4
-/blackleftpointingtriangle 16#25c0
-/blacklenticularbracketleft 16#3010
-/blacklenticularbracketleftvertical 16#fe3b
-/blacklenticularbracketright 16#3011
-/blacklenticularbracketrightvertical 16#fe3c
-/blacklowerlefttriangle 16#25e3
-/blacklowerrighttriangle 16#25e2
-/blackrectangle 16#25ac
-/blackrightpointingpointer 16#25ba
-/blackrightpointingtriangle 16#25b6
-/blacksmallsquare 16#25aa
-/blacksmilingface 16#263b
-/blacksquare 16#25a0
-/blackstar 16#2605
-/blackupperlefttriangle 16#25e4
-/blackupperrighttriangle 16#25e5
-/blackuppointingsmalltriangle 16#25b4
-/blackuppointingtriangle 16#25b2
-/blank 16#2423
-/blinebelow 16#1e07
-/block 16#2588
-/bmonospace 16#ff42
-/bobaimaithai 16#0e1a
-/bohiragana 16#307c
-/bokatakana 16#30dc
-/bparen 16#249d
-/bqsquare 16#33c3
-/braceex 16#f8f4
-/braceleft 16#007b
-/braceleftbt 16#f8f3
-/braceleftmid 16#f8f2
-/braceleftmonospace 16#ff5b
-/braceleftsmall 16#fe5b
-/bracelefttp 16#f8f1
-/braceleftvertical 16#fe37
-/braceright 16#007d
-/bracerightbt 16#f8fe
-/bracerightmid 16#f8fd
-/bracerightmonospace 16#ff5d
-/bracerightsmall 16#fe5c
-/bracerighttp 16#f8fc
-/bracerightvertical 16#fe38
-/bracketleft 16#005b
-/bracketleftbt 16#f8f0
-/bracketleftex 16#f8ef
-/bracketleftmonospace 16#ff3b
-/bracketlefttp 16#f8ee
-/bracketright 16#005d
-/bracketrightbt 16#f8fb
-/bracketrightex 16#f8fa
-/bracketrightmonospace 16#ff3d
-/bracketrighttp 16#f8f9
-/breve 16#02d8
-/brevebelowcmb 16#032e
-/brevecmb 16#0306
-/breveinvertedbelowcmb 16#032f
-/breveinvertedcmb 16#0311
-/breveinverteddoublecmb 16#0361
-/bridgebelowcmb 16#032a
-/bridgeinvertedbelowcmb 16#033a
-/brokenbar 16#00a6
-/bstroke 16#0180
-/bsuperior 16#f6ea
-/btopbar 16#0183
-/buhiragana 16#3076
-/bukatakana 16#30d6
-/bullet 16#2022
-/bulletinverse 16#25d8
-/bulletoperator 16#2219
-/bullseye 16#25ce
-/c 16#0063
-/caarmenian 16#056e
-/cabengali 16#099a
-/cacute 16#0107
-/cadeva 16#091a
-/cagujarati 16#0a9a
-/cagurmukhi 16#0a1a
-/calsquare 16#3388
-/candrabindubengali 16#0981
-/candrabinducmb 16#0310
-/candrabindudeva 16#0901
-/candrabindugujarati 16#0a81
-/capslock 16#21ea
-/careof 16#2105
-/caron 16#02c7
-/caronbelowcmb 16#032c
-/caroncmb 16#030c
-/carriagereturn 16#21b5
-/cbopomofo 16#3118
-/ccaron 16#010d
-/ccedilla 16#00e7
-/ccedillaacute 16#1e09
-/ccircle 16#24d2
-/ccircumflex 16#0109
-/ccurl 16#0255
-/cdot 16#010b
-/cdotaccent 16#010b
-/cdsquare 16#33c5
-/cedilla 16#00b8
-/cedillacmb 16#0327
-/cent 16#00a2
-/centigrade 16#2103
-/centinferior 16#f6df
-/centmonospace 16#ffe0
-/centoldstyle 16#f7a2
-/centsuperior 16#f6e0
-/chaarmenian 16#0579
-/chabengali 16#099b
-/chadeva 16#091b
-/chagujarati 16#0a9b
-/chagurmukhi 16#0a1b
-/chbopomofo 16#3114
-/cheabkhasiancyrillic 16#04bd
-/checkmark 16#2713
-/checyrillic 16#0447
-/chedescenderabkhasiancyrillic 16#04bf
-/chedescendercyrillic 16#04b7
-/chedieresiscyrillic 16#04f5
-/cheharmenian 16#0573
-/chekhakassiancyrillic 16#04cc
-/cheverticalstrokecyrillic 16#04b9
-/chi 16#03c7
-/chieuchacirclekorean 16#3277
-/chieuchaparenkorean 16#3217
-/chieuchcirclekorean 16#3269
-/chieuchkorean 16#314a
-/chieuchparenkorean 16#3209
-/chochangthai 16#0e0a
-/chochanthai 16#0e08
-/chochingthai 16#0e09
-/chochoethai 16#0e0c
-/chook 16#0188
-/cieucacirclekorean 16#3276
-/cieucaparenkorean 16#3216
-/cieuccirclekorean 16#3268
-/cieuckorean 16#3148
-/cieucparenkorean 16#3208
-/cieucuparenkorean 16#321c
-/circle 16#25cb
-/circlemultiply 16#2297
-/circleot 16#2299
-/circleplus 16#2295
-/circlepostalmark 16#3036
-/circlewithlefthalfblack 16#25d0
-/circlewithrighthalfblack 16#25d1
-/circumflex 16#02c6
-/circumflexbelowcmb 16#032d
-/circumflexcmb 16#0302
-/clear 16#2327
-/clickalveolar 16#01c2
-/clickdental 16#01c0
-/clicklateral 16#01c1
-/clickretroflex 16#01c3
-/club 16#2663
-/clubsuitblack 16#2663
-/clubsuitwhite 16#2667
-/cmcubedsquare 16#33a4
-/cmonospace 16#ff43
-/cmsquaredsquare 16#33a0
-/coarmenian 16#0581
-/colon 16#003a
-/colonmonetary 16#20a1
-/colonmonospace 16#ff1a
-/colonsign 16#20a1
-/colonsmall 16#fe55
-/colontriangularhalfmod 16#02d1
-/colontriangularmod 16#02d0
-/comma 16#002c
-/commaabovecmb 16#0313
-/commaaboverightcmb 16#0315
-/commaaccent 16#f6c3
-/commaarabic 16#060c
-/commaarmenian 16#055d
-/commainferior 16#f6e1
-/commamonospace 16#ff0c
-/commareversedabovecmb 16#0314
-/commareversedmod 16#02bd
-/commasmall 16#fe50
-/commasuperior 16#f6e2
-/commaturnedabovecmb 16#0312
-/commaturnedmod 16#02bb
-/compass 16#263c
-/congruent 16#2245
-/contourintegral 16#222e
-/control 16#2303
-/controlACK 16#0006
-/controlBEL 16#0007
-/controlBS 16#0008
-/controlCAN 16#0018
-/controlCR 16#000d
-/controlDC1 16#0011
-/controlDC2 16#0012
-/controlDC3 16#0013
-/controlDC4 16#0014
-/controlDEL 16#007f
-/controlDLE 16#0010
-/controlEM 16#0019
-/controlENQ 16#0005
-/controlEOT 16#0004
-/controlESC 16#001b
-/controlETB 16#0017
-/controlETX 16#0003
-/controlFF 16#000c
-/controlFS 16#001c
-/controlGS 16#001d
-/controlHT 16#0009
-/controlLF 16#000a
-/controlNAK 16#0015
-/controlRS 16#001e
-/controlSI 16#000f
-/controlSO 16#000e
-/controlSOT 16#0002
-/controlSTX 16#0001
-/controlSUB 16#001a
-/controlSYN 16#0016
-/controlUS 16#001f
-/controlVT 16#000b
-/copyright 16#00a9
-/copyrightsans 16#f8e9
-/copyrightserif 16#f6d9
-/cornerbracketleft 16#300c
-/cornerbracketlefthalfwidth 16#ff62
-/cornerbracketleftvertical 16#fe41
-/cornerbracketright 16#300d
-/cornerbracketrighthalfwidth 16#ff63
-/cornerbracketrightvertical 16#fe42
-/corporationsquare 16#337f
-/cosquare 16#33c7
-/coverkgsquare 16#33c6
-/cparen 16#249e
-/cruzeiro 16#20a2
-/cstretched 16#0297
-/curlyand 16#22cf
-/curlyor 16#22ce
-/currency 16#00a4
-/cyrBreve 16#f6d1
-/cyrFlex 16#f6d2
-/cyrbreve 16#f6d4
-/cyrflex 16#f6d5
-/d 16#0064
-/daarmenian 16#0564
-/dabengali 16#09a6
-/dadarabic 16#0636
-/dadeva 16#0926
-/dadfinalarabic 16#febe
-/dadinitialarabic 16#febf
-/dadmedialarabic 16#fec0
-/dagesh 16#05bc
-/dageshhebrew 16#05bc
-/dagger 16#2020
-/daggerdbl 16#2021
-/dagujarati 16#0aa6
-/dagurmukhi 16#0a26
-/dahiragana 16#3060
-/dakatakana 16#30c0
-/dalarabic 16#062f
-/dalet 16#05d3
-/daletdagesh 16#fb33
-/daletdageshhebrew 16#fb33
-/dalethebrew 16#05d3
-/dalfinalarabic 16#feaa
-/dammaarabic 16#064f
-/dammalowarabic 16#064f
-/dammatanaltonearabic 16#064c
-/dammatanarabic 16#064c
-/danda 16#0964
-/dargahebrew 16#05a7
-/dargalefthebrew 16#05a7
-/dasiapneumatacyrilliccmb 16#0485
-/dblGrave 16#f6d3
-/dblanglebracketleft 16#300a
-/dblanglebracketleftvertical 16#fe3d
-/dblanglebracketright 16#300b
-/dblanglebracketrightvertical 16#fe3e
-/dblarchinvertedbelowcmb 16#032b
-/dblarrowleft 16#21d4
-/dblarrowright 16#21d2
-/dbldanda 16#0965
-/dblgrave 16#f6d6
-/dblgravecmb 16#030f
-/dblintegral 16#222c
-/dbllowline 16#2017
-/dbllowlinecmb 16#0333
-/dbloverlinecmb 16#033f
-/dblprimemod 16#02ba
-/dblverticalbar 16#2016
-/dblverticallineabovecmb 16#030e
-/dbopomofo 16#3109
-/dbsquare 16#33c8
-/dcaron 16#010f
-/dcedilla 16#1e11
-/dcircle 16#24d3
-/dcircumflexbelow 16#1e13
-/dcroat 16#0111
-/ddabengali 16#09a1
-/ddadeva 16#0921
-/ddagujarati 16#0aa1
-/ddagurmukhi 16#0a21
-/ddalarabic 16#0688
-/ddalfinalarabic 16#fb89
-/dddhadeva 16#095c
-/ddhabengali 16#09a2
-/ddhadeva 16#0922
-/ddhagujarati 16#0aa2
-/ddhagurmukhi 16#0a22
-/ddotaccent 16#1e0b
-/ddotbelow 16#1e0d
-/decimalseparatorarabic 16#066b
-/decimalseparatorpersian 16#066b
-/decyrillic 16#0434
-/degree 16#00b0
-/dehihebrew 16#05ad
-/dehiragana 16#3067
-/deicoptic 16#03ef
-/dekatakana 16#30c7
-/deleteleft 16#232b
-/deleteright 16#2326
-/delta 16#03b4
-/deltaturned 16#018d
-/denominatorminusonenumeratorbengali 16#09f8
-/dezh 16#02a4
-/dhabengali 16#09a7
-/dhadeva 16#0927
-/dhagujarati 16#0aa7
-/dhagurmukhi 16#0a27
-/dhook 16#0257
-/dialytikatonos 16#0385
-/dialytikatonoscmb 16#0344
-/diamond 16#2666
-/diamondsuitwhite 16#2662
-/dieresis 16#00a8
-/dieresisacute 16#f6d7
-/dieresisbelowcmb 16#0324
-/dieresiscmb 16#0308
-/dieresisgrave 16#f6d8
-/dieresistonos 16#0385
-/dihiragana 16#3062
-/dikatakana 16#30c2
-/dittomark 16#3003
-/divide 16#00f7
-/divides 16#2223
-/divisionslash 16#2215
-/djecyrillic 16#0452
-/dkshade 16#2593
-/dlinebelow 16#1e0f
-/dlsquare 16#3397
-/dmacron 16#0111
-/dmonospace 16#ff44
-/dnblock 16#2584
-/dochadathai 16#0e0e
-/dodekthai 16#0e14
-/dohiragana 16#3069
-/dokatakana 16#30c9
-/dollar 16#0024
-/dollarinferior 16#f6e3
-/dollarmonospace 16#ff04
-/dollaroldstyle 16#f724
-/dollarsmall 16#fe69
-/dollarsuperior 16#f6e4
-/dong 16#20ab
-/dorusquare 16#3326
-/dotaccent 16#02d9
-/dotaccentcmb 16#0307
-/dotbelowcmb 16#0323
-/dotbelowcomb 16#0323
-/dotkatakana 16#30fb
-/dotlessi 16#0131
-/dotlessj 16#f6be
-/dotlessjstrokehook 16#0284
-/dotmath 16#22c5
-/dottedcircle 16#25cc
-/doubleyodpatah 16#fb1f
-/doubleyodpatahhebrew 16#fb1f
-/downtackbelowcmb 16#031e
-/downtackmod 16#02d5
-/dparen 16#249f
-/dsuperior 16#f6eb
-/dtail 16#0256
-/dtopbar 16#018c
-/duhiragana 16#3065
-/dukatakana 16#30c5
-/dz 16#01f3
-/dzaltone 16#02a3
-/dzcaron 16#01c6
-/dzcurl 16#02a5
-/dzeabkhasiancyrillic 16#04e1
-/dzecyrillic 16#0455
-/dzhecyrillic 16#045f
-/e 16#0065
-/eacute 16#00e9
-/earth 16#2641
-/ebengali 16#098f
-/ebopomofo 16#311c
-/ebreve 16#0115
-/ecandradeva 16#090d
-/ecandragujarati 16#0a8d
-/ecandravowelsigndeva 16#0945
-/ecandravowelsigngujarati 16#0ac5
-/ecaron 16#011b
-/ecedillabreve 16#1e1d
-/echarmenian 16#0565
-/echyiwnarmenian 16#0587
-/ecircle 16#24d4
-/ecircumflex 16#00ea
-/ecircumflexacute 16#1ebf
-/ecircumflexbelow 16#1e19
-/ecircumflexdotbelow 16#1ec7
-/ecircumflexgrave 16#1ec1
-/ecircumflexhookabove 16#1ec3
-/ecircumflextilde 16#1ec5
-/ecyrillic 16#0454
-/edblgrave 16#0205
-/edeva 16#090f
-/edieresis 16#00eb
-/edot 16#0117
-/edotaccent 16#0117
-/edotbelow 16#1eb9
-/eegurmukhi 16#0a0f
-/eematragurmukhi 16#0a47
-/efcyrillic 16#0444
-/egrave 16#00e8
-/egujarati 16#0a8f
-/eharmenian 16#0567
-/ehbopomofo 16#311d
-/ehiragana 16#3048
-/ehookabove 16#1ebb
-/eibopomofo 16#311f
-/eight 16#0038
-/eightarabic 16#0668
-/eightbengali 16#09ee
-/eightcircle 16#2467
-/eightcircleinversesansserif 16#2791
-/eightdeva 16#096e
-/eighteencircle 16#2471
-/eighteenparen 16#2485
-/eighteenperiod 16#2499
-/eightgujarati 16#0aee
-/eightgurmukhi 16#0a6e
-/eighthackarabic 16#0668
-/eighthangzhou 16#3028
-/eighthnotebeamed 16#266b
-/eightideographicparen 16#3227
-/eightinferior 16#2088
-/eightmonospace 16#ff18
-/eightoldstyle 16#f738
-/eightparen 16#247b
-/eightperiod 16#248f
-/eightpersian 16#06f8
-/eightroman 16#2177
-/eightsuperior 16#2078
-/eightthai 16#0e58
-/einvertedbreve 16#0207
-/eiotifiedcyrillic 16#0465
-/ekatakana 16#30a8
-/ekatakanahalfwidth 16#ff74
-/ekonkargurmukhi 16#0a74
-/ekorean 16#3154
-/elcyrillic 16#043b
-/element 16#2208
-/elevencircle 16#246a
-/elevenparen 16#247e
-/elevenperiod 16#2492
-/elevenroman 16#217a
-/ellipsis 16#2026
-/ellipsisvertical 16#22ee
-/emacron 16#0113
-/emacronacute 16#1e17
-/emacrongrave 16#1e15
-/emcyrillic 16#043c
-/emdash 16#2014
-/emdashvertical 16#fe31
-/emonospace 16#ff45
-/emphasismarkarmenian 16#055b
-/emptyset 16#2205
-/enbopomofo 16#3123
-/encyrillic 16#043d
-/endash 16#2013
-/endashvertical 16#fe32
-/endescendercyrillic 16#04a3
-/eng 16#014b
-/engbopomofo 16#3125
-/enghecyrillic 16#04a5
-/enhookcyrillic 16#04c8
-/enspace 16#2002
-/eogonek 16#0119
-/eokorean 16#3153
-/eopen 16#025b
-/eopenclosed 16#029a
-/eopenreversed 16#025c
-/eopenreversedclosed 16#025e
-/eopenreversedhook 16#025d
-/eparen 16#24a0
-/epsilon 16#03b5
-/epsilontonos 16#03ad
-/equal 16#003d
-/equalmonospace 16#ff1d
-/equalsmall 16#fe66
-/equalsuperior 16#207c
-/equivalence 16#2261
-/erbopomofo 16#3126
-/ercyrillic 16#0440
-/ereversed 16#0258
-/ereversedcyrillic 16#044d
-/escyrillic 16#0441
-/esdescendercyrillic 16#04ab
-/esh 16#0283
-/eshcurl 16#0286
-/eshortdeva 16#090e
-/eshortvowelsigndeva 16#0946
-/eshreversedloop 16#01aa
-/eshsquatreversed 16#0285
-/esmallhiragana 16#3047
-/esmallkatakana 16#30a7
-/esmallkatakanahalfwidth 16#ff6a
-/estimated 16#212e
-/esuperior 16#f6ec
-/eta 16#03b7
-/etarmenian 16#0568
-/etatonos 16#03ae
-/eth 16#00f0
-/etilde 16#1ebd
-/etildebelow 16#1e1b
-/etnahtafoukhhebrew 16#0591
-/etnahtafoukhlefthebrew 16#0591
-/etnahtahebrew 16#0591
-/etnahtalefthebrew 16#0591
-/eturned 16#01dd
-/eukorean 16#3161
-/euro 16#20ac
-/evowelsignbengali 16#09c7
-/evowelsigndeva 16#0947
-/evowelsigngujarati 16#0ac7
-/exclam 16#0021
-/exclamarmenian 16#055c
-/exclamdbl 16#203c
-/exclamdown 16#00a1
-/exclamdownsmall 16#f7a1
-/exclammonospace 16#ff01
-/exclamsmall 16#f721
-/existential 16#2203
-/ezh 16#0292
-/ezhcaron 16#01ef
-/ezhcurl 16#0293
-/ezhreversed 16#01b9
-/ezhtail 16#01ba
-/f 16#0066
-/fadeva 16#095e
-/fagurmukhi 16#0a5e
-/fahrenheit 16#2109
-/fathaarabic 16#064e
-/fathalowarabic 16#064e
-/fathatanarabic 16#064b
-/fbopomofo 16#3108
-/fcircle 16#24d5
-/fdotaccent 16#1e1f
-/feharabic 16#0641
-/feharmenian 16#0586
-/fehfinalarabic 16#fed2
-/fehinitialarabic 16#fed3
-/fehmedialarabic 16#fed4
-/feicoptic 16#03e5
-/female 16#2640
-/ff 16#fb00
-/ffi 16#fb03
-/ffl 16#fb04
-/fi 16#fb01
-/fifteencircle 16#246e
-/fifteenparen 16#2482
-/fifteenperiod 16#2496
-/figuredash 16#2012
-/filledbox 16#25a0
-/filledrect 16#25ac
-/finalkaf 16#05da
-/finalkafdagesh 16#fb3a
-/finalkafdageshhebrew 16#fb3a
-/finalkafhebrew 16#05da
-/finalmem 16#05dd
-/finalmemhebrew 16#05dd
-/finalnun 16#05df
-/finalnunhebrew 16#05df
-/finalpe 16#05e3
-/finalpehebrew 16#05e3
-/finaltsadi 16#05e5
-/finaltsadihebrew 16#05e5
-/firsttonechinese 16#02c9
-/fisheye 16#25c9
-/fitacyrillic 16#0473
-/five 16#0035
-/fivearabic 16#0665
-/fivebengali 16#09eb
-/fivecircle 16#2464
-/fivecircleinversesansserif 16#278e
-/fivedeva 16#096b
-/fiveeighths 16#215d
-/fivegujarati 16#0aeb
-/fivegurmukhi 16#0a6b
-/fivehackarabic 16#0665
-/fivehangzhou 16#3025
-/fiveideographicparen 16#3224
-/fiveinferior 16#2085
-/fivemonospace 16#ff15
-/fiveoldstyle 16#f735
-/fiveparen 16#2478
-/fiveperiod 16#248c
-/fivepersian 16#06f5
-/fiveroman 16#2174
-/fivesuperior 16#2075
-/fivethai 16#0e55
-/fl 16#fb02
-/florin 16#0192
-/fmonospace 16#ff46
-/fmsquare 16#3399
-/fofanthai 16#0e1f
-/fofathai 16#0e1d
-/fongmanthai 16#0e4f
-/forall 16#2200
-/four 16#0034
-/fourarabic 16#0664
-/fourbengali 16#09ea
-/fourcircle 16#2463
-/fourcircleinversesansserif 16#278d
-/fourdeva 16#096a
-/fourgujarati 16#0aea
-/fourgurmukhi 16#0a6a
-/fourhackarabic 16#0664
-/fourhangzhou 16#3024
-/fourideographicparen 16#3223
-/fourinferior 16#2084
-/fourmonospace 16#ff14
-/fournumeratorbengali 16#09f7
-/fouroldstyle 16#f734
-/fourparen 16#2477
-/fourperiod 16#248b
-/fourpersian 16#06f4
-/fourroman 16#2173
-/foursuperior 16#2074
-/fourteencircle 16#246d
-/fourteenparen 16#2481
-/fourteenperiod 16#2495
-/fourthai 16#0e54
-/fourthtonechinese 16#02cb
-/fparen 16#24a1
-/fraction 16#2044
-/franc 16#20a3
-/g 16#0067
-/gabengali 16#0997
-/gacute 16#01f5
-/gadeva 16#0917
-/gafarabic 16#06af
-/gaffinalarabic 16#fb93
-/gafinitialarabic 16#fb94
-/gafmedialarabic 16#fb95
-/gagujarati 16#0a97
-/gagurmukhi 16#0a17
-/gahiragana 16#304c
-/gakatakana 16#30ac
-/gamma 16#03b3
-/gammalatinsmall 16#0263
-/gammasuperior 16#02e0
-/gangiacoptic 16#03eb
-/gbopomofo 16#310d
-/gbreve 16#011f
-/gcaron 16#01e7
-/gcedilla 16#0123
-/gcircle 16#24d6
-/gcircumflex 16#011d
-/gcommaaccent 16#0123
-/gdot 16#0121
-/gdotaccent 16#0121
-/gecyrillic 16#0433
-/gehiragana 16#3052
-/gekatakana 16#30b2
-/geometricallyequal 16#2251
-/gereshaccenthebrew 16#059c
-/gereshhebrew 16#05f3
-/gereshmuqdamhebrew 16#059d
-/germandbls 16#00df
-/gershayimaccenthebrew 16#059e
-/gershayimhebrew 16#05f4
-/getamark 16#3013
-/ghabengali 16#0998
-/ghadarmenian 16#0572
-/ghadeva 16#0918
-/ghagujarati 16#0a98
-/ghagurmukhi 16#0a18
-/ghainarabic 16#063a
-/ghainfinalarabic 16#fece
-/ghaininitialarabic 16#fecf
-/ghainmedialarabic 16#fed0
-/ghemiddlehookcyrillic 16#0495
-/ghestrokecyrillic 16#0493
-/gheupturncyrillic 16#0491
-/ghhadeva 16#095a
-/ghhagurmukhi 16#0a5a
-/ghook 16#0260
-/ghzsquare 16#3393
-/gihiragana 16#304e
-/gikatakana 16#30ae
-/gimarmenian 16#0563
-/gimel 16#05d2
-/gimeldagesh 16#fb32
-/gimeldageshhebrew 16#fb32
-/gimelhebrew 16#05d2
-/gjecyrillic 16#0453
-/glottalinvertedstroke 16#01be
-/glottalstop 16#0294
-/glottalstopinverted 16#0296
-/glottalstopmod 16#02c0
-/glottalstopreversed 16#0295
-/glottalstopreversedmod 16#02c1
-/glottalstopreversedsuperior 16#02e4
-/glottalstopstroke 16#02a1
-/glottalstopstrokereversed 16#02a2
-/gmacron 16#1e21
-/gmonospace 16#ff47
-/gohiragana 16#3054
-/gokatakana 16#30b4
-/gparen 16#24a2
-/gpasquare 16#33ac
-/gradient 16#2207
-/grave 16#0060
-/gravebelowcmb 16#0316
-/gravecmb 16#0300
-/gravecomb 16#0300
-/gravedeva 16#0953
-/gravelowmod 16#02ce
-/gravemonospace 16#ff40
-/gravetonecmb 16#0340
-/greater 16#003e
-/greaterequal 16#2265
-/greaterequalorless 16#22db
-/greatermonospace 16#ff1e
-/greaterorequivalent 16#2273
-/greaterorless 16#2277
-/greateroverequal 16#2267
-/greatersmall 16#fe65
-/gscript 16#0261
-/gstroke 16#01e5
-/guhiragana 16#3050
-/guillemotleft 16#00ab
-/guillemotright 16#00bb
-/guilsinglleft 16#2039
-/guilsinglright 16#203a
-/gukatakana 16#30b0
-/guramusquare 16#3318
-/gysquare 16#33c9
-/h 16#0068
-/haabkhasiancyrillic 16#04a9
-/haaltonearabic 16#06c1
-/habengali 16#09b9
-/hadescendercyrillic 16#04b3
-/hadeva 16#0939
-/hagujarati 16#0ab9
-/hagurmukhi 16#0a39
-/haharabic 16#062d
-/hahfinalarabic 16#fea2
-/hahinitialarabic 16#fea3
-/hahiragana 16#306f
-/hahmedialarabic 16#fea4
-/haitusquare 16#332a
-/hakatakana 16#30cf
-/hakatakanahalfwidth 16#ff8a
-/halantgurmukhi 16#0a4d
-/hamzaarabic 16#0621
-/hamzalowarabic 16#0621
-/hangulfiller 16#3164
-/hardsigncyrillic 16#044a
-/harpoonleftbarbup 16#21bc
-/harpoonrightbarbup 16#21c0
-/hasquare 16#33ca
-/hatafpatah 16#05b2
-/hatafpatah16 16#05b2
-/hatafpatah23 16#05b2
-/hatafpatah2f 16#05b2
-/hatafpatahhebrew 16#05b2
-/hatafpatahnarrowhebrew 16#05b2
-/hatafpatahquarterhebrew 16#05b2
-/hatafpatahwidehebrew 16#05b2
-/hatafqamats 16#05b3
-/hatafqamats1b 16#05b3
-/hatafqamats28 16#05b3
-/hatafqamats34 16#05b3
-/hatafqamatshebrew 16#05b3
-/hatafqamatsnarrowhebrew 16#05b3
-/hatafqamatsquarterhebrew 16#05b3
-/hatafqamatswidehebrew 16#05b3
-/hatafsegol 16#05b1
-/hatafsegol17 16#05b1
-/hatafsegol24 16#05b1
-/hatafsegol30 16#05b1
-/hatafsegolhebrew 16#05b1
-/hatafsegolnarrowhebrew 16#05b1
-/hatafsegolquarterhebrew 16#05b1
-/hatafsegolwidehebrew 16#05b1
-/hbar 16#0127
-/hbopomofo 16#310f
-/hbrevebelow 16#1e2b
-/hcedilla 16#1e29
-/hcircle 16#24d7
-/hcircumflex 16#0125
-/hdieresis 16#1e27
-/hdotaccent 16#1e23
-/hdotbelow 16#1e25
-/he 16#05d4
-/heart 16#2665
-/heartsuitblack 16#2665
-/heartsuitwhite 16#2661
-/hedagesh 16#fb34
-/hedageshhebrew 16#fb34
-/hehaltonearabic 16#06c1
-/heharabic 16#0647
-/hehebrew 16#05d4
-/hehfinalaltonearabic 16#fba7
-/hehfinalalttwoarabic 16#feea
-/hehfinalarabic 16#feea
-/hehhamzaabovefinalarabic 16#fba5
-/hehhamzaaboveisolatedarabic 16#fba4
-/hehinitialaltonearabic 16#fba8
-/hehinitialarabic 16#feeb
-/hehiragana 16#3078
-/hehmedialaltonearabic 16#fba9
-/hehmedialarabic 16#feec
-/heiseierasquare 16#337b
-/hekatakana 16#30d8
-/hekatakanahalfwidth 16#ff8d
-/hekutaarusquare 16#3336
-/henghook 16#0267
-/herutusquare 16#3339
-/het 16#05d7
-/hethebrew 16#05d7
-/hhook 16#0266
-/hhooksuperior 16#02b1
-/hieuhacirclekorean 16#327b
-/hieuhaparenkorean 16#321b
-/hieuhcirclekorean 16#326d
-/hieuhkorean 16#314e
-/hieuhparenkorean 16#320d
-/hihiragana 16#3072
-/hikatakana 16#30d2
-/hikatakanahalfwidth 16#ff8b
-/hiriq 16#05b4
-/hiriq14 16#05b4
-/hiriq21 16#05b4
-/hiriq2d 16#05b4
-/hiriqhebrew 16#05b4
-/hiriqnarrowhebrew 16#05b4
-/hiriqquarterhebrew 16#05b4
-/hiriqwidehebrew 16#05b4
-/hlinebelow 16#1e96
-/hmonospace 16#ff48
-/hoarmenian 16#0570
-/hohipthai 16#0e2b
-/hohiragana 16#307b
-/hokatakana 16#30db
-/hokatakanahalfwidth 16#ff8e
-/holam 16#05b9
-/holam19 16#05b9
-/holam26 16#05b9
-/holam32 16#05b9
-/holamhebrew 16#05b9
-/holamnarrowhebrew 16#05b9
-/holamquarterhebrew 16#05b9
-/holamwidehebrew 16#05b9
-/honokhukthai 16#0e2e
-/hookabovecomb 16#0309
-/hookcmb 16#0309
-/hookpalatalizedbelowcmb 16#0321
-/hookretroflexbelowcmb 16#0322
-/hoonsquare 16#3342
-/horicoptic 16#03e9
-/horizontalbar 16#2015
-/horncmb 16#031b
-/hotsprings 16#2668
-/house 16#2302
-/hparen 16#24a3
-/hsuperior 16#02b0
-/hturned 16#0265
-/huhiragana 16#3075
-/huiitosquare 16#3333
-/hukatakana 16#30d5
-/hukatakanahalfwidth 16#ff8c
-/hungarumlaut 16#02dd
-/hungarumlautcmb 16#030b
-/hv 16#0195
-/hyphen 16#002d
-/hypheninferior 16#f6e5
-/hyphenmonospace 16#ff0d
-/hyphensmall 16#fe63
-/hyphensuperior 16#f6e6
-/hyphentwo 16#2010
-/i 16#0069
-/iacute 16#00ed
-/iacyrillic 16#044f
-/ibengali 16#0987
-/ibopomofo 16#3127
-/ibreve 16#012d
-/icaron 16#01d0
-/icircle 16#24d8
-/icircumflex 16#00ee
-/icyrillic 16#0456
-/idblgrave 16#0209
-/ideographearthcircle 16#328f
-/ideographfirecircle 16#328b
-/ideographicallianceparen 16#323f
-/ideographiccallparen 16#323a
-/ideographiccentrecircle 16#32a5
-/ideographicclose 16#3006
-/ideographiccomma 16#3001
-/ideographiccommaleft 16#ff64
-/ideographiccongratulationparen 16#3237
-/ideographiccorrectcircle 16#32a3
-/ideographicearthparen 16#322f
-/ideographicenterpriseparen 16#323d
-/ideographicexcellentcircle 16#329d
-/ideographicfestivalparen 16#3240
-/ideographicfinancialcircle 16#3296
-/ideographicfinancialparen 16#3236
-/ideographicfireparen 16#322b
-/ideographichaveparen 16#3232
-/ideographichighcircle 16#32a4
-/ideographiciterationmark 16#3005
-/ideographiclaborcircle 16#3298
-/ideographiclaborparen 16#3238
-/ideographicleftcircle 16#32a7
-/ideographiclowcircle 16#32a6
-/ideographicmedicinecircle 16#32a9
-/ideographicmetalparen 16#322e
-/ideographicmoonparen 16#322a
-/ideographicnameparen 16#3234
-/ideographicperiod 16#3002
-/ideographicprintcircle 16#329e
-/ideographicreachparen 16#3243
-/ideographicrepresentparen 16#3239
-/ideographicresourceparen 16#323e
-/ideographicrightcircle 16#32a8
-/ideographicsecretcircle 16#3299
-/ideographicselfparen 16#3242
-/ideographicsocietyparen 16#3233
-/ideographicspace 16#3000
-/ideographicspecialparen 16#3235
-/ideographicstockparen 16#3231
-/ideographicstudyparen 16#323b
-/ideographicsunparen 16#3230
-/ideographicsuperviseparen 16#323c
-/ideographicwaterparen 16#322c
-/ideographicwoodparen 16#322d
-/ideographiczero 16#3007
-/ideographmetalcircle 16#328e
-/ideographmooncircle 16#328a
-/ideographnamecircle 16#3294
-/ideographsuncircle 16#3290
-/ideographwatercircle 16#328c
-/ideographwoodcircle 16#328d
-/ideva 16#0907
-/idieresis 16#00ef
-/idieresisacute 16#1e2f
-/idieresiscyrillic 16#04e5
-/idotbelow 16#1ecb
-/iebrevecyrillic 16#04d7
-/iecyrillic 16#0435
-/ieungacirclekorean 16#3275
-/ieungaparenkorean 16#3215
-/ieungcirclekorean 16#3267
-/ieungkorean 16#3147
-/ieungparenkorean 16#3207
-/igrave 16#00ec
-/igujarati 16#0a87
-/igurmukhi 16#0a07
-/ihiragana 16#3044
-/ihookabove 16#1ec9
-/iibengali 16#0988
-/iicyrillic 16#0438
-/iideva 16#0908
-/iigujarati 16#0a88
-/iigurmukhi 16#0a08
-/iimatragurmukhi 16#0a40
-/iinvertedbreve 16#020b
-/iishortcyrillic 16#0439
-/iivowelsignbengali 16#09c0
-/iivowelsigndeva 16#0940
-/iivowelsigngujarati 16#0ac0
-/ij 16#0133
-/ikatakana 16#30a4
-/ikatakanahalfwidth 16#ff72
-/ikorean 16#3163
-/ilde 16#02dc
-/iluyhebrew 16#05ac
-/imacron 16#012b
-/imacroncyrillic 16#04e3
-/imageorapproximatelyequal 16#2253
-/imatragurmukhi 16#0a3f
-/imonospace 16#ff49
-/increment 16#2206
-/infinity 16#221e
-/iniarmenian 16#056b
-/integral 16#222b
-/integralbottom 16#2321
-/integralbt 16#2321
-/integralex 16#f8f5
-/integraltop 16#2320
-/integraltp 16#2320
-/intersection 16#2229
-/intisquare 16#3305
-/invbullet 16#25d8
-/invcircle 16#25d9
-/invsmileface 16#263b
-/iocyrillic 16#0451
-/iogonek 16#012f
-/iota 16#03b9
-/iotadieresis 16#03ca
-/iotadieresistonos 16#0390
-/iotalatin 16#0269
-/iotatonos 16#03af
-/iparen 16#24a4
-/irigurmukhi 16#0a72
-/ismallhiragana 16#3043
-/ismallkatakana 16#30a3
-/ismallkatakanahalfwidth 16#ff68
-/issharbengali 16#09fa
-/istroke 16#0268
-/isuperior 16#f6ed
-/iterationhiragana 16#309d
-/iterationkatakana 16#30fd
-/itilde 16#0129
-/itildebelow 16#1e2d
-/iubopomofo 16#3129
-/iucyrillic 16#044e
-/ivowelsignbengali 16#09bf
-/ivowelsigndeva 16#093f
-/ivowelsigngujarati 16#0abf
-/izhitsacyrillic 16#0475
-/izhitsadblgravecyrillic 16#0477
-/j 16#006a
-/jaarmenian 16#0571
-/jabengali 16#099c
-/jadeva 16#091c
-/jagujarati 16#0a9c
-/jagurmukhi 16#0a1c
-/jbopomofo 16#3110
-/jcaron 16#01f0
-/jcircle 16#24d9
-/jcircumflex 16#0135
-/jcrossedtail 16#029d
-/jdotlessstroke 16#025f
-/jecyrillic 16#0458
-/jeemarabic 16#062c
-/jeemfinalarabic 16#fe9e
-/jeeminitialarabic 16#fe9f
-/jeemmedialarabic 16#fea0
-/jeharabic 16#0698
-/jehfinalarabic 16#fb8b
-/jhabengali 16#099d
-/jhadeva 16#091d
-/jhagujarati 16#0a9d
-/jhagurmukhi 16#0a1d
-/jheharmenian 16#057b
-/jis 16#3004
-/jmonospace 16#ff4a
-/jparen 16#24a5
-/jsuperior 16#02b2
-/k 16#006b
-/kabashkircyrillic 16#04a1
-/kabengali 16#0995
-/kacute 16#1e31
-/kacyrillic 16#043a
-/kadescendercyrillic 16#049b
-/kadeva 16#0915
-/kaf 16#05db
-/kafarabic 16#0643
-/kafdagesh 16#fb3b
-/kafdageshhebrew 16#fb3b
-/kaffinalarabic 16#feda
-/kafhebrew 16#05db
-/kafinitialarabic 16#fedb
-/kafmedialarabic 16#fedc
-/kafrafehebrew 16#fb4d
-/kagujarati 16#0a95
-/kagurmukhi 16#0a15
-/kahiragana 16#304b
-/kahookcyrillic 16#04c4
-/kakatakana 16#30ab
-/kakatakanahalfwidth 16#ff76
-/kappa 16#03ba
-/kappasymbolgreek 16#03f0
-/kapyeounmieumkorean 16#3171
-/kapyeounphieuphkorean 16#3184
-/kapyeounpieupkorean 16#3178
-/kapyeounssangpieupkorean 16#3179
-/karoriisquare 16#330d
-/kashidaautoarabic 16#0640
-/kashidaautonosidebearingarabic 16#0640
-/kasmallkatakana 16#30f5
-/kasquare 16#3384
-/kasraarabic 16#0650
-/kasratanarabic 16#064d
-/kastrokecyrillic 16#049f
-/katahiraprolongmarkhalfwidth 16#ff70
-/kaverticalstrokecyrillic 16#049d
-/kbopomofo 16#310e
-/kcalsquare 16#3389
-/kcaron 16#01e9
-/kcedilla 16#0137
-/kcircle 16#24da
-/kcommaaccent 16#0137
-/kdotbelow 16#1e33
-/keharmenian 16#0584
-/kehiragana 16#3051
-/kekatakana 16#30b1
-/kekatakanahalfwidth 16#ff79
-/kenarmenian 16#056f
-/kesmallkatakana 16#30f6
-/kgreenlandic 16#0138
-/khabengali 16#0996
-/khacyrillic 16#0445
-/khadeva 16#0916
-/khagujarati 16#0a96
-/khagurmukhi 16#0a16
-/khaharabic 16#062e
-/khahfinalarabic 16#fea6
-/khahinitialarabic 16#fea7
-/khahmedialarabic 16#fea8
-/kheicoptic 16#03e7
-/khhadeva 16#0959
-/khhagurmukhi 16#0a59
-/khieukhacirclekorean 16#3278
-/khieukhaparenkorean 16#3218
-/khieukhcirclekorean 16#326a
-/khieukhkorean 16#314b
-/khieukhparenkorean 16#320a
-/khokhaithai 16#0e02
-/khokhonthai 16#0e05
-/khokhuatthai 16#0e03
-/khokhwaithai 16#0e04
-/khomutthai 16#0e5b
-/khook 16#0199
-/khorakhangthai 16#0e06
-/khzsquare 16#3391
-/kihiragana 16#304d
-/kikatakana 16#30ad
-/kikatakanahalfwidth 16#ff77
-/kiroguramusquare 16#3315
-/kiromeetorusquare 16#3316
-/kirosquare 16#3314
-/kiyeokacirclekorean 16#326e
-/kiyeokaparenkorean 16#320e
-/kiyeokcirclekorean 16#3260
-/kiyeokkorean 16#3131
-/kiyeokparenkorean 16#3200
-/kiyeoksioskorean 16#3133
-/kjecyrillic 16#045c
-/klinebelow 16#1e35
-/klsquare 16#3398
-/kmcubedsquare 16#33a6
-/kmonospace 16#ff4b
-/kmsquaredsquare 16#33a2
-/kohiragana 16#3053
-/kohmsquare 16#33c0
-/kokaithai 16#0e01
-/kokatakana 16#30b3
-/kokatakanahalfwidth 16#ff7a
-/kooposquare 16#331e
-/koppacyrillic 16#0481
-/koreanstandardsymbol 16#327f
-/koroniscmb 16#0343
-/kparen 16#24a6
-/kpasquare 16#33aa
-/ksicyrillic 16#046f
-/ktsquare 16#33cf
-/kturned 16#029e
-/kuhiragana 16#304f
-/kukatakana 16#30af
-/kukatakanahalfwidth 16#ff78
-/kvsquare 16#33b8
-/kwsquare 16#33be
-/l 16#006c
-/labengali 16#09b2
-/lacute 16#013a
-/ladeva 16#0932
-/lagujarati 16#0ab2
-/lagurmukhi 16#0a32
-/lakkhangyaothai 16#0e45
-/lamaleffinalarabic 16#fefc
-/lamalefhamzaabovefinalarabic 16#fef8
-/lamalefhamzaaboveisolatedarabic 16#fef7
-/lamalefhamzabelowfinalarabic 16#fefa
-/lamalefhamzabelowisolatedarabic 16#fef9
-/lamalefisolatedarabic 16#fefb
-/lamalefmaddaabovefinalarabic 16#fef6
-/lamalefmaddaaboveisolatedarabic 16#fef5
-/lamarabic 16#0644
-/lambda 16#03bb
-/lambdastroke 16#019b
-/lamed 16#05dc
-/lameddagesh 16#fb3c
-/lameddageshhebrew 16#fb3c
-/lamedhebrew 16#05dc
-/lamfinalarabic 16#fede
-/lamhahinitialarabic 16#fcca
-/laminitialarabic 16#fedf
-/lamjeeminitialarabic 16#fcc9
-/lamkhahinitialarabic 16#fccb
-/lamlamhehisolatedarabic 16#fdf2
-/lammedialarabic 16#fee0
-/lammeemhahinitialarabic 16#fd88
-/lammeeminitialarabic 16#fccc
-/largecircle 16#25ef
-/lbar 16#019a
-/lbelt 16#026c
-/lbopomofo 16#310c
-/lcaron 16#013e
-/lcedilla 16#013c
-/lcircle 16#24db
-/lcircumflexbelow 16#1e3d
-/lcommaaccent 16#013c
-/ldot 16#0140
-/ldotaccent 16#0140
-/ldotbelow 16#1e37
-/ldotbelowmacron 16#1e39
-/leftangleabovecmb 16#031a
-/lefttackbelowcmb 16#0318
-/less 16#003c
-/lessequal 16#2264
-/lessequalorgreater 16#22da
-/lessmonospace 16#ff1c
-/lessorequivalent 16#2272
-/lessorgreater 16#2276
-/lessoverequal 16#2266
-/lesssmall 16#fe64
-/lezh 16#026e
-/lfblock 16#258c
-/lhookretroflex 16#026d
-/lira 16#20a4
-/liwnarmenian 16#056c
-/lj 16#01c9
-/ljecyrillic 16#0459
-/ll 16#f6c0
-/lladeva 16#0933
-/llagujarati 16#0ab3
-/llinebelow 16#1e3b
-/llladeva 16#0934
-/llvocalicbengali 16#09e1
-/llvocalicdeva 16#0961
-/llvocalicvowelsignbengali 16#09e3
-/llvocalicvowelsigndeva 16#0963
-/lmiddletilde 16#026b
-/lmonospace 16#ff4c
-/lmsquare 16#33d0
-/lochulathai 16#0e2c
-/logicaland 16#2227
-/logicalnot 16#00ac
-/logicalnotreversed 16#2310
-/logicalor 16#2228
-/lolingthai 16#0e25
-/longs 16#017f
-/lowlinecenterline 16#fe4e
-/lowlinecmb 16#0332
-/lowlinedashed 16#fe4d
-/lozenge 16#25ca
-/lparen 16#24a7
-/lslash 16#0142
-/lsquare 16#2113
-/lsuperior 16#f6ee
-/ltshade 16#2591
-/luthai 16#0e26
-/lvocalicbengali 16#098c
-/lvocalicdeva 16#090c
-/lvocalicvowelsignbengali 16#09e2
-/lvocalicvowelsigndeva 16#0962
-/lxsquare 16#33d3
-/m 16#006d
-/mabengali 16#09ae
-/macron 16#00af
-/macronbelowcmb 16#0331
-/macroncmb 16#0304
-/macronlowmod 16#02cd
-/macronmonospace 16#ffe3
-/macute 16#1e3f
-/madeva 16#092e
-/magujarati 16#0aae
-/magurmukhi 16#0a2e
-/mahapakhhebrew 16#05a4
-/mahapakhlefthebrew 16#05a4
-/mahiragana 16#307e
-/maichattawalowleftthai 16#f895
-/maichattawalowrightthai 16#f894
-/maichattawathai 16#0e4b
-/maichattawaupperleftthai 16#f893
-/maieklowleftthai 16#f88c
-/maieklowrightthai 16#f88b
-/maiekthai 16#0e48
-/maiekupperleftthai 16#f88a
-/maihanakatleftthai 16#f884
-/maihanakatthai 16#0e31
-/maitaikhuleftthai 16#f889
-/maitaikhuthai 16#0e47
-/maitholowleftthai 16#f88f
-/maitholowrightthai 16#f88e
-/maithothai 16#0e49
-/maithoupperleftthai 16#f88d
-/maitrilowleftthai 16#f892
-/maitrilowrightthai 16#f891
-/maitrithai 16#0e4a
-/maitriupperleftthai 16#f890
-/maiyamokthai 16#0e46
-/makatakana 16#30de
-/makatakanahalfwidth 16#ff8f
-/male 16#2642
-/mansyonsquare 16#3347
-/maqafhebrew 16#05be
-/mars 16#2642
-/masoracirclehebrew 16#05af
-/masquare 16#3383
-/mbopomofo 16#3107
-/mbsquare 16#33d4
-/mcircle 16#24dc
-/mcubedsquare 16#33a5
-/mdotaccent 16#1e41
-/mdotbelow 16#1e43
-/meemarabic 16#0645
-/meemfinalarabic 16#fee2
-/meeminitialarabic 16#fee3
-/meemmedialarabic 16#fee4
-/meemmeeminitialarabic 16#fcd1
-/meemmeemisolatedarabic 16#fc48
-/meetorusquare 16#334d
-/mehiragana 16#3081
-/meizierasquare 16#337e
-/mekatakana 16#30e1
-/mekatakanahalfwidth 16#ff92
-/mem 16#05de
-/memdagesh 16#fb3e
-/memdageshhebrew 16#fb3e
-/memhebrew 16#05de
-/menarmenian 16#0574
-/merkhahebrew 16#05a5
-/merkhakefulahebrew 16#05a6
-/merkhakefulalefthebrew 16#05a6
-/merkhalefthebrew 16#05a5
-/mhook 16#0271
-/mhzsquare 16#3392
-/middledotkatakanahalfwidth 16#ff65
-/middot 16#00b7
-/mieumacirclekorean 16#3272
-/mieumaparenkorean 16#3212
-/mieumcirclekorean 16#3264
-/mieumkorean 16#3141
-/mieumpansioskorean 16#3170
-/mieumparenkorean 16#3204
-/mieumpieupkorean 16#316e
-/mieumsioskorean 16#316f
-/mihiragana 16#307f
-/mikatakana 16#30df
-/mikatakanahalfwidth 16#ff90
-/minus 16#2212
-/minusbelowcmb 16#0320
-/minuscircle 16#2296
-/minusmod 16#02d7
-/minusplus 16#2213
-/minute 16#2032
-/miribaarusquare 16#334a
-/mirisquare 16#3349
-/mlonglegturned 16#0270
-/mlsquare 16#3396
-/mmcubedsquare 16#33a3
-/mmonospace 16#ff4d
-/mmsquaredsquare 16#339f
-/mohiragana 16#3082
-/mohmsquare 16#33c1
-/mokatakana 16#30e2
-/mokatakanahalfwidth 16#ff93
-/molsquare 16#33d6
-/momathai 16#0e21
-/moverssquare 16#33a7
-/moverssquaredsquare 16#33a8
-/mparen 16#24a8
-/mpasquare 16#33ab
-/mssquare 16#33b3
-/msuperior 16#f6ef
-/mturned 16#026f
-/mu 16#00b5
-/mu1 16#00b5
-/muasquare 16#3382
-/muchgreater 16#226b
-/muchless 16#226a
-/mufsquare 16#338c
-/mugreek 16#03bc
-/mugsquare 16#338d
-/muhiragana 16#3080
-/mukatakana 16#30e0
-/mukatakanahalfwidth 16#ff91
-/mulsquare 16#3395
-/multiply 16#00d7
-/mumsquare 16#339b
-/munahhebrew 16#05a3
-/munahlefthebrew 16#05a3
-/musicalnote 16#266a
-/musicalnotedbl 16#266b
-/musicflatsign 16#266d
-/musicsharpsign 16#266f
-/mussquare 16#33b2
-/muvsquare 16#33b6
-/muwsquare 16#33bc
-/mvmegasquare 16#33b9
-/mvsquare 16#33b7
-/mwmegasquare 16#33bf
-/mwsquare 16#33bd
-/n 16#006e
-/nabengali 16#09a8
-/nabla 16#2207
-/nacute 16#0144
-/nadeva 16#0928
-/nagujarati 16#0aa8
-/nagurmukhi 16#0a28
-/nahiragana 16#306a
-/nakatakana 16#30ca
-/nakatakanahalfwidth 16#ff85
-/napostrophe 16#0149
-/nasquare 16#3381
-/nbopomofo 16#310b
-/nbspace 16#00a0
-/ncaron 16#0148
-/ncedilla 16#0146
-/ncircle 16#24dd
-/ncircumflexbelow 16#1e4b
-/ncommaaccent 16#0146
-/ndotaccent 16#1e45
-/ndotbelow 16#1e47
-/nehiragana 16#306d
-/nekatakana 16#30cd
-/nekatakanahalfwidth 16#ff88
-/newsheqelsign 16#20aa
-/nfsquare 16#338b
-/ngabengali 16#0999
-/ngadeva 16#0919
-/ngagujarati 16#0a99
-/ngagurmukhi 16#0a19
-/ngonguthai 16#0e07
-/nhiragana 16#3093
-/nhookleft 16#0272
-/nhookretroflex 16#0273
-/nieunacirclekorean 16#326f
-/nieunaparenkorean 16#320f
-/nieuncieuckorean 16#3135
-/nieuncirclekorean 16#3261
-/nieunhieuhkorean 16#3136
-/nieunkorean 16#3134
-/nieunpansioskorean 16#3168
-/nieunparenkorean 16#3201
-/nieunsioskorean 16#3167
-/nieuntikeutkorean 16#3166
-/nihiragana 16#306b
-/nikatakana 16#30cb
-/nikatakanahalfwidth 16#ff86
-/nikhahitleftthai 16#f899
-/nikhahitthai 16#0e4d
-/nine 16#0039
-/ninearabic 16#0669
-/ninebengali 16#09ef
-/ninecircle 16#2468
-/ninecircleinversesansserif 16#2792
-/ninedeva 16#096f
-/ninegujarati 16#0aef
-/ninegurmukhi 16#0a6f
-/ninehackarabic 16#0669
-/ninehangzhou 16#3029
-/nineideographicparen 16#3228
-/nineinferior 16#2089
-/ninemonospace 16#ff19
-/nineoldstyle 16#f739
-/nineparen 16#247c
-/nineperiod 16#2490
-/ninepersian 16#06f9
-/nineroman 16#2178
-/ninesuperior 16#2079
-/nineteencircle 16#2472
-/nineteenparen 16#2486
-/nineteenperiod 16#249a
-/ninethai 16#0e59
-/nj 16#01cc
-/njecyrillic 16#045a
-/nkatakana 16#30f3
-/nkatakanahalfwidth 16#ff9d
-/nlegrightlong 16#019e
-/nlinebelow 16#1e49
-/nmonospace 16#ff4e
-/nmsquare 16#339a
-/nnabengali 16#09a3
-/nnadeva 16#0923
-/nnagujarati 16#0aa3
-/nnagurmukhi 16#0a23
-/nnnadeva 16#0929
-/nohiragana 16#306e
-/nokatakana 16#30ce
-/nokatakanahalfwidth 16#ff89
-/nonbreakingspace 16#00a0
-/nonenthai 16#0e13
-/nonuthai 16#0e19
-/noonarabic 16#0646
-/noonfinalarabic 16#fee6
-/noonghunnaarabic 16#06ba
-/noonghunnafinalarabic 16#fb9f
-/nooninitialarabic 16#fee7
-/noonjeeminitialarabic 16#fcd2
-/noonjeemisolatedarabic 16#fc4b
-/noonmedialarabic 16#fee8
-/noonmeeminitialarabic 16#fcd5
-/noonmeemisolatedarabic 16#fc4e
-/noonnoonfinalarabic 16#fc8d
-/notcontains 16#220c
-/notelement 16#2209
-/notelementof 16#2209
-/notequal 16#2260
-/notgreater 16#226f
-/notgreaternorequal 16#2271
-/notgreaternorless 16#2279
-/notidentical 16#2262
-/notless 16#226e
-/notlessnorequal 16#2270
-/notparallel 16#2226
-/notprecedes 16#2280
-/notsubset 16#2284
-/notsucceeds 16#2281
-/notsuperset 16#2285
-/nowarmenian 16#0576
-/nparen 16#24a9
-/nssquare 16#33b1
-/nsuperior 16#207f
-/ntilde 16#00f1
-/nu 16#03bd
-/nuhiragana 16#306c
-/nukatakana 16#30cc
-/nukatakanahalfwidth 16#ff87
-/nuktabengali 16#09bc
-/nuktadeva 16#093c
-/nuktagujarati 16#0abc
-/nuktagurmukhi 16#0a3c
-/numbersign 16#0023
-/numbersignmonospace 16#ff03
-/numbersignsmall 16#fe5f
-/numeralsigngreek 16#0374
-/numeralsignlowergreek 16#0375
-/numero 16#2116
-/nun 16#05e0
-/nundagesh 16#fb40
-/nundageshhebrew 16#fb40
-/nunhebrew 16#05e0
-/nvsquare 16#33b5
-/nwsquare 16#33bb
-/nyabengali 16#099e
-/nyadeva 16#091e
-/nyagujarati 16#0a9e
-/nyagurmukhi 16#0a1e
-/o 16#006f
-/oacute 16#00f3
-/oangthai 16#0e2d
-/obarred 16#0275
-/obarredcyrillic 16#04e9
-/obarreddieresiscyrillic 16#04eb
-/obengali 16#0993
-/obopomofo 16#311b
-/obreve 16#014f
-/ocandradeva 16#0911
-/ocandragujarati 16#0a91
-/ocandravowelsigndeva 16#0949
-/ocandravowelsigngujarati 16#0ac9
-/ocaron 16#01d2
-/ocircle 16#24de
-/ocircumflex 16#00f4
-/ocircumflexacute 16#1ed1
-/ocircumflexdotbelow 16#1ed9
-/ocircumflexgrave 16#1ed3
-/ocircumflexhookabove 16#1ed5
-/ocircumflextilde 16#1ed7
-/ocyrillic 16#043e
-/odblacute 16#0151
-/odblgrave 16#020d
-/odeva 16#0913
-/odieresis 16#00f6
-/odieresiscyrillic 16#04e7
-/odotbelow 16#1ecd
-/oe 16#0153
-/oekorean 16#315a
-/ogonek 16#02db
-/ogonekcmb 16#0328
-/ograve 16#00f2
-/ogujarati 16#0a93
-/oharmenian 16#0585
-/ohiragana 16#304a
-/ohookabove 16#1ecf
-/ohorn 16#01a1
-/ohornacute 16#1edb
-/ohorndotbelow 16#1ee3
-/ohorngrave 16#1edd
-/ohornhookabove 16#1edf
-/ohorntilde 16#1ee1
-/ohungarumlaut 16#0151
-/oi 16#01a3
-/oinvertedbreve 16#020f
-/okatakana 16#30aa
-/okatakanahalfwidth 16#ff75
-/okorean 16#3157
-/olehebrew 16#05ab
-/omacron 16#014d
-/omacronacute 16#1e53
-/omacrongrave 16#1e51
-/omdeva 16#0950
-/omega 16#03c9
-/omega1 16#03d6
-/omegacyrillic 16#0461
-/omegalatinclosed 16#0277
-/omegaroundcyrillic 16#047b
-/omegatitlocyrillic 16#047d
-/omegatonos 16#03ce
-/omgujarati 16#0ad0
-/omicron 16#03bf
-/omicrontonos 16#03cc
-/omonospace 16#ff4f
-/one 16#0031
-/onearabic 16#0661
-/onebengali 16#09e7
-/onecircle 16#2460
-/onecircleinversesansserif 16#278a
-/onedeva 16#0967
-/onedotenleader 16#2024
-/oneeighth 16#215b
-/onefitted 16#f6dc
-/onegujarati 16#0ae7
-/onegurmukhi 16#0a67
-/onehackarabic 16#0661
-/onehalf 16#00bd
-/onehangzhou 16#3021
-/oneideographicparen 16#3220
-/oneinferior 16#2081
-/onemonospace 16#ff11
-/onenumeratorbengali 16#09f4
-/oneoldstyle 16#f731
-/oneparen 16#2474
-/oneperiod 16#2488
-/onepersian 16#06f1
-/onequarter 16#00bc
-/oneroman 16#2170
-/onesuperior 16#00b9
-/onethai 16#0e51
-/onethird 16#2153
-/oogonek 16#01eb
-/oogonekmacron 16#01ed
-/oogurmukhi 16#0a13
-/oomatragurmukhi 16#0a4b
-/oopen 16#0254
-/oparen 16#24aa
-/openbullet 16#25e6
-/option 16#2325
-/ordfeminine 16#00aa
-/ordmasculine 16#00ba
-/orthogonal 16#221f
-/oshortdeva 16#0912
-/oshortvowelsigndeva 16#094a
-/oslash 16#00f8
-/oslashacute 16#01ff
-/osmallhiragana 16#3049
-/osmallkatakana 16#30a9
-/osmallkatakanahalfwidth 16#ff6b
-/ostrokeacute 16#01ff
-/osuperior 16#f6f0
-/otcyrillic 16#047f
-/otilde 16#00f5
-/otildeacute 16#1e4d
-/otildedieresis 16#1e4f
-/oubopomofo 16#3121
-/overline 16#203e
-/overlinecenterline 16#fe4a
-/overlinecmb 16#0305
-/overlinedashed 16#fe49
-/overlinedblwavy 16#fe4c
-/overlinewavy 16#fe4b
-/overscore 16#00af
-/ovowelsignbengali 16#09cb
-/ovowelsigndeva 16#094b
-/ovowelsigngujarati 16#0acb
-/p 16#0070
-/paampssquare 16#3380
-/paasentosquare 16#332b
-/pabengali 16#09aa
-/pacute 16#1e55
-/padeva 16#092a
-/pagedown 16#21df
-/pageup 16#21de
-/pagujarati 16#0aaa
-/pagurmukhi 16#0a2a
-/pahiragana 16#3071
-/paiyannoithai 16#0e2f
-/pakatakana 16#30d1
-/palatalizationcyrilliccmb 16#0484
-/palochkacyrillic 16#04c0
-/pansioskorean 16#317f
-/paragraph 16#00b6
-/parallel 16#2225
-/parenleft 16#0028
-/parenleftaltonearabic 16#fd3e
-/parenleftbt 16#f8ed
-/parenleftex 16#f8ec
-/parenleftinferior 16#208d
-/parenleftmonospace 16#ff08
-/parenleftsmall 16#fe59
-/parenleftsuperior 16#207d
-/parenlefttp 16#f8eb
-/parenleftvertical 16#fe35
-/parenright 16#0029
-/parenrightaltonearabic 16#fd3f
-/parenrightbt 16#f8f8
-/parenrightex 16#f8f7
-/parenrightinferior 16#208e
-/parenrightmonospace 16#ff09
-/parenrightsmall 16#fe5a
-/parenrightsuperior 16#207e
-/parenrighttp 16#f8f6
-/parenrightvertical 16#fe36
-/partialdiff 16#2202
-/paseqhebrew 16#05c0
-/pashtahebrew 16#0599
-/pasquare 16#33a9
-/patah 16#05b7
-/patah11 16#05b7
-/patah1d 16#05b7
-/patah2a 16#05b7
-/patahhebrew 16#05b7
-/patahnarrowhebrew 16#05b7
-/patahquarterhebrew 16#05b7
-/patahwidehebrew 16#05b7
-/pazerhebrew 16#05a1
-/pbopomofo 16#3106
-/pcircle 16#24df
-/pdotaccent 16#1e57
-/pe 16#05e4
-/pecyrillic 16#043f
-/pedagesh 16#fb44
-/pedageshhebrew 16#fb44
-/peezisquare 16#333b
-/pefinaldageshhebrew 16#fb43
-/peharabic 16#067e
-/peharmenian 16#057a
-/pehebrew 16#05e4
-/pehfinalarabic 16#fb57
-/pehinitialarabic 16#fb58
-/pehiragana 16#307a
-/pehmedialarabic 16#fb59
-/pekatakana 16#30da
-/pemiddlehookcyrillic 16#04a7
-/perafehebrew 16#fb4e
-/percent 16#0025
-/percentarabic 16#066a
-/percentmonospace 16#ff05
-/percentsmall 16#fe6a
-/period 16#002e
-/periodarmenian 16#0589
-/periodcentered 16#00b7
-/periodhalfwidth 16#ff61
-/periodinferior 16#f6e7
-/periodmonospace 16#ff0e
-/periodsmall 16#fe52
-/periodsuperior 16#f6e8
-/perispomenigreekcmb 16#0342
-/perpendicular 16#22a5
-/perthousand 16#2030
-/peseta 16#20a7
-/pfsquare 16#338a
-/phabengali 16#09ab
-/phadeva 16#092b
-/phagujarati 16#0aab
-/phagurmukhi 16#0a2b
-/phi 16#03c6
-/phi1 16#03d5
-/phieuphacirclekorean 16#327a
-/phieuphaparenkorean 16#321a
-/phieuphcirclekorean 16#326c
-/phieuphkorean 16#314d
-/phieuphparenkorean 16#320c
-/philatin 16#0278
-/phinthuthai 16#0e3a
-/phisymbolgreek 16#03d5
-/phook 16#01a5
-/phophanthai 16#0e1e
-/phophungthai 16#0e1c
-/phosamphaothai 16#0e20
-/pi 16#03c0
-/pieupacirclekorean 16#3273
-/pieupaparenkorean 16#3213
-/pieupcieuckorean 16#3176
-/pieupcirclekorean 16#3265
-/pieupkiyeokkorean 16#3172
-/pieupkorean 16#3142
-/pieupparenkorean 16#3205
-/pieupsioskiyeokkorean 16#3174
-/pieupsioskorean 16#3144
-/pieupsiostikeutkorean 16#3175
-/pieupthieuthkorean 16#3177
-/pieuptikeutkorean 16#3173
-/pihiragana 16#3074
-/pikatakana 16#30d4
-/pisymbolgreek 16#03d6
-/piwrarmenian 16#0583
-/plus 16#002b
-/plusbelowcmb 16#031f
-/pluscircle 16#2295
-/plusminus 16#00b1
-/plusmod 16#02d6
-/plusmonospace 16#ff0b
-/plussmall 16#fe62
-/plussuperior 16#207a
-/pmonospace 16#ff50
-/pmsquare 16#33d8
-/pohiragana 16#307d
-/pointingindexdownwhite 16#261f
-/pointingindexleftwhite 16#261c
-/pointingindexrightwhite 16#261e
-/pointingindexupwhite 16#261d
-/pokatakana 16#30dd
-/poplathai 16#0e1b
-/postalmark 16#3012
-/postalmarkface 16#3020
-/pparen 16#24ab
-/precedes 16#227a
-/prescription 16#211e
-/primemod 16#02b9
-/primereversed 16#2035
-/product 16#220f
-/projective 16#2305
-/prolongedkana 16#30fc
-/propellor 16#2318
-/propersubset 16#2282
-/propersuperset 16#2283
-/proportion 16#2237
-/proportional 16#221d
-/psi 16#03c8
-/psicyrillic 16#0471
-/psilipneumatacyrilliccmb 16#0486
-/pssquare 16#33b0
-/puhiragana 16#3077
-/pukatakana 16#30d7
-/pvsquare 16#33b4
-/pwsquare 16#33ba
-/q 16#0071
-/qadeva 16#0958
-/qadmahebrew 16#05a8
-/qafarabic 16#0642
-/qaffinalarabic 16#fed6
-/qafinitialarabic 16#fed7
-/qafmedialarabic 16#fed8
-/qamats 16#05b8
-/qamats10 16#05b8
-/qamats1a 16#05b8
-/qamats1c 16#05b8
-/qamats27 16#05b8
-/qamats29 16#05b8
-/qamats33 16#05b8
-/qamatsde 16#05b8
-/qamatshebrew 16#05b8
-/qamatsnarrowhebrew 16#05b8
-/qamatsqatanhebrew 16#05b8
-/qamatsqatannarrowhebrew 16#05b8
-/qamatsqatanquarterhebrew 16#05b8
-/qamatsqatanwidehebrew 16#05b8
-/qamatsquarterhebrew 16#05b8
-/qamatswidehebrew 16#05b8
-/qarneyparahebrew 16#059f
-/qbopomofo 16#3111
-/qcircle 16#24e0
-/qhook 16#02a0
-/qmonospace 16#ff51
-/qof 16#05e7
-/qofdagesh 16#fb47
-/qofdageshhebrew 16#fb47
-/qofhebrew 16#05e7
-/qparen 16#24ac
-/quarternote 16#2669
-/qubuts 16#05bb
-/qubuts18 16#05bb
-/qubuts25 16#05bb
-/qubuts31 16#05bb
-/qubutshebrew 16#05bb
-/qubutsnarrowhebrew 16#05bb
-/qubutsquarterhebrew 16#05bb
-/qubutswidehebrew 16#05bb
-/question 16#003f
-/questionarabic 16#061f
-/questionarmenian 16#055e
-/questiondown 16#00bf
-/questiondownsmall 16#f7bf
-/questiongreek 16#037e
-/questionmonospace 16#ff1f
-/questionsmall 16#f73f
-/quotedbl 16#0022
-/quotedblbase 16#201e
-/quotedblleft 16#201c
-/quotedblmonospace 16#ff02
-/quotedblprime 16#301e
-/quotedblprimereversed 16#301d
-/quotedblright 16#201d
-/quoteleft 16#2018
-/quoteleftreversed 16#201b
-/quotereversed 16#201b
-/quoteright 16#2019
-/quoterightn 16#0149
-/quotesinglbase 16#201a
-/quotesingle 16#0027
-/quotesinglemonospace 16#ff07
-/r 16#0072
-/raarmenian 16#057c
-/rabengali 16#09b0
-/racute 16#0155
-/radeva 16#0930
-/radical 16#221a
-/radicalex 16#f8e5
-/radoverssquare 16#33ae
-/radoverssquaredsquare 16#33af
-/radsquare 16#33ad
-/rafe 16#05bf
-/rafehebrew 16#05bf
-/ragujarati 16#0ab0
-/ragurmukhi 16#0a30
-/rahiragana 16#3089
-/rakatakana 16#30e9
-/rakatakanahalfwidth 16#ff97
-/ralowerdiagonalbengali 16#09f1
-/ramiddlediagonalbengali 16#09f0
-/ramshorn 16#0264
-/ratio 16#2236
-/rbopomofo 16#3116
-/rcaron 16#0159
-/rcedilla 16#0157
-/rcircle 16#24e1
-/rcommaaccent 16#0157
-/rdblgrave 16#0211
-/rdotaccent 16#1e59
-/rdotbelow 16#1e5b
-/rdotbelowmacron 16#1e5d
-/referencemark 16#203b
-/reflexsubset 16#2286
-/reflexsuperset 16#2287
-/registered 16#00ae
-/registersans 16#f8e8
-/registerserif 16#f6da
-/reharabic 16#0631
-/reharmenian 16#0580
-/rehfinalarabic 16#feae
-/rehiragana 16#308c
-/rekatakana 16#30ec
-/rekatakanahalfwidth 16#ff9a
-/resh 16#05e8
-/reshdageshhebrew 16#fb48
-/reshhebrew 16#05e8
-/reversedtilde 16#223d
-/reviahebrew 16#0597
-/reviamugrashhebrew 16#0597
-/revlogicalnot 16#2310
-/rfishhook 16#027e
-/rfishhookreversed 16#027f
-/rhabengali 16#09dd
-/rhadeva 16#095d
-/rho 16#03c1
-/rhook 16#027d
-/rhookturned 16#027b
-/rhookturnedsuperior 16#02b5
-/rhosymbolgreek 16#03f1
-/rhotichookmod 16#02de
-/rieulacirclekorean 16#3271
-/rieulaparenkorean 16#3211
-/rieulcirclekorean 16#3263
-/rieulhieuhkorean 16#3140
-/rieulkiyeokkorean 16#313a
-/rieulkiyeoksioskorean 16#3169
-/rieulkorean 16#3139
-/rieulmieumkorean 16#313b
-/rieulpansioskorean 16#316c
-/rieulparenkorean 16#3203
-/rieulphieuphkorean 16#313f
-/rieulpieupkorean 16#313c
-/rieulpieupsioskorean 16#316b
-/rieulsioskorean 16#313d
-/rieulthieuthkorean 16#313e
-/rieultikeutkorean 16#316a
-/rieulyeorinhieuhkorean 16#316d
-/rightangle 16#221f
-/righttackbelowcmb 16#0319
-/righttriangle 16#22bf
-/rihiragana 16#308a
-/rikatakana 16#30ea
-/rikatakanahalfwidth 16#ff98
-/ring 16#02da
-/ringbelowcmb 16#0325
-/ringcmb 16#030a
-/ringhalfleft 16#02bf
-/ringhalfleftarmenian 16#0559
-/ringhalfleftbelowcmb 16#031c
-/ringhalfleftcentered 16#02d3
-/ringhalfright 16#02be
-/ringhalfrightbelowcmb 16#0339
-/ringhalfrightcentered 16#02d2
-/rinvertedbreve 16#0213
-/rittorusquare 16#3351
-/rlinebelow 16#1e5f
-/rlongleg 16#027c
-/rlonglegturned 16#027a
-/rmonospace 16#ff52
-/rohiragana 16#308d
-/rokatakana 16#30ed
-/rokatakanahalfwidth 16#ff9b
-/roruathai 16#0e23
-/rparen 16#24ad
-/rrabengali 16#09dc
-/rradeva 16#0931
-/rragurmukhi 16#0a5c
-/rreharabic 16#0691
-/rrehfinalarabic 16#fb8d
-/rrvocalicbengali 16#09e0
-/rrvocalicdeva 16#0960
-/rrvocalicgujarati 16#0ae0
-/rrvocalicvowelsignbengali 16#09c4
-/rrvocalicvowelsigndeva 16#0944
-/rrvocalicvowelsigngujarati 16#0ac4
-/rsuperior 16#f6f1
-/rtblock 16#2590
-/rturned 16#0279
-/rturnedsuperior 16#02b4
-/ruhiragana 16#308b
-/rukatakana 16#30eb
-/rukatakanahalfwidth 16#ff99
-/rupeemarkbengali 16#09f2
-/rupeesignbengali 16#09f3
-/rupiah 16#f6dd
-/ruthai 16#0e24
-/rvocalicbengali 16#098b
-/rvocalicdeva 16#090b
-/rvocalicgujarati 16#0a8b
-/rvocalicvowelsignbengali 16#09c3
-/rvocalicvowelsigndeva 16#0943
-/rvocalicvowelsigngujarati 16#0ac3
-/s 16#0073
-/sabengali 16#09b8
-/sacute 16#015b
-/sacutedotaccent 16#1e65
-/sadarabic 16#0635
-/sadeva 16#0938
-/sadfinalarabic 16#feba
-/sadinitialarabic 16#febb
-/sadmedialarabic 16#febc
-/sagujarati 16#0ab8
-/sagurmukhi 16#0a38
-/sahiragana 16#3055
-/sakatakana 16#30b5
-/sakatakanahalfwidth 16#ff7b
-/sallallahoualayhewasallamarabic 16#fdfa
-/samekh 16#05e1
-/samekhdagesh 16#fb41
-/samekhdageshhebrew 16#fb41
-/samekhhebrew 16#05e1
-/saraaathai 16#0e32
-/saraaethai 16#0e41
-/saraaimaimalaithai 16#0e44
-/saraaimaimuanthai 16#0e43
-/saraamthai 16#0e33
-/saraathai 16#0e30
-/saraethai 16#0e40
-/saraiileftthai 16#f886
-/saraiithai 16#0e35
-/saraileftthai 16#f885
-/saraithai 16#0e34
-/saraothai 16#0e42
-/saraueeleftthai 16#f888
-/saraueethai 16#0e37
-/saraueleftthai 16#f887
-/sarauethai 16#0e36
-/sarauthai 16#0e38
-/sarauuthai 16#0e39
-/sbopomofo 16#3119
-/scaron 16#0161
-/scarondotaccent 16#1e67
-/scedilla 16#015f
-/schwa 16#0259
-/schwacyrillic 16#04d9
-/schwadieresiscyrillic 16#04db
-/schwahook 16#025a
-/scircle 16#24e2
-/scircumflex 16#015d
-/scommaaccent 16#0219
-/sdotaccent 16#1e61
-/sdotbelow 16#1e63
-/sdotbelowdotaccent 16#1e69
-/seagullbelowcmb 16#033c
-/second 16#2033
-/secondtonechinese 16#02ca
-/section 16#00a7
-/seenarabic 16#0633
-/seenfinalarabic 16#feb2
-/seeninitialarabic 16#feb3
-/seenmedialarabic 16#feb4
-/segol 16#05b6
-/segol13 16#05b6
-/segol1f 16#05b6
-/segol2c 16#05b6
-/segolhebrew 16#05b6
-/segolnarrowhebrew 16#05b6
-/segolquarterhebrew 16#05b6
-/segoltahebrew 16#0592
-/segolwidehebrew 16#05b6
-/seharmenian 16#057d
-/sehiragana 16#305b
-/sekatakana 16#30bb
-/sekatakanahalfwidth 16#ff7e
-/semicolon 16#003b
-/semicolonarabic 16#061b
-/semicolonmonospace 16#ff1b
-/semicolonsmall 16#fe54
-/semivoicedmarkkana 16#309c
-/semivoicedmarkkanahalfwidth 16#ff9f
-/sentisquare 16#3322
-/sentosquare 16#3323
-/seven 16#0037
-/sevenarabic 16#0667
-/sevenbengali 16#09ed
-/sevencircle 16#2466
-/sevencircleinversesansserif 16#2790
-/sevendeva 16#096d
-/seveneighths 16#215e
-/sevengujarati 16#0aed
-/sevengurmukhi 16#0a6d
-/sevenhackarabic 16#0667
-/sevenhangzhou 16#3027
-/sevenideographicparen 16#3226
-/seveninferior 16#2087
-/sevenmonospace 16#ff17
-/sevenoldstyle 16#f737
-/sevenparen 16#247a
-/sevenperiod 16#248e
-/sevenpersian 16#06f7
-/sevenroman 16#2176
-/sevensuperior 16#2077
-/seventeencircle 16#2470
-/seventeenparen 16#2484
-/seventeenperiod 16#2498
-/seventhai 16#0e57
-/sfthyphen 16#00ad
-/shaarmenian 16#0577
-/shabengali 16#09b6
-/shacyrillic 16#0448
-/shaddaarabic 16#0651
-/shaddadammaarabic 16#fc61
-/shaddadammatanarabic 16#fc5e
-/shaddafathaarabic 16#fc60
-/shaddakasraarabic 16#fc62
-/shaddakasratanarabic 16#fc5f
-/shade 16#2592
-/shadedark 16#2593
-/shadelight 16#2591
-/shademedium 16#2592
-/shadeva 16#0936
-/shagujarati 16#0ab6
-/shagurmukhi 16#0a36
-/shalshelethebrew 16#0593
-/shbopomofo 16#3115
-/shchacyrillic 16#0449
-/sheenarabic 16#0634
-/sheenfinalarabic 16#feb6
-/sheeninitialarabic 16#feb7
-/sheenmedialarabic 16#feb8
-/sheicoptic 16#03e3
-/sheqel 16#20aa
-/sheqelhebrew 16#20aa
-/sheva 16#05b0
-/sheva115 16#05b0
-/sheva15 16#05b0
-/sheva22 16#05b0
-/sheva2e 16#05b0
-/shevahebrew 16#05b0
-/shevanarrowhebrew 16#05b0
-/shevaquarterhebrew 16#05b0
-/shevawidehebrew 16#05b0
-/shhacyrillic 16#04bb
-/shimacoptic 16#03ed
-/shin 16#05e9
-/shindagesh 16#fb49
-/shindageshhebrew 16#fb49
-/shindageshshindot 16#fb2c
-/shindageshshindothebrew 16#fb2c
-/shindageshsindot 16#fb2d
-/shindageshsindothebrew 16#fb2d
-/shindothebrew 16#05c1
-/shinhebrew 16#05e9
-/shinshindot 16#fb2a
-/shinshindothebrew 16#fb2a
-/shinsindot 16#fb2b
-/shinsindothebrew 16#fb2b
-/shook 16#0282
-/sigma 16#03c3
-/sigma1 16#03c2
-/sigmafinal 16#03c2
-/sigmalunatesymbolgreek 16#03f2
-/sihiragana 16#3057
-/sikatakana 16#30b7
-/sikatakanahalfwidth 16#ff7c
-/siluqhebrew 16#05bd
-/siluqlefthebrew 16#05bd
-/similar 16#223c
-/sindothebrew 16#05c2
-/siosacirclekorean 16#3274
-/siosaparenkorean 16#3214
-/sioscieuckorean 16#317e
-/sioscirclekorean 16#3266
-/sioskiyeokkorean 16#317a
-/sioskorean 16#3145
-/siosnieunkorean 16#317b
-/siosparenkorean 16#3206
-/siospieupkorean 16#317d
-/siostikeutkorean 16#317c
-/six 16#0036
-/sixarabic 16#0666
-/sixbengali 16#09ec
-/sixcircle 16#2465
-/sixcircleinversesansserif 16#278f
-/sixdeva 16#096c
-/sixgujarati 16#0aec
-/sixgurmukhi 16#0a6c
-/sixhackarabic 16#0666
-/sixhangzhou 16#3026
-/sixideographicparen 16#3225
-/sixinferior 16#2086
-/sixmonospace 16#ff16
-/sixoldstyle 16#f736
-/sixparen 16#2479
-/sixperiod 16#248d
-/sixpersian 16#06f6
-/sixroman 16#2175
-/sixsuperior 16#2076
-/sixteencircle 16#246f
-/sixteencurrencydenominatorbengali 16#09f9
-/sixteenparen 16#2483
-/sixteenperiod 16#2497
-/sixthai 16#0e56
-/slash 16#002f
-/slashmonospace 16#ff0f
-/slong 16#017f
-/slongdotaccent 16#1e9b
-/smileface 16#263a
-/smonospace 16#ff53
-/sofpasuqhebrew 16#05c3
-/softhyphen 16#00ad
-/softsigncyrillic 16#044c
-/sohiragana 16#305d
-/sokatakana 16#30bd
-/sokatakanahalfwidth 16#ff7f
-/soliduslongoverlaycmb 16#0338
-/solidusshortoverlaycmb 16#0337
-/sorusithai 16#0e29
-/sosalathai 16#0e28
-/sosothai 16#0e0b
-/sosuathai 16#0e2a
-/space 16#0020
-/spacehackarabic 16#0020
-/spade 16#2660
-/spadesuitblack 16#2660
-/spadesuitwhite 16#2664
-/sparen 16#24ae
-/squarebelowcmb 16#033b
-/squarecc 16#33c4
-/squarecm 16#339d
-/squarediagonalcrosshatchfill 16#25a9
-/squarehorizontalfill 16#25a4
-/squarekg 16#338f
-/squarekm 16#339e
-/squarekmcapital 16#33ce
-/squareln 16#33d1
-/squarelog 16#33d2
-/squaremg 16#338e
-/squaremil 16#33d5
-/squaremm 16#339c
-/squaremsquared 16#33a1
-/squareorthogonalcrosshatchfill 16#25a6
-/squareupperlefttolowerrightfill 16#25a7
-/squareupperrighttolowerleftfill 16#25a8
-/squareverticalfill 16#25a5
-/squarewhitewithsmallblack 16#25a3
-/srsquare 16#33db
-/ssabengali 16#09b7
-/ssadeva 16#0937
-/ssagujarati 16#0ab7
-/ssangcieuckorean 16#3149
-/ssanghieuhkorean 16#3185
-/ssangieungkorean 16#3180
-/ssangkiyeokkorean 16#3132
-/ssangnieunkorean 16#3165
-/ssangpieupkorean 16#3143
-/ssangsioskorean 16#3146
-/ssangtikeutkorean 16#3138
-/ssuperior 16#f6f2
-/sterling 16#00a3
-/sterlingmonospace 16#ffe1
-/strokelongoverlaycmb 16#0336
-/strokeshortoverlaycmb 16#0335
-/subset 16#2282
-/subsetnotequal 16#228a
-/subsetorequal 16#2286
-/succeeds 16#227b
-/suchthat 16#220b
-/suhiragana 16#3059
-/sukatakana 16#30b9
-/sukatakanahalfwidth 16#ff7d
-/sukunarabic 16#0652
-/summation 16#2211
-/sun 16#263c
-/superset 16#2283
-/supersetnotequal 16#228b
-/supersetorequal 16#2287
-/svsquare 16#33dc
-/syouwaerasquare 16#337c
-/t 16#0074
-/tabengali 16#09a4
-/tackdown 16#22a4
-/tackleft 16#22a3
-/tadeva 16#0924
-/tagujarati 16#0aa4
-/tagurmukhi 16#0a24
-/taharabic 16#0637
-/tahfinalarabic 16#fec2
-/tahinitialarabic 16#fec3
-/tahiragana 16#305f
-/tahmedialarabic 16#fec4
-/taisyouerasquare 16#337d
-/takatakana 16#30bf
-/takatakanahalfwidth 16#ff80
-/tatweelarabic 16#0640
-/tau 16#03c4
-/tav 16#05ea
-/tavdages 16#fb4a
-/tavdagesh 16#fb4a
-/tavdageshhebrew 16#fb4a
-/tavhebrew 16#05ea
-/tbar 16#0167
-/tbopomofo 16#310a
-/tcaron 16#0165
-/tccurl 16#02a8
-/tcedilla 16#0163
-/tcheharabic 16#0686
-/tchehfinalarabic 16#fb7b
-/tchehinitialarabic 16#fb7c
-/tchehmedialarabic 16#fb7d
-/tcircle 16#24e3
-/tcircumflexbelow 16#1e71
-/tcommaaccent 16#0163
-/tdieresis 16#1e97
-/tdotaccent 16#1e6b
-/tdotbelow 16#1e6d
-/tecyrillic 16#0442
-/tedescendercyrillic 16#04ad
-/teharabic 16#062a
-/tehfinalarabic 16#fe96
-/tehhahinitialarabic 16#fca2
-/tehhahisolatedarabic 16#fc0c
-/tehinitialarabic 16#fe97
-/tehiragana 16#3066
-/tehjeeminitialarabic 16#fca1
-/tehjeemisolatedarabic 16#fc0b
-/tehmarbutaarabic 16#0629
-/tehmarbutafinalarabic 16#fe94
-/tehmedialarabic 16#fe98
-/tehmeeminitialarabic 16#fca4
-/tehmeemisolatedarabic 16#fc0e
-/tehnoonfinalarabic 16#fc73
-/tekatakana 16#30c6
-/tekatakanahalfwidth 16#ff83
-/telephone 16#2121
-/telephoneblack 16#260e
-/telishagedolahebrew 16#05a0
-/telishaqetanahebrew 16#05a9
-/tencircle 16#2469
-/tenideographicparen 16#3229
-/tenparen 16#247d
-/tenperiod 16#2491
-/tenroman 16#2179
-/tesh 16#02a7
-/tet 16#05d8
-/tetdagesh 16#fb38
-/tetdageshhebrew 16#fb38
-/tethebrew 16#05d8
-/tetsecyrillic 16#04b5
-/tevirhebrew 16#059b
-/tevirlefthebrew 16#059b
-/thabengali 16#09a5
-/thadeva 16#0925
-/thagujarati 16#0aa5
-/thagurmukhi 16#0a25
-/thalarabic 16#0630
-/thalfinalarabic 16#feac
-/thanthakhatlowleftthai 16#f898
-/thanthakhatlowrightthai 16#f897
-/thanthakhatthai 16#0e4c
-/thanthakhatupperleftthai 16#f896
-/theharabic 16#062b
-/thehfinalarabic 16#fe9a
-/thehinitialarabic 16#fe9b
-/thehmedialarabic 16#fe9c
-/thereexists 16#2203
-/therefore 16#2234
-/theta 16#03b8
-/theta1 16#03d1
-/thetasymbolgreek 16#03d1
-/thieuthacirclekorean 16#3279
-/thieuthaparenkorean 16#3219
-/thieuthcirclekorean 16#326b
-/thieuthkorean 16#314c
-/thieuthparenkorean 16#320b
-/thirteencircle 16#246c
-/thirteenparen 16#2480
-/thirteenperiod 16#2494
-/thonangmonthothai 16#0e11
-/thook 16#01ad
-/thophuthaothai 16#0e12
-/thorn 16#00fe
-/thothahanthai 16#0e17
-/thothanthai 16#0e10
-/thothongthai 16#0e18
-/thothungthai 16#0e16
-/thousandcyrillic 16#0482
-/thousandsseparatorarabic 16#066c
-/thousandsseparatorpersian 16#066c
-/three 16#0033
-/threearabic 16#0663
-/threebengali 16#09e9
-/threecircle 16#2462
-/threecircleinversesansserif 16#278c
-/threedeva 16#0969
-/threeeighths 16#215c
-/threegujarati 16#0ae9
-/threegurmukhi 16#0a69
-/threehackarabic 16#0663
-/threehangzhou 16#3023
-/threeideographicparen 16#3222
-/threeinferior 16#2083
-/threemonospace 16#ff13
-/threenumeratorbengali 16#09f6
-/threeoldstyle 16#f733
-/threeparen 16#2476
-/threeperiod 16#248a
-/threepersian 16#06f3
-/threequarters 16#00be
-/threequartersemdash 16#f6de
-/threeroman 16#2172
-/threesuperior 16#00b3
-/threethai 16#0e53
-/thzsquare 16#3394
-/tihiragana 16#3061
-/tikatakana 16#30c1
-/tikatakanahalfwidth 16#ff81
-/tikeutacirclekorean 16#3270
-/tikeutaparenkorean 16#3210
-/tikeutcirclekorean 16#3262
-/tikeutkorean 16#3137
-/tikeutparenkorean 16#3202
-/tilde 16#02dc
-/tildebelowcmb 16#0330
-/tildecmb 16#0303
-/tildecomb 16#0303
-/tildedoublecmb 16#0360
-/tildeoperator 16#223c
-/tildeoverlaycmb 16#0334
-/tildeverticalcmb 16#033e
-/timescircle 16#2297
-/tipehahebrew 16#0596
-/tipehalefthebrew 16#0596
-/tippigurmukhi 16#0a70
-/titlocyrilliccmb 16#0483
-/tiwnarmenian 16#057f
-/tlinebelow 16#1e6f
-/tmonospace 16#ff54
-/toarmenian 16#0569
-/tohiragana 16#3068
-/tokatakana 16#30c8
-/tokatakanahalfwidth 16#ff84
-/tonebarextrahighmod 16#02e5
-/tonebarextralowmod 16#02e9
-/tonebarhighmod 16#02e6
-/tonebarlowmod 16#02e8
-/tonebarmidmod 16#02e7
-/tonefive 16#01bd
-/tonesix 16#0185
-/tonetwo 16#01a8
-/tonos 16#0384
-/tonsquare 16#3327
-/topatakthai 16#0e0f
-/tortoiseshellbracketleft 16#3014
-/tortoiseshellbracketleftsmall 16#fe5d
-/tortoiseshellbracketleftvertical 16#fe39
-/tortoiseshellbracketright 16#3015
-/tortoiseshellbracketrightsmall 16#fe5e
-/tortoiseshellbracketrightvertical 16#fe3a
-/totaothai 16#0e15
-/tpalatalhook 16#01ab
-/tparen 16#24af
-/trademark 16#2122
-/trademarksans 16#f8ea
-/trademarkserif 16#f6db
-/tretroflexhook 16#0288
-/triagdn 16#25bc
-/triaglf 16#25c4
-/triagrt 16#25ba
-/triagup 16#25b2
-/ts 16#02a6
-/tsadi 16#05e6
-/tsadidagesh 16#fb46
-/tsadidageshhebrew 16#fb46
-/tsadihebrew 16#05e6
-/tsecyrillic 16#0446
-/tsere 16#05b5
-/tsere12 16#05b5
-/tsere1e 16#05b5
-/tsere2b 16#05b5
-/tserehebrew 16#05b5
-/tserenarrowhebrew 16#05b5
-/tserequarterhebrew 16#05b5
-/tserewidehebrew 16#05b5
-/tshecyrillic 16#045b
-/tsuperior 16#f6f3
-/ttabengali 16#099f
-/ttadeva 16#091f
-/ttagujarati 16#0a9f
-/ttagurmukhi 16#0a1f
-/tteharabic 16#0679
-/ttehfinalarabic 16#fb67
-/ttehinitialarabic 16#fb68
-/ttehmedialarabic 16#fb69
-/tthabengali 16#09a0
-/tthadeva 16#0920
-/tthagujarati 16#0aa0
-/tthagurmukhi 16#0a20
-/tturned 16#0287
-/tuhiragana 16#3064
-/tukatakana 16#30c4
-/tukatakanahalfwidth 16#ff82
-/tusmallhiragana 16#3063
-/tusmallkatakana 16#30c3
-/tusmallkatakanahalfwidth 16#ff6f
-/twelvecircle 16#246b
-/twelveparen 16#247f
-/twelveperiod 16#2493
-/twelveroman 16#217b
-/twentycircle 16#2473
-/twentyhangzhou 16#5344
-/twentyparen 16#2487
-/twentyperiod 16#249b
-/two 16#0032
-/twoarabic 16#0662
-/twobengali 16#09e8
-/twocircle 16#2461
-/twocircleinversesansserif 16#278b
-/twodeva 16#0968
-/twodotenleader 16#2025
-/twodotleader 16#2025
-/twodotleadervertical 16#fe30
-/twogujarati 16#0ae8
-/twogurmukhi 16#0a68
-/twohackarabic 16#0662
-/twohangzhou 16#3022
-/twoideographicparen 16#3221
-/twoinferior 16#2082
-/twomonospace 16#ff12
-/twonumeratorbengali 16#09f5
-/twooldstyle 16#f732
-/twoparen 16#2475
-/twoperiod 16#2489
-/twopersian 16#06f2
-/tworoman 16#2171
-/twostroke 16#01bb
-/twosuperior 16#00b2
-/twothai 16#0e52
-/twothirds 16#2154
-/u 16#0075
-/uacute 16#00fa
-/ubar 16#0289
-/ubengali 16#0989
-/ubopomofo 16#3128
-/ubreve 16#016d
-/ucaron 16#01d4
-/ucircle 16#24e4
-/ucircumflex 16#00fb
-/ucircumflexbelow 16#1e77
-/ucyrillic 16#0443
-/udattadeva 16#0951
-/udblacute 16#0171
-/udblgrave 16#0215
-/udeva 16#0909
-/udieresis 16#00fc
-/udieresisacute 16#01d8
-/udieresisbelow 16#1e73
-/udieresiscaron 16#01da
-/udieresiscyrillic 16#04f1
-/udieresisgrave 16#01dc
-/udieresismacron 16#01d6
-/udotbelow 16#1ee5
-/ugrave 16#00f9
-/ugujarati 16#0a89
-/ugurmukhi 16#0a09
-/uhiragana 16#3046
-/uhookabove 16#1ee7
-/uhorn 16#01b0
-/uhornacute 16#1ee9
-/uhorndotbelow 16#1ef1
-/uhorngrave 16#1eeb
-/uhornhookabove 16#1eed
-/uhorntilde 16#1eef
-/uhungarumlaut 16#0171
-/uhungarumlautcyrillic 16#04f3
-/uinvertedbreve 16#0217
-/ukatakana 16#30a6
-/ukatakanahalfwidth 16#ff73
-/ukcyrillic 16#0479
-/ukorean 16#315c
-/umacron 16#016b
-/umacroncyrillic 16#04ef
-/umacrondieresis 16#1e7b
-/umatragurmukhi 16#0a41
-/umonospace 16#ff55
-/underscore 16#005f
-/underscoredbl 16#2017
-/underscoremonospace 16#ff3f
-/underscorevertical 16#fe33
-/underscorewavy 16#fe4f
-/union 16#222a
-/universal 16#2200
-/uogonek 16#0173
-/uparen 16#24b0
-/upblock 16#2580
-/upperdothebrew 16#05c4
-/upsilon 16#03c5
-/upsilondieresis 16#03cb
-/upsilondieresistonos 16#03b0
-/upsilonlatin 16#028a
-/upsilontonos 16#03cd
-/uptackbelowcmb 16#031d
-/uptackmod 16#02d4
-/uragurmukhi 16#0a73
-/uring 16#016f
-/ushortcyrillic 16#045e
-/usmallhiragana 16#3045
-/usmallkatakana 16#30a5
-/usmallkatakanahalfwidth 16#ff69
-/ustraightcyrillic 16#04af
-/ustraightstrokecyrillic 16#04b1
-/utilde 16#0169
-/utildeacute 16#1e79
-/utildebelow 16#1e75
-/uubengali 16#098a
-/uudeva 16#090a
-/uugujarati 16#0a8a
-/uugurmukhi 16#0a0a
-/uumatragurmukhi 16#0a42
-/uuvowelsignbengali 16#09c2
-/uuvowelsigndeva 16#0942
-/uuvowelsigngujarati 16#0ac2
-/uvowelsignbengali 16#09c1
-/uvowelsigndeva 16#0941
-/uvowelsigngujarati 16#0ac1
-/v 16#0076
-/vadeva 16#0935
-/vagujarati 16#0ab5
-/vagurmukhi 16#0a35
-/vakatakana 16#30f7
-/vav 16#05d5
-/vavdagesh 16#fb35
-/vavdagesh65 16#fb35
-/vavdageshhebrew 16#fb35
-/vavhebrew 16#05d5
-/vavholam 16#fb4b
-/vavholamhebrew 16#fb4b
-/vavvavhebrew 16#05f0
-/vavyodhebrew 16#05f1
-/vcircle 16#24e5
-/vdotbelow 16#1e7f
-/vecyrillic 16#0432
-/veharabic 16#06a4
-/vehfinalarabic 16#fb6b
-/vehinitialarabic 16#fb6c
-/vehmedialarabic 16#fb6d
-/vekatakana 16#30f9
-/venus 16#2640
-/verticalbar 16#007c
-/verticallineabovecmb 16#030d
-/verticallinebelowcmb 16#0329
-/verticallinelowmod 16#02cc
-/verticallinemod 16#02c8
-/vewarmenian 16#057e
-/vhook 16#028b
-/vikatakana 16#30f8
-/viramabengali 16#09cd
-/viramadeva 16#094d
-/viramagujarati 16#0acd
-/visargabengali 16#0983
-/visargadeva 16#0903
-/visargagujarati 16#0a83
-/vmonospace 16#ff56
-/voarmenian 16#0578
-/voicediterationhiragana 16#309e
-/voicediterationkatakana 16#30fe
-/voicedmarkkana 16#309b
-/voicedmarkkanahalfwidth 16#ff9e
-/vokatakana 16#30fa
-/vparen 16#24b1
-/vtilde 16#1e7d
-/vturned 16#028c
-/vuhiragana 16#3094
-/vukatakana 16#30f4
-/w 16#0077
-/wacute 16#1e83
-/waekorean 16#3159
-/wahiragana 16#308f
-/wakatakana 16#30ef
-/wakatakanahalfwidth 16#ff9c
-/wakorean 16#3158
-/wasmallhiragana 16#308e
-/wasmallkatakana 16#30ee
-/wattosquare 16#3357
-/wavedash 16#301c
-/wavyunderscorevertical 16#fe34
-/wawarabic 16#0648
-/wawfinalarabic 16#feee
-/wawhamzaabovearabic 16#0624
-/wawhamzaabovefinalarabic 16#fe86
-/wbsquare 16#33dd
-/wcircle 16#24e6
-/wcircumflex 16#0175
-/wdieresis 16#1e85
-/wdotaccent 16#1e87
-/wdotbelow 16#1e89
-/wehiragana 16#3091
-/weierstrass 16#2118
-/wekatakana 16#30f1
-/wekorean 16#315e
-/weokorean 16#315d
-/wgrave 16#1e81
-/whitebullet 16#25e6
-/whitecircle 16#25cb
-/whitecircleinverse 16#25d9
-/whitecornerbracketleft 16#300e
-/whitecornerbracketleftvertical 16#fe43
-/whitecornerbracketright 16#300f
-/whitecornerbracketrightvertical 16#fe44
-/whitediamond 16#25c7
-/whitediamondcontainingblacksmalldiamond 16#25c8
-/whitedownpointingsmalltriangle 16#25bf
-/whitedownpointingtriangle 16#25bd
-/whiteleftpointingsmalltriangle 16#25c3
-/whiteleftpointingtriangle 16#25c1
-/whitelenticularbracketleft 16#3016
-/whitelenticularbracketright 16#3017
-/whiterightpointingsmalltriangle 16#25b9
-/whiterightpointingtriangle 16#25b7
-/whitesmallsquare 16#25ab
-/whitesmilingface 16#263a
-/whitesquare 16#25a1
-/whitestar 16#2606
-/whitetelephone 16#260f
-/whitetortoiseshellbracketleft 16#3018
-/whitetortoiseshellbracketright 16#3019
-/whiteuppointingsmalltriangle 16#25b5
-/whiteuppointingtriangle 16#25b3
-/wihiragana 16#3090
-/wikatakana 16#30f0
-/wikorean 16#315f
-/wmonospace 16#ff57
-/wohiragana 16#3092
-/wokatakana 16#30f2
-/wokatakanahalfwidth 16#ff66
-/won 16#20a9
-/wonmonospace 16#ffe6
-/wowaenthai 16#0e27
-/wparen 16#24b2
-/wring 16#1e98
-/wsuperior 16#02b7
-/wturned 16#028d
-/wynn 16#01bf
-/x 16#0078
-/xabovecmb 16#033d
-/xbopomofo 16#3112
-/xcircle 16#24e7
-/xdieresis 16#1e8d
-/xdotaccent 16#1e8b
-/xeharmenian 16#056d
-/xi 16#03be
-/xmonospace 16#ff58
-/xparen 16#24b3
-/xsuperior 16#02e3
-/y 16#0079
-/yaadosquare 16#334e
-/yabengali 16#09af
-/yacute 16#00fd
-/yadeva 16#092f
-/yaekorean 16#3152
-/yagujarati 16#0aaf
-/yagurmukhi 16#0a2f
-/yahiragana 16#3084
-/yakatakana 16#30e4
-/yakatakanahalfwidth 16#ff94
-/yakorean 16#3151
-/yamakkanthai 16#0e4e
-/yasmallhiragana 16#3083
-/yasmallkatakana 16#30e3
-/yasmallkatakanahalfwidth 16#ff6c
-/yatcyrillic 16#0463
-/ycircle 16#24e8
-/ycircumflex 16#0177
-/ydieresis 16#00ff
-/ydotaccent 16#1e8f
-/ydotbelow 16#1ef5
-/yeharabic 16#064a
-/yehbarreearabic 16#06d2
-/yehbarreefinalarabic 16#fbaf
-/yehfinalarabic 16#fef2
-/yehhamzaabovearabic 16#0626
-/yehhamzaabovefinalarabic 16#fe8a
-/yehhamzaaboveinitialarabic 16#fe8b
-/yehhamzaabovemedialarabic 16#fe8c
-/yehinitialarabic 16#fef3
-/yehmedialarabic 16#fef4
-/yehmeeminitialarabic 16#fcdd
-/yehmeemisolatedarabic 16#fc58
-/yehnoonfinalarabic 16#fc94
-/yehthreedotsbelowarabic 16#06d1
-/yekorean 16#3156
-/yen 16#00a5
-/yenmonospace 16#ffe5
-/yeokorean 16#3155
-/yeorinhieuhkorean 16#3186
-/yerahbenyomohebrew 16#05aa
-/yerahbenyomolefthebrew 16#05aa
-/yericyrillic 16#044b
-/yerudieresiscyrillic 16#04f9
-/yesieungkorean 16#3181
-/yesieungpansioskorean 16#3183
-/yesieungsioskorean 16#3182
-/yetivhebrew 16#059a
-/ygrave 16#1ef3
-/yhook 16#01b4
-/yhookabove 16#1ef7
-/yiarmenian 16#0575
-/yicyrillic 16#0457
-/yikorean 16#3162
-/yinyang 16#262f
-/yiwnarmenian 16#0582
-/ymonospace 16#ff59
-/yod 16#05d9
-/yoddagesh 16#fb39
-/yoddageshhebrew 16#fb39
-/yodhebrew 16#05d9
-/yodyodhebrew 16#05f2
-/yodyodpatahhebrew 16#fb1f
-/yohiragana 16#3088
-/yoikorean 16#3189
-/yokatakana 16#30e8
-/yokatakanahalfwidth 16#ff96
-/yokorean 16#315b
-/yosmallhiragana 16#3087
-/yosmallkatakana 16#30e7
-/yosmallkatakanahalfwidth 16#ff6e
-/yotgreek 16#03f3
-/yoyaekorean 16#3188
-/yoyakorean 16#3187
-/yoyakthai 16#0e22
-/yoyingthai 16#0e0d
-/yparen 16#24b4
-/ypogegrammeni 16#037a
-/ypogegrammenigreekcmb 16#0345
-/yr 16#01a6
-/yring 16#1e99
-/ysuperior 16#02b8
-/ytilde 16#1ef9
-/yturned 16#028e
-/yuhiragana 16#3086
-/yuikorean 16#318c
-/yukatakana 16#30e6
-/yukatakanahalfwidth 16#ff95
-/yukorean 16#3160
-/yusbigcyrillic 16#046b
-/yusbigiotifiedcyrillic 16#046d
-/yuslittlecyrillic 16#0467
-/yuslittleiotifiedcyrillic 16#0469
-/yusmallhiragana 16#3085
-/yusmallkatakana 16#30e5
-/yusmallkatakanahalfwidth 16#ff6d
-/yuyekorean 16#318b
-/yuyeokorean 16#318a
-/yyabengali 16#09df
-/yyadeva 16#095f
-/z 16#007a
-/zaarmenian 16#0566
-/zacute 16#017a
-/zadeva 16#095b
-/zagurmukhi 16#0a5b
-/zaharabic 16#0638
-/zahfinalarabic 16#fec6
-/zahinitialarabic 16#fec7
-/zahiragana 16#3056
-/zahmedialarabic 16#fec8
-/zainarabic 16#0632
-/zainfinalarabic 16#feb0
-/zakatakana 16#30b6
-/zaqefgadolhebrew 16#0595
-/zaqefqatanhebrew 16#0594
-/zarqahebrew 16#0598
-/zayin 16#05d6
-/zayindagesh 16#fb36
-/zayindageshhebrew 16#fb36
-/zayinhebrew 16#05d6
-/zbopomofo 16#3117
-/zcaron 16#017e
-/zcircle 16#24e9
-/zcircumflex 16#1e91
-/zcurl 16#0291
-/zdot 16#017c
-/zdotaccent 16#017c
-/zdotbelow 16#1e93
-/zecyrillic 16#0437
-/zedescendercyrillic 16#0499
-/zedieresiscyrillic 16#04df
-/zehiragana 16#305c
-/zekatakana 16#30bc
-/zero 16#0030
-/zeroarabic 16#0660
-/zerobengali 16#09e6
-/zerodeva 16#0966
-/zerogujarati 16#0ae6
-/zerogurmukhi 16#0a66
-/zerohackarabic 16#0660
-/zeroinferior 16#2080
-/zeromonospace 16#ff10
-/zerooldstyle 16#f730
-/zeropersian 16#06f0
-/zerosuperior 16#2070
-/zerothai 16#0e50
-/zerowidthjoiner 16#feff
-/zerowidthnonjoiner 16#200c
-/zerowidthspace 16#200b
-/zeta 16#03b6
-/zhbopomofo 16#3113
-/zhearmenian 16#056a
-/zhebrevecyrillic 16#04c2
-/zhecyrillic 16#0436
-/zhedescendercyrillic 16#0497
-/zhedieresiscyrillic 16#04dd
-/zihiragana 16#3058
-/zikatakana 16#30b8
-/zinorhebrew 16#05ae
-/zlinebelow 16#1e95
-/zmonospace 16#ff5a
-/zohiragana 16#305e
-/zokatakana 16#30be
-/zparen 16#24b5
-/zretroflexhook 16#0290
-/zstroke 16#01b6
-/zuhiragana 16#305a
-/zukatakana 16#30ba
-.dicttomark readonly def
-/currentglobal where
-{pop currentglobal{setglobal}true setglobal}
-{{}}
-ifelse
-/MacRomanEncoding .findencoding
-/MacGlyphEncoding
-/.notdef/.null/CR
-4 index 32 95 getinterval aload pop
-99 index 128 45 getinterval aload pop
-/notequal/AE
-/Oslash/infinity/plusminus/lessequal/greaterequal
-/yen/mu1/partialdiff/summation/product
-/pi/integral/ordfeminine/ordmasculine/Ohm
-/ae/oslash/questiondown/exclamdown/logicalnot
-/radical/florin/approxequal/increment/guillemotleft
-/guillemotright/ellipsis/nbspace
-174 index 203 12 getinterval aload pop
-/lozenge
-187 index 216 24 getinterval aload pop
-/applelogo
-212 index 241 7 getinterval aload pop
-/overscore
-220 index 249 7 getinterval aload pop
-/Lslash/lslash/Scaron/scaron
-/Zcaron/zcaron/brokenbar/Eth/eth
-/Yacute/yacute/Thorn/thorn/minus
-/multiply/onesuperior/twosuperior/threesuperior/onehalf
-/onequarter/threequarters/franc/Gbreve/gbreve
-/Idotaccent/Scedilla/scedilla/Cacute/cacute
-/Ccaron/ccaron/dmacron
-260 -1 roll pop
-258 packedarray
-7 1 index .registerencoding
-.defineencoding
-exec
-
-%%BeginResource: file (PDF object obj_5)
-5 0 obj
-<<
-/Metadata 4 0 R
- >>endobj
-%%EndResource
-%%BeginResource: file (PDF Extended Graphics State obj_7)
-7 0 obj
-<</Type/ExtGState
-/SA true>>endobj
-%%EndResource
-%%BeginResource: file (PDF Color Space obj_9)
-9 0 obj
-[/Separation
-/PANTONE#20307#20C
-/DeviceCMYK
-8 0 R]endobj
-%%EndResource
-%%BeginResource: file (PDF object obj_4)
-4 0 obj
-<</Filter[/ASCII85Decode
-/LZWDecode]
-/Subtype/XML
-/Type/Metadata/Length 37294>>stream
-J.DnJK7S]qCGMF`"sYRedV^+^Sa3]YLd5Z06qZK;BY^'U+dl%/P!S<mALX4-`BtO,emf\f"@M_K
-.!TtW*Y#"LCa?k?SJr$Y3Qsn.A2hC2<&)npk[>:HV\>hVd+8jPdNO2D_).f-+e.QP!N<M?/MW1g
-,7sq.Cb?Qa#.EKHYWstO%#*^Ld(jHL\;m_%Toe%qLW!W>;d;TWjCC%VMF9cg!8Bi7A'E=66."h7
-*=KjLI3?&f1Da/Piphif?$j6nL-j\B[,uWm;pPO!(loF>`8U7>!RVJ$F"s2E2,d)Zg`XiON$]cp
-eEIPWE&^"l%5OoQcY,.70m+P#AJZ3.k0\J4_Jn'6L(tc]D\Ls$<=%ZLBqN2eZlse;o-'/ff(QfG
-MrrQL0C#:O5/@;<SVKNM:,%]\.#A?@U%7[iL7rA[(9jO-nA,<k6N at r.6%E>a4g:_51;f4/1C-1k
-Rm8<[iulc+%l(FQ&&^1B9,!&b9Tp41Z$^%%a0GPp%S%#aFUH"GU;SMjj*92u.k`kI,`RFal8alW
-PVB?n!gmd8"TiEILW`&PckOJ,Up1h26^5,79!/T*-E"a,0JLREo$nqfniU&#`BfGc(Jc`]#cH%l
-I1lD!e'P$M%\m^U2[gp%fK%;5bG$,=K;DKP_G5p>1qF/@$98T+.&]7g""GKD3:<a+0oW75 at 9?#q
-g\Mp#keQC=6d)#M3*AU3R:f\;jc7:40BK8l%&6A=cA05lE#`&)W-*&a=!b7k\51Yf*=U+&gC+>(
-:nT"gpJ'gsN`Wo"GMX,&QNiBn4?=:6,>_\b#U0PK.?.f`PUR%##_X=Zi[BC-j$HKb+pHr8U*,J*
-W/`\E_]XsZO$aC`4,G.(RQ?;8LhJ2r at pkfLKjf]\U#T786)%l*0Le/1+l4IfA6L<T+U-h2+<h8(
-0\.r_6;Z;WLuP:gLlB/p`#smtR*I+9\CdjjN8gdp+UmC5NZe`RaHRj.j$)leN8e6$+H>Aeq82B"
-@!3`(@W)H4n\PS"..CZAp)o+lIi'MiS!]p"#c#3'0aQgWO<b>;^s1AO?"[2"Ln[.f4,dWm"rI_0
-BS%es@]6(I$:B;Ee;W0XS(Dp,-^3-W?>l7ppjS!bkj5"_+sMn(aQt&0glRCBGhR>f.:PV^ag0sE
-%\ni:(mfBRCk%88,B?+AO,4,d5_^D at HoGHO6T[/Rb\d,>(*`N\_u"IkbVOu-Oq>KdD[DJIrIl%3
-g;4eN$uRf,5B,Bk=P.86b\SDT@$24U89bIb=agKMA._1"@s9(qO0Z!C*Wiu(%3[t[4qO_7!^LE*
-U#7L,ODkcJOEh8nfHQ'cU)noJ<"39S-&7Sf%)RN^$,KRhL>^VlJpAgT!K\dbTTBli+>=;!,UA&9
-h at j,GBFNj51bj3)*($#H$Gk(:"^mW-K91?_JA$BF&7Q<iTJ-a>?n6n<fGHrb0b4;H/-`n1'uJ<Q
-%0RA'LHsu=LtHm.iCFf?5hm4XTOeK3^`0kh at LC",1C<"S1^/uX&d(`'$"9VJ#EYGoK6SmP at B:B$
-0WZ3.kZJ at gC%-lm7M:96AIZH)-&/)N'#M1@#0/8SLD8%&JZs;,muatC<bgJ1H['`fmDfDZ$5rsr
-N!Ni+.>6:/&Y8Dd%07e9LPY()6d+F;+Wrk"@%%]0O>I;Q3$Er_X:h4c9FjE;+rN8X(daTi%j>17
-Kog0c+O!r]@?`&@:sUE(W,$=V`]8^Fe/!Wi7jA&91/EF4%KhYu%e1r,4qM*/_LQrmXACr<^o at i1
-J5Qi-O=Z*)X;h<R=9u^^<<F/((5$<lOo`?Y3^@-p>3)KDd\9`6a^$GDPdHb)ia#4!I4u`K.gU^1
-,mA7j)ZcmOWr^!sL+qBuJZraD at 6?E/:r40GTP^0kfK?$miX3T-0+9C"41I1E4Q*R,#`i(-KhuG&
-6+BAl!G9\^.nODk(i]b at KJeDoX:uZ<<sdi=49E$qf#!qJ%)CL4L*2Wg!E_(R+M9]<0Sg00!([J@
-Qnel]E"dh54V&^3/-Kq_%>3"q%7%!SYqUhOWXs7ViTN!$OBrA`-+sZE:_eb`_ at lu9@L]"n+G0*%
-%RM:`#p?<-#!4&$6Ss5uTpf:p@,H)-KO"n7cnRL&C)Xp:ZN];50SaUd*.k\3%AD]-"-D.TJQOf9
-X&'dhi*mTl%/Meh4=CDa_Y?JH:^Q)o-jNS)l3!\[$%]<(i%W:jJQOc;+cmkg5b8Ge5W8l*kTa0E
-g_.Gj10(#Y-j="A&:q&E%l-nr"#+*l"#*.J!SeTI+P%E_.!ESGe1:atACZ:I3IDt%2ZiL>*-,.9
-$t5MJ#%5Xo64d`6!Mh-q?tAanLe\0*ZoJlZ at rfK6AI5&h3JEQj$GqmN#lrU<LHO'+_gk;)@*kp+
-Hc?d&LbTDd5U(nQrY:$X0aSAD49dKY'EQ!f$Gkd["DpOG!LS0D2m>"?9`tn+]"/1KBIX/#iXt4f
-ljhER.;*%q*W^M%$3;Omm8m+"8f1Y9Tp.9e!8J"c:cSl.-oZj<aq92LG0Y<bTEQHGfl>A0"^t at M
-#@Q+%[(p/X!Os*O&=h9<*d\2:kU)!;Ql`5"<!tu+3O^\_%K]I&ha(?kb'c^N(fhCZ!LP29?.'G(
-6Y-_\c)&'rfF:,k<XHTU3s.a>'S2?d#/Q*M"@2Kin*[]H!8'C:0[q)ZTLT=I<&b"'W"]94)\54A
-4mRW5%)Z9g"^r3S9%_?#Jl"03!9>#9TW>R)E'\`]ZlOmoBG*X^>)6SI-\ZN6$c5/P$K3rZKlCW5
-6dRRr5h%=R0U`Ee5Y)<78=&(.<XqJFC(<NlY6.c%)hW)t#5OjZ"`6.7_k8No_&+YC5ZU1fE)#tT
-g$nA6Je3K`7LgSrCBFQu)oK`f%L\dT9J+i\GJ7GjJ_,JY?t9nf&7uBf0GT;7Sf301:^s*B,m>EO
-'#BB>%7*Z+#>P^=!LQ:[dL;Iqd-\BMQYZk6g`qKFDlc8R:_$];1L(K^F>#bjf/61"KJ<$.X$R=k
-*XG<l%fgVV at +Yhh7\4#Y%\V#R5fsEV`XO&F#"sIN:+umP:('>F%I;:K5fsF!kR.X4#p>09!9=L&
-jp'c!#3kKd at +5K5"JnAZh&p59+P$cJU('B[\q%'o+R"i9ndN=4#p>ZG5_KD5J-HI-%kCPc$Vn(P
-9*t*`ZmW`uNqU'mC^L5sfq at 1+6hh)*Wf2IE#_8i[^n;#WAdZ?D$tr]6TV)N4g8R`:$,E,>/c<]J
-DMI*3%Bnn(i1(/TnD.Y@%)D?:i*[%F`!W01Hm&%g+C\<#m\f0j%Z*#Ni)U0"U:4i/c_,"^Jjoq'
-OTFBN%k<5hN#iK`\.2o,%RAMJ+Gp>7fEa`X"cf;c5]5VAZAcTY#s`5/Cf7r!=E-U1$=Ke>^i'=*
-TFN6S%)CL$5_obTg]e0d$-d>l!2KmnbRTM^dbpi(JF(HSQj)VQ#6<'-!Y>]HbR&%jm6KM4mMt]2
-`XISS#cij07aMYGl3`<`"lRl>J=9a$C(,'OKe at NT!/LipZ4--1%=jfSYb;DCUC*/5,&9^Y?rk2G
-W"-V/9]3o"5iN./ecnD'"q6_)+P7+#_?j&W]]\^;i,\:ZmLMST%7'KYLnps,Sd`cC#YO.`;&$\$
-n-5P*!?g5,8GGloaN%\]#!eop at -IS4g._ROf*<Q//f=Z)i!,j-%n!@E+R0I[EgM<a#`SL+ at -.g`
-":eh`%o!2V+CYZXQjE4a#9`7]!3@>oQKaAk%#!+ii0>'CPbMPl$,C6PaX%&;5R at FJ$/j)50+%l%
-=:6bNHm#/Yi,T/2#S',l$UhWbTVMemBRN^7%`#.M+KWH\`X$LA%3X./n2q22W!sl<#b^K6a#Yh<
-bRP-jFH2LmTTF+cn-/mZ%j:4b__.C.E";s$#q*UgJ6iT at Ng6W61uP5:j5("'$k/ercE>I`^i0KC
-er%Xe#!g6ci,ZVkbR.b!C=C%`!7V>?4USO[$@o03i5DQa_NQ*O#!c3qi5G\Hj9X]-$"0)Pi3+)M
-Adj8Z%\T%LJB/5Yj9=In$"3647NfAL#3!@j%KOu_?s^2N&?u4e#_;@D^o at mG^m0g^*FNIgTU6)r
-1413`%mXq?Y at 7t55RLoP&LfOG!,)hgj:%\p#"(!J+RY):ZjT-4G6#k7+BA^]63aT)%cqjB^oj!]
-aM&d3%D^[+^uc"iKN`oQ#/Hl at i,T<8Qjc^?$/giWcI`Q`A.C!`#XHN>^n(bgM@<D8$uF)@@$V-b
-lNBKD=Fc]j#CHk2E!d_p%\W:uc]:rR+X=B:;Dft&Pp]I0/Q4MVHo3VQi85C0S-^<H"X(cA+Ku3X
-i!A7\'$c;+K9Qk]dgk;H`h8d at K@C@'mL15D$@qUn5aDjl"?-uTa^EUk:<3_AlRkHD%j8q#!8Ict
-8e,6D%j59G+J9/$OQunF"lR`;?tAc"kuO$V%"OiX+Nb2pOpYT/%fkAo!2'aUE"#"Ko]&CH1?&fe
-Ar2'#k$Z[JC;:)t`!Sct$P)7^!1+0<E!lYt%O]+#5b\[F5eS<4$&:>CJD:FGnQ)=8"^p6ui2%<A
-W"&g+$E\%Od,Jf*Pg(=P*C06).WH:*mL<Q^0`[RJ^lA]Y='?q/YJBK/c&<$.0^ZtN5 at EIU-\=o:
-?k/j$#9[UeT\'J,UkjQb%.[6b!-(eb?k5M[-5AH6i8P/qoF,,<"tI4k^mkp8JdB0Y#\A?U-8:=A
-F9t4>khq%!XKDk%"AFP<__.)Z5aW$HYRR]!Ij!O35c65"j?mhk%Ud@)2:)R.a:+&k#qVAK'T.k>
-?4T;aV_t+O^u,XFW!4AN$t*c!5k<g2d/Dm'%HkS:d;Zr&mKc(F"p!0^oF;/Jp^,r]9d%Opa!M4F
-Y0*EkgQq+/G3Z$aUrI#T#scE5J?fB0n:#nfLqqHe+GL&-aN8L`#U#cGnhA$7m486H%Ur0;/&Va.
-:n1p`K[m47+I3EYR9a4'$D=DO at +GgK@,to$#/fR25Z[,]TFG;_#%66u1.]<#U3iPb#;k'>J6i]O
-W-ZSsA[*5fi/6INoTH4l%A:!:^mko8lisff?;[6&1dHDT.tV5`cG5SO5[Fnmm,((,$+C.!i91B<
-lV,LG$n^.aG4+6S;hG=mK0ZYLe/mT,Yj\6)6"#cYZ+#'h4Ps7DE1iX/+HHP2_KA1)%g6Rke6W at K
-4:-OY%Tg8o9lLU#bQa`.1I0P$;[XmHf[gs'KG`<oXm]bm at mg<lNDMIWda^[7LP>M5L1");\8HW@
-*Xk=!%8H['5jAO2C^B/pK"-O@/oCrS">2S"%B%*ri15ndon:ujO-oi&@.%$RlG$G0L0//EfO\'m
-Fbbl$L\T>XGhYQB9&TMDPCW4[XpP?q_@;ktgRqRT!,`/VnW1322/5$cTTWlKJW#>>MtQ]O\ASRG
-ac+#9N`GP/flN/F5RGYD#8lck3(]?On!J>r"o4RIq4;oc=dMqH"lRtRO"HhpJ!%8`Os'/uH+`Ef
-ljdX-13kd>H%(S$8XP%!R+[Ui8&E"FW"#UqDN3nL+RPVBf:&G-PrNi?@%i at dC^1io._ohP/=21g
-"dg2ER&r$8i6 at unqkBJ^O?,+k=M($S_i/i`UH/HkJCgHLXdi?=#b"bM3&c\]SVdF3HZs(AQsp>`
-qkD=?M_?X9)=@d`o9"=npt6mTAk>D%JY7uWP>2LZ)Hb`T?'tGOVE1EJROkbNSF)&63>i9g).TH;
-Bnt1d$$dp&q(*%Y0o4JE7N.EspmXp&QjOu$4ojDu at ."4AV at P_>%Y1>bF#"63Stdc5%0]oE,B*ip
-B66n0:fVB=RL(^!A:b6;?,0t\^t9+(JdEV4#5H>j/C"GD<!]/P%H*<WLnG+u<eZ'op41Qui0Xhd
-kZm7Z#"QN?!+PcD)@Jgc%]gc^^u2Z:SdiK<$)#B+@'U4alj1DT#f)<,T^!!O-4,4%'nF:Ki5>hm
-kRPD^#f*.,LeJ"qS.39`#4eu/!7ZcHEX'=KP$7me=bQ12K:og"6lB?NHNg+3*!Y^kf-CMM?u"7e
-27k!dW^,4:-Y`jd#RR]XHD'g7:A+tfIL-DV:LMlcp.,Ktk9%26nq\Cq@$`+rW at uGW.uI%qnIc&u
-WI:Fm#[hXf at -&O?7O8&1%5o+7+Q"FjoORGN$8NY35a2`])@b%J7Gq^[.]Kpcf1)#FrZL13@%IXB
-j9V+31#QXL?ucH"WEiBj[SRJ%:>HlIU^&bUBu&:,#h002Jde<<%(@eEc;RB/EbGHH$\4TS at .4O(
-Qq,,7Hm#Q>JEPA=dT7GHe"&5B]ee.94pl+l#_:qGT[oFeb0GO!$m=o]+MnIB$;DY%#9_q8+Pm=<
-X:=8&_gmRV^n,p2I2h,&#U$@4Cjl[5Z@^*u%I3j#/n%qc at LD&P.q$R15_93uJe(-6!C25C5b5Vk
-7L<p"#-Vk#Xn2udEuZ<`VoF)kn/$0hd_+b[mjG6Yl^"!1bDgei%nTq/5bGj-Wjf?%$PC4R@*1<*
-9*V%q#u9paH*l<?^;p<EO+?g4dI7L9ljjO/6i7R:=YL78#N%ddM?%F^[dF<,Amr3pfmp3"4lj9D
-o#Z=uiPYnO!/&AFf?8\OEPhDoi8[3H2<04,j4XFNmb-ZLalL/1f,abth>uP@#su'^JcZK?@#0[W
-Ol?'X$(`Gd!*57jO[=Se#,%1b^uD3kKEiIE%cESF^op'Zq!ETL#`d"SJ?fH2AJ's*CTHGY*[g:s
-DnFr[\".=kiY0T;l7Hgi$)/;dbp:%hNonW[_r.6nZ$Ho\hPPhq"osMe5fS_4_dUjD$k30^i1Nde
-i9Vu:%=mFESRjUmYCm)R2PBCH4IQa"8SCB=%"RUME^?[tn-/l)#1!Pa?uQE$"`C!hO)>(1J:cM>
-E"<n:"p!Ke!10^1T(2lg$'_\d]T*@"YQci?%KL=%+J''WljQp,<.L\OT[ni?cRG_*#%4CP+J0\G
-*OnA[U#Phi#-k^Lnj>2B`WItEXDVJcPRZd'31*0[+HFYkZRH`UD_)XGA9+qCE+:_naMi2)TW1^0
-PKi0Pd7Dhg*0a!K+s=OM6n/jDL1.n$RWLIt8`laeLkJ>^*(^@_$(Q$=,8a-cj-`T63>[niVfAs#
-.2EqgL>u3 at A>FDtPKJY*af&6`)AC3sidmo(7j]2d7_uXbc7::Oaet<1/>@,?OGY<ol"569.3=B,
-K!CEcE]N:R\aml#j[V4db!b54f#njm(ec::Lu>:6(`X"gU*1N>![O"b7P]hAP^"Sr`^QU^5c.^2
-)G]ARE>Mq?,#X;1_m&'*FX\"6K/:luC/Q#m%\j+TX("OR'a\EWBb4rrerIbI&g>2h80s(e(t9FZ
-,KQH-$A6^p(Q+qhZl07f^sY?!ifKHC"_5X+4Ga-\iZ!]j`&eLJ0_ at XC7+!PW&]E\Eg+s2a'CH]k
- at aODO$R.ju3X?nEkTgM0E1AG8_Dp%+L#[u04:G^:niMjTODlNQD4%7_%g$u^1Ch<9mMH-qE:18q
- at t:R8%&+#D2[\NJlmdo:W+$p,!\f]t%HDDF2SS0sKHS.JGk=$#iNUlO"mQr%+UlL)@N(590\.5$
-$MoK<#_P[l\W0;GW#(1TB^?Rr0%,J4Y(Ik9"HDB-eeejJ]-oO26R\`ILdH^7MPB(>Sgt0LW8&q^
-+s>ek$3J"P(Q9Odn/I6.LpSF]iuhYILuP(<3sic[EZi>2LfQ%Q/XY0Q>X<V)2%"rF`\T!ZE3(2m
-UCafRM.9Z?0T'AUL,TK9\?7*81I[+p$:1nP-jGRM=+Ub[\?6YY_a(R`#m#SI)5i'?k3``=(re>3
-i[EFrN'a2[.h"_JW&=rL#i[EGJoJ+B6_Sbk,g]tuL,+Wp=CV0`ib4]?$3I!PTF at S,juSP*+L!s6
-K=LOj#,<Sa*0!9]TXg)X2C:/4 at gMEJN`ddp>7*rXgLO$R#i6^1BS&K-M]l>Q+c.D!DE!:0-u/Y:
-iIL2?L8&A:1L^CsnhQ1Kd*=\5/E8k>El0IHItj`6ln\s#0\@YSiP<esNkrf622,P%Uac\6!0AH:
-!aqlQNWHY[.?,QOiZ!eCE5ML.MBsM_MD[q83=[7+dQ at r5E82cJ6,sBr$R9'6+UR,+PsU5!J>bSR
-Q8nFnqP&N$(QH/ekTl'Q_!&<7j3ZD(#iWe5.h1KGdNp;\W-uQcE=(RI,_LWG%GdCj%A>11"u,BT
-Jd=mW%:hJPnFRA\6]_R^0K4`JS5f[,1(:ui(P]/M*eH(B#,.P,,lk)<Js^3XJD;%F5aW!I&9CnR
-"<*#f`^<*I71.<H?%]B")+&RV8)V`N">I4oK-3\p+j_N!_YOn'a>!oBckuu%Or2)]@h!t0-+*0D
-)5BT7%hYZp`n8r`UKC/!@9%EdOK?NT\b?F3-oqH,iY_iC2@^&g-%u$W&)fcG#p at U@#!gZPJd?Z2
-5cc2aTUm(>]3GeR#!Rf]EZ'Lc6k'1T,D?\D%RNEo#lqUaK!<H?QC'N<6"DbQYgs[Y?n2\[Lc6Dp
-<YY_(=:B`@3<u=f*5SR,LESJn!q;E`_8%f5!AlS:d$PlLk\pjee:e'(p_CWTFpoOQ/;"M`'Ea/9
-%:M(D!jIOn_mJH%!PCPu5[o_*5\cO[TG`HFEh;8MA.AW:4HtAV)$:aG%Y5TRSeis>6caESiOC.g
-@&OM:K[:(Bcn^8Wn/-bE3I.:A1BrAq)M<lf==Rp0"e`pU6C;dPi64"[!+$Lp(ebFtbSc(DmL:?g
-8Hp?b*/%Ilb<q(o1Z;RVLJhr)6RYP;6/4 at QJDVf.&8Fr%(aF_Y*tlG at 9Ep'4/#j/N%DoE%%7+Ye
-K[@^XK4&^,aTOU*Y]BYo\5WoMg`k6eg_tdK;@\68)?k*P9rD,o$49<I"!EO9aXD'4/5/,0;!fA+
-Qt24sbW at ic<Z&_C at g4EA/-a0&$plp/$DGs)+!@!j_6 at PZa4qqpJCoN@\IA`$$p0/^ll?D;a9i4&
-.YT##_?6`T#2t4sL="'UcqsuW@?tO0+BB5/J8Pl`=??[?b12-SFCbIU-No<9'\hP^$@o2p"JpJX
-_E]V8iQ*PQk)QN1GW63Vg"@@3UL<5W<t>[M9a3u-$j0H^Zf/,)LEP:k!Lc]m at 8&V5 at +f>55\*iF
-0J\<#llH4CJd*_F2hpgg+<)/+O)Z3F']=u[_53V)iP72eTVN#!cqb$7c=b9RPRGCMGQn2Wb(F[(
-)?UO_%KQhZ"CU4$J]LH*!FRX9TPTd&PYhnrE&7_PJtjZs<Y%J3"p[u!%'QHsA\cqF+5ibr(.^q+
-+db*i:okU at 4&'bXHms\eYRA<]<t-;)+Zk4k)A5Rr%=u?_L(K#s!n2#o5ucS&0QJ&JBQF[uBIX/C
-V1o).H9U;$2hd?,D$*U3%�K/e.hm9gb95`?V_HLqE&A1Yc/mLXrj;@S1G,DU5o)Zt%S
-%RHm0KWpOJ!n>$qiQdt at LLi6YMTZM2V-KX3?a9^JGFp$D.iSIt)T,SK"p#]"KFk""K0WHEEjQ_h
-+IZ:4BJ^2AfK+\ISd^7>?4QQl2\WulO?oiL"r8ID"%X+IJl"`BTsQ?R=J#b0AHFF1Hm42^`Z<m.
-;HTXB.H?dld6ari%A>%.KQ(9s_oOM at _2'T*0]j7hTMu,1:20r_X;6Du/]k>LR"I)G&?b5>+gJmC
-`usl"_QZ!)"UH$"5fsq\/#['$1Id%jo21*TJ>U._>DH%[SJ4=K"pQ&-S,i1!Bo#oS&RNZ`3N<r!
-U1tt42)nV:<h^_(1M9550nUUu)oGd'HD-)<L(K:`K;C'$.r6dun<]@@LdqfG+biFY[&ClmGmOAE
-ie5[WahsK9eH")UKog+j_f[2k5iaDkn7??eaD2'Tco<+daCt]p6NuUo1ktc2*WeT:Oo`'=Kg<p!
-6X27.!6d;cd.,*Xamflb0IK=tlk9$u7&%f5,_l*k7mbel"sqCp3dOO56WPE?g9TH7]pBU3:cJo7
-j?%u:-ioDIJp9;-Es)S$mtbp$JoDY2O>hbN3.l59K<RKOfj96>-j+u=,KaNu&@_h02l$-c!\<+;
-fH>g6-*ONj!N7RmGVt)',S.CHJdGS43#ePi#6J+Z!f/6AaMXXk_ZFjY.9mDccmaP`3!(c^Jri$F
-(a9&q1]o-bK+k.-QoY:n1p9aXK6etu&1\,kGq=1c\,[h9]G(\a3Lq!7QsoT=QlA;h14m:[!NKr<
-aHZjp4N"I_!QZdC\l42oNZ-P""1h-X0H,r71:R/[J[dM03%4nWmX_AU]!sX!^s7Q>8qOS(,!+e9
-YVn7e3j=\cO!$6\;nN06)4;<rJiG!,:cc>s-&d?uUTcNV3&Ukp2$1Q;-]/"YBcn(f1oSbYT;aB4
-^bc/7/H\6rYt-_\q9"[.qkNqi4[AIf;(rs4<e7KY!a0"8F:BUR. at 00DK5`gQ\1*'7.g&TfJh\bX
-BIX+8RM)(7!l-Rl-olj73J(ogK+KF:J0Y6<*5jnU!sfg@!trV1BLKWoJWLcP3&@7a1kS%APK4r#
-$PJ%'XZ>;eK-2B at 5WaR]DM*5*%>ZMG5UiYY,QZ+?K$Z3Vcm>.M)Sb;$!ubp*J1H7[14tB6St([h
-TK<[o,m.O6_rr<H(a+GZ,aa+SK?-$(J0BQ<0n[7]K!YhBJ0Mn*S#csM0C_l(?n)l;1o=ZbP.2[#
-3%0F+2M3t5!h<2 at ckumV+-=jjJU/OK0I3H]."fZiK"C;6coV:o)$;!;K1Q$'0JWZl1pgpN!k9uf
-OK3uC3Nd<=!Iu>MHrbh1.4c;b%#?&-THXGN0W+n#!mr?HBIJgi)P]88!b>pG9)=MY//ocK"$pc+
-=UG3le,j(a556:R at jM4r14qh2,e4(K(`GE549L*l)/(K$5UIf01kKs,"#qucGUp2NiY_e"K5h<P
-)iK9iD$!NgO1U=&:aq%F%"WpdK:"Yp>9/TI%"b7<!gk]nYUG)/+M?np`/l8TO>aUn.Y;t)J\#-=
-MTg]L-3D9iTm/8DJ0kB8nkN:+!lF1&OQNE*+p5%e+:ootGT+h_3Wj(,!g?i@<>,J`Il at WVb)eA<
--p!!20nZD`'2TMI&2pB.%#jBgK,>DVHjVXo++_3EK4l-sYUDZE4T_-OK<_;*+^]k++IX,rTr9/f
-3$j/!)1i\]T)^Bo3'2a@,Q\tX"'_dVO?*K$gc:l5K2=TJa>F'=21f3aQ7t'b(b5]=3/`kIK")^L
-!G-jb- at o8Y!_GTY3lm=[dE`^Uc,"H8\24SE+th[?!K]#aXLLIX,m/rJY"1="cl8II2G^=9"+qZs
->OT2V(kO=`!Efg4UHjD:+k:]HS\QTRNA-P^r5\qZO176p#i^KP*!1pN[7P*6=kWt^4On\HK1nL"
-pcJSU1]q\?Ji"-n..DkZg&aea9W0BB:tpPO.&=/<*lpDDJ1M!T]n(tp0ZZ3T)L[`j711iSV%e6,
-X\o7H%M;8J=4n;9W$$^t[":=+UM04cEF:D8GCgY\K+(+&]2/NbL]Us8<sU+'P0pme^da/+!I,e,
-d,Y8<2Sd*d0^piM\Y,,\3]$ndJ]K1I1)b`V]Rdo);o7Y3C08`;<`6dYTI;+<\1j5"Y)4&D[s/bl
-3&(NV,(^@MO1?AVE'$0dG_/TEK+K=1MO?Q#2M&(g$/d/<8/i(JD,0.:Of0T-Ql+Kn+XF!0"'F;7
-CN+kVdAsbo(hB76oB$G?8V3lrK:)P>BJY:F3!0aVgY?GJkUQ_U1`1=%(XON:5WOc_3<ESCK*XL>
-Ci7&82Z]R/!K\K-a=<:iS.a9W:/jmgS32FC'p&tf]SJ<F+lS"a,SN=tNs#dk2/!#H/-F6B",RDp
-l0/5Q3WY2!JZpjATJ\WSJ4a2sK5?PhE%*)B<Zh5J/!)Xk>U*=S0`ttX(BG,/\^++J(TV42!mj%m
-L`1o=3eE#3!_f>?\/?_t.frtQ%$2f10Hs'l*iY%QJ\0eXL`%+=qL^Nk!lJdUTIc0,c4<dBMAS+I
-gPuQQ2V2+N"+fam81Oe(2$&[A"'?eLO;PKp`I]QJ!`aq at n2>j%,7G\?9)(,m6%f:F)6bM(SZqbf
-Lb++m-it+Ha=&tr,#*Z1`\UFJ"#=7#ELd3!2URmI+ilSMYSDb/4TgP5((_ajlDF`G.YGu<R0)5s
-&PlDW.0@=<?8sCaYTf8td0%`8J\?j at a;G[G,_9&C]$%Gn3&#p*Tn=I3K-ILMLa$<-pO\bYaD`)M
--mF7/+^a5CVRRRr==TKEXAO3t!sf_Z?p(fHN<63&PL^Zdb93U#Y(O5C"/E;Vai-&W68_,.K.nfc
-=?N/\1BPo_-X](>4nV5]%t\1OYA29OE%%s`!A.+nRk>$LL`.=Z2oLtFJri!L9^AGr,W1u]$udbM
-+Q*>G-n_GUO0U!tQn]Al,D'1^S,PL$c#Wp%8]V)HK!6GML`(e at 3!5X*Jlj:NO?0'DEJ(M_V%>'X
-3&<pH+pqG')YNZQ^`.oF1'5NXa2!C]Y_*\9/>`SY4,WoeMQORB3AKm(P&UW6W3It:P(UP%!mXrB
-BJ]h</@@8,K5;S2W<TpF)(b&2U[Taa^`)9Q3`<R.JflS7W;FP+G68>"-YPF>L44be2%V(.R0thQ
- at _Q.[]E*pE!E^ZM$*t>=-]dIL?^:N%M,dfR-A#Lk6C9N[-*?JK#*]re$_TE[DP)M7jLZ6Z:m`bq
-W at 3rb\J0]5ec6rt=K&tP#QrK2K6dFWeeC::)i>2dV&1HZ-o1nF0nG--="$'O7PiaP.KU7]K.&,M
-(a9k84!L%OK.%QTEa"*1aof4Z7J+o#C!.As2?Tr4JZpt`W&Xqd[K@'tJeN7.^aObbp_JB1BD+[o
-bDF3-ToMqq?%nTuf_a3M8dZa_!sm/^&1`lXp)efDcc@%-5U3XU<e<lYK8:@s$$?9Y+G5anVh'/[
-0]3$E,_H`$^/uA,Ec(o>/:s66!mp'I(cYPQ2hK-JK*X>Qr1TM)-Ncc8VBFq%a?9oU3J1!#-#b?j
-[Z#g&C+PD5Jo:Mh4;!FCO;"jf^aLT5TI`-3(#77.!ssbc(`WY)3B(mlK+Rq)0IDE_<eFL._)OH,
-dkZN:/HU%>a9Wa.TKIfLpH]o^K.nUT!'<VQ.YEYuYYZeO'ZVe3K;\XBVnW%Hr?SU6BFdp"SbO>f
-_BXY\aZ(CdK9D+&5T0^>1HFY<ZA9C&n14Tj)hFP`JnQq#cl>`!@0'K+!u!gcI/o?o27QiR!a]I@
-@/9r7,&MNq%+tH9m99V,2jDl=[hp!7XN3bR+cfVV/!(tW3#J]p(^%8r!f3Of).eF8Ee6P3K5QC^
-%A^NHen@#tW!\ojZ6^n!,T,/VZZm;t\2Jt1,g7ON!]8/R#fd"JquN&[-u^>9!':69.h1_i".1eE
-PO3rg+;"g,o3XrgN/%_Li<$GJ\UZT@^u9o5)`j?FK7oD^-orra,lsLsdN]m[cm1c7JBgp<"#(WD
-LcnMAFD%i^!MX"R>6cO&LP&t_'i?BZX,DTEZbFN?!\bnoVAfU_]Y];t:71ppYVZBZ)ZlrehmtU&
-OUd"Ji.?J'K=EW#a;ANm2<6ke!mIEW9RVOTj8pN7!t[L\Zr2Jpf,9r4Jup!]X87Z--5oE!!m=C_
-&H;g2/e,$&K4lMG"hB5Y2$4s`K7`#eYSr*Q,6KVEZ;;`sa>\\q$_=g;^3/5Da>Q(e3fSqU!h^uo
-Qn!Zn_juP)T;XRq!_k73.b3LGMeG-&c0c06a0%MV.9)?!60A?LMZT9=_n\?cGShp_ScUq&!^IoA
-TJbo*UB2Pa7>O"#?lY\U-7/^DW2LX5SE>H>iW5\h!_Jf$Xt>5B.]>$;O7>q]Og5$R,r#U-K!7?T
-GWK=e<Y'F5LfcV<_+=[;- at uotP.CaJPbX?Bpb?Hg"30d2J0]`F)C>b>K.KY<9)$s<3[9^]3d<-,
-3^82+a;l4#NPnCGakd:(<9?+dR7u^OO]9mg+d>R=PKBb\CD[_<_DB"2G'P'u"m!QTi.=NN*_$<S
-LoeO12p4\oo2u36DE<mgA6B4,O>%E3bU0'hOPVWPN<SJ'=hniE.#q"go>,0.5q.`;6LkF"TOTp?
-/&q+9W7;]CNln/l3LkhB1muER@]9d]5p2/C-)6%PY\tqPL.&AIi2qLEQ&RV@@,a:A)4ODIPAsR?
-=Xad(j`=Rjpb4.b$m\1HaNS`^R7N$Ad3S-g38#NG;LtpjFW-hX`C"ppb#ut+LEc;nd&8f`<X<r4
-R+RF$2[fp;!J0179IcK'@m%[t?;!*p9&fB7&D1h<S`iKUEQlX*jr"MY,(Zuf2qJPc"-TgG<`D4%
-"p6!0/I;KWiYr?%:mO2HJrjFb#Xct31(%KPXum'MT\_F5,EV&\_f4s"%R\VX6P)WT*)-o,Ys^]6
-L8$*;)2c9\"<30W8E)Rg,+,;G/q^s:+Uk-Uau"f]W1Z80Ttk7oL4ZA[#.akTZ6P>1B\5D,!Q_W)
-"li^Z)i;][bTmLh+J9S]!ZUDLNoA'T1(Jqh!ZV]ETZSeq"&O#"%jNK?15^]<nem2bONK&-K/gq"
-Ne=R93soG!VD*u2E24D,6]bb"N$D_f+U8'&i&6Rictk\g6Yg9PL;I>s0StBHcm1fMJ;tG)_2,HI
-%AJ)^0h!u?==K&Yd$,H)@DLeVMb;?4.u")/Q8$eI&BH/T!he:O"_#3D2$i5b(cdVo^qqq:!O/F>
-#"(33.>p,=@`+5D.'26b_-"]3$N^mV/.Wo6i\QE7\?7jt!a(O'#t&t,W(UTE`$@"Y\=b)X,9WL8
-#3$J9)?urjJu](7ba96.6,V2#8>@$U4$KDa+>AVh+S7D*iQ0.hNPe;i1kqbBUoOitd'>3X,/D\e
-%jGE at 3JM"nhBWV!8B`nE,8e]^NH(VS)$qL3Zm&E-aPn.p_T(!2D4=;PZp)*FgUQYjIafm.iY\O8
-Lf/c/+RKGjU7qoRBZl):j-]&O$K<c'4:G]7JfKSlnBrP at JY7!9%QRQH0TO"8Lc1.sZ7q84j)D at F
-%Dl53'oCtt?o;>,^mfNXU7KLdM1W26)30=\MCU^ieVpR9.H&u/%)ZIj.g=sHL`2;IMp+!dK,E0$
-%,ueH(Ult/^*JU=A*PBO+d.R/B>Tb)4URs/`&J2,YgtoA"#+=E"sIM-"+Z%F"))ff+PCl at 8.\J3
-&9%rL>UBP\KGFTUE!>4)+pP@\@13hi0P1 at r_?<pFMth5u_8ml+`0)0oO@]cZfIDLRl3sAR at LPN?
-,m9=^'14eW"p!.1"(T7f_ItV-LTDqXE9%Xa3-Ys!X>klpQk7TZ0/fK9OU$tS*J,,S$K^LJZf2<0
-_k8jr+lkGMYd+tm#Vc`rj;J4fi3,MpD[rcA1'XCb&t7`]"_AN2#=[-=_mi)@kq*nX+PI9UZA:sN
-kTIPeiXu<C0*nhrV$@QPI6kYN#_BK'"@-9,K4$YKiSZhM\?$_PYW)gF>T/:rh@[ZPFpL at O,R4=J
-&V?Z/%j>%*Ka)c;Jgb17!9$V(+HR1&?nr$]F<lWq-l)nAYmeIV=GG2R)c!V\#([cjKV2uu"#+0f
-iK,c!7'[4eO@:W"4=>k]3#"]47h1J7(^D2=%O(%I#pBF$/<tAj6<J.4JM]HD5dVIsW'Na99Hs\%
-nnQ']7h!2[1]rRKcpQ/J"^qfj+&MMB6>1Og!FQfN)F,#=@!)e7fI@*@KG$YFAe)Xb,mL2X*J,D8
- at tC^,",]\h_QZN;JP8*F=3_G1e9)6%3$<ooe/6%>G'9Pf,p+gKklPO.#(a9&K_!.J6/;8C_'gf9
-:o"MP)[$Ft6oG41AeIIm3=$eegk1]))M05jX8sjh5&bBT!NPBb'XT<Dk*\oZLenSa:beH4E*<Zh
-811JE-%td6564ktS2(d(1,*/L6]?^*@H)tF^oA:-YX<X9k$,oGbT7h(F>cE%2MD3#&;":I#sl?\
-L1&RB6!.:s^q_XX-6*ZOpf\%+Ubo!t734gXC^X1G,+i(O'8*eR$&CDSL4E;5"#+a&L'CZ#csFK(
-5]Ti_bWK"SiZ<\+:CeUB.tpH;'j);P[[1)NL6/&D6Ye(\5nkZ#TO85O3(Hgg^bH!hkSXH0g'HY"
-)$Y+H9>S/7,[m_.KYZde"04`s at 6?Wr:gb;r=@W_b"l'f*/doPCC^T.N.YgjA'S=Ul%!(dBUi;J8
-6'+)q_5JgcE2F[DE,5k)N;A=&OF.-iC(ET:kX=q")cj1>#,+n["(7Q/JR-[A6-(KKcuKi;GY/</
-->S7"a9ogiAj:iC2^\Ti)$<-=%cM"EKge<AK,AW9c.06E<pub>ArG']dmpla+f+arQ#@RD\Q2ER
-V=`o0ds?@7BcT:6Rq_QF3d`oA^lTL$I#t/>bWLLhbRK,R=UK_=1I!Qo(dkfGLZ(.I"]1'clI\]<
-!E>YaI;kU+O>dA56nM?Qn/F_K:HkJB46m0q('1p$%\_!GKOEdJK2=<-Y19s-JA_l4aCblH-m8^d
--?Sq]<sW6]3J7s>*<CsV%3[PjLH-%i2u%M$Ys9]@&F'j[3&(i8?29,'WYC*";(p/g4&S=U%9658
-$%U)D;s7[&2JfV%+\4Tu!5oS(G]9jZ`#@tBBG<h,7h0hF*/AL3A:bqKecB:u#$SSO6I8Yd:RE&R
-l`QBFOnB1B80J21Jdar$F%]qp159>t*CDZF%UhUL#@M&2_[oHG!5KG)_OM6*3(=D:W&fZ``!cb"
-$O/o5_O_m7$j4"0#r:!bKei376*PD>dN3K5E1deoW,Or1n`bYpb'5MbG6Z4UL]jC'$j10&.3Q`&
-dK$=9")(^B_([baH=O5_]Ba,R+>ecpdLcN+1_&Cd0SH;>)s*/t$@J_T,[eP"_\X)S at C-cVTUm.@
->*#_X8*5Jt`3NEM4Eq<b-XM-"%Ke+uQWEX"LS0A9K00JLT]@HlT\'jnS<j\/.R/Q9fFm2Z5n?F1
-)BW$U%Deu\$p^OaT]TECoFEJ7;#oegTV`'(L0uWc%)Cj.i0qp+aAP:/_1:SN8PY"*RL!;o#d%tJ
-BRgD>YR<^NFeFWOJ7o*oa:6<,^`^RfDUL_Dk$UHQ%"Mjq^t]3gjpML*#0.k,CZrrlP6AcG#:W1M
-?t*kYiWuK7$)#]Q^lA_Og'D*1%I"9.i9X'o at .HRC%`$'h-ENoVg(*&F%n/6M_!VOSl<fI^+sr$S
-N^CT*PQp'c#%4G9+S6)XS-^>#$#;:'`CRl(X:2ni#/G+O&,<r5kl\_7%n=VH^p"1(o\I<'$I4J$
-6KXYcYYW'3%'"m`A>m+*nl[R`%3Vk^J7tg1_?L!pL^Fh#J=[*uTF=I7%F0nA@&aMUZ3mat%Yb1@
-i+++PW!X&E%7&,I!7hI,_TU0O#(W-HT[jC#g'f7n$R>l;+Cb,GaHXTt$m90j8^[pg2"Q66SNts>
-!6X9?NXEpb$KCo[%&OAh9YnN)ZQhH%^l/dHkR#&UGlZ^:i2$aQi(ce>bK[[.^m<[3A.&BH9qYr&
-i,GroWWqD6$rJ>\+P$iaXpLbi7R5[&KSBs:WdAVG%KQ#D5itS`7LJ'i/#(Z*!6/(?c4,fnRc&u3
-9?:)nOT]C.%m]=d/)1Y#jpt+l%RA)Bi.q_JS-Ydn"t>)dV9CVYh?IAlI]O<N.t.re6k-q`%D]sf
--a(L_YR1C"$AWFMJBeN5QjnSqf3i2"^tRFkA-O/q%fi at 0i5CK1Y[Du^5+nDTT]cl;mKT_<$D<=b
-B$(H'aplRd;Iua#J at +@PU]uj%)K0?r_tFF&L^nrk$%S<J+PM4YJe'!b$o&:tc"mf]apuJ-#:222
--Ck*dbRSB:5,sViYLj';_@'6-%V[c1!8%]&kQZRE$K.HlX=kJ%%Ltbh$p^b++CG[ejtD=*$@o>e
-k^Jf4b%$5/%R=&%^hsHpPYFF.$.((.6`0MBSj&q[8RTsN+P$g+JdA$@$H\SBi5@"9X:-5i#XFIX
-:n at jSP$n at -%B(BTj%`_WJdt>a?0OTYP?JJL\IUr]#_7j=+N=jUkc'aJ!0>J6MVnqOZp(/"XWYXb
-+BD]f4:6].VhLjd+QN`h(de:<Z=K+++P[ALNXJ,3Q,(rY%-.T_-jq=b#lrrnD"n=\,.M-U%KNh+
-ES`fS$4J1fZc^>n5dUijkQjG2$UC;LM*)23dS(d`%=ji/TO8(`;FknU#%5IZ5`h4<dK[Lk#6=B,
-!,;lITFVU8Y!A'Q+HcqCE+r]rQ%6(FK_Q$DT.u9=63(=UTRmG]:^I-Olp/RUT\Oiad-INA"s@^j
-5iMt*T$Y8Z$*!VY^nq>:hRKeM>&]W5i7]Q/BFQ;W%a(/LW1j_$g'OFj>QEgj;eQV*_@>Wo#1)oK
-8ot=]g'97/No6Np!0.B$api&i5jCHjLb+ljILI?R#%5^_Vk-lGS. at ll@6hpnTSa&+V?R%O"^m^N
-^s!!]Gc3=p59O!HJC-P'l3W+/&)^bJ2<7)sA-PUp#',/$5f+p7l40J'%`h?r^s5Q(O:FP:$%Tr(
-d/"4pOJm\o$Qu#Ji.;,H:K"NlUnF:g1/K/;MJ(kq#(q"%!k8\-fW9\7%g_lZW,<*<DTdQj"sls:
-T]c['BFO-G$G`B?NUdQhBF-q7%(#R55bJGO2 at Y2Z1bmJa.Gt]o@&`(G%&@2:^gI at SQ4$*lM*Qk$
-+JoSqd&_cO#f+T++H?r)Zisjocf!pn5a&D:GRd!/#tCZb.pXoqI!REV9OO at tA\KTnb&R*/$:(hP
-+H$k)SdA7b%7&8K/g_j0?4ML at 3oK(:@'adk+S@")$NS4UJ8P]N^^;9k#:"t6'<b0hbjfAK:<7#n
-'MJeOYW[Nh#%3DVVd]uuW!r`oU*++W.]@s;WX?OX$Bi\i,O/qF)LC=P%Q(s,,s_Zai!E3+o?OWG
-i8b7Ga\L%(5GI`E+Q[7]i!/O_%:IhG!9ObZ-C4,3#,#<tm`)p3[LL%1#6:J-2OY&TZYd$P%PIP8
-^p4JKg'OWQ$QtB5!-/RBg]l5:%<`3c09V at a/e#pUA(BgP-<pgod(8/QA*Yl\+J22tjpE]n?=9jk
-^haFpN!NgS+lhk]T]UN:^KdG=W.9m;j:7%)n;^)@=J59pKD#_hRK[*a$37pI5\pX4Sdb[3#_;=I
-7DQQ$L^kQc$LuOS85>AN!-XF[%;!IX!6u)td,cQiXFQ6=EuG95Aj9[n%`"BMBGBS/[-i`F%1DG1
-_!DIpaLCZ-%S7!6i0P<J'^gL/%mZipWLaDMIu+8:8RTP'5iUiK<6]4":hP5 at Y9XN*+U/\6O&XsA
-FuN_0<3[m>$6r#Q[(m!IF9jG!$NR4Yi/S(88h!$l,T-$@KV"r(_Nun7$Obr"N0rXUW!4OLijRT`
-5bJKMk%%D)-D6n.J;a\_D[A[f$t*TPnX3(87L3D[o"]9RL,]KimX'Ji%cEmhi7\BcOFdiG2h8gQ
-b(ACKKEe9s%"PA)TQ1Ct at LAcIDKNT!5hl\HiX)TY%hE3fGUhOVOp_9:%@>r/8#?b]h@>(3 at _dd+
-5aQL!S2;A*%h"7%!;&:X.LQO)%KnfsZF10ln-K;@%7`/XM1EICa:5q>%:Ib*TWHA"Fq3[o0n>c&
-i/]"48dZ\[$A/`r./^Y4S-YrÜZ@$hHk%"1Chj<1b[d>eL,1(93\$*u(B+PK>B<(k$.apQ2r
-R+Ma\e-5)_M'0#2/fY5mHj6Lc$%S1Y at .L0;P=r^\:"mAg^l&mRHj379#!fJj_U.W\@.BnE$K/k`
-JF,r/`_t`SOA%?f/Zc%(L'_V0Eo>WFi9d;TNX"EqZL%0NanuJGXq".Fc9S<=+J]<C_3_rX#_8m!
-1]F)@EX)rR+Fs&4+ui-[XT]A)2]uuJ at Yhp$1-VA\-#l$O+IiYXA"c/X#3r;S5\-. at -3g6/'7aOK
-5d!($dY:4%O78n<.,8jMWX^>bLMYW2@'^b>rX/^BKgS*RM$uSB*"@`!C%M>5ncT at dnt;?"NZb&*
-W7+Dt`:)"F%MQTU'TlinA1J".L82"sqGK'Ke-R8?W5,JB+G^=>o^JN0T?-ReTO8*'$n=S3%=lJk
-!es&nIkclllb!9-^kKC.<XT/X%1M;%!8Rk"g^[mZ8?L/@@#>53-a0_C<Ihpm+EP;%82r#V%SEhF
-/7&e$Qq.4?MBe;p_`S8+KTtDJS76XH#AjSjRKf[k%WX]2?ttBq]jF\s1Z6?^:J;7Q<XjSO81$G(
-*-46oXW!k$5-11`(Q&FYfEpeJ(/[m:,odETTEmfKJ^ZLd+Q*\OWn at rrPenQGMu6pmL>E3l<']jW
-5cC3lAe..9p@?pKJ=MjW)?rIX$mY$Ei)U;U3^LRN;';GQJ8)4FY,)I�?eX1DuqFokm$24r3>l
-+OCQ?@-A`$"^nP=8n=&Lh61UMh-et(.hi;?j9dNZ$R!k-?t'TahCPg0%tMe/@*FP*-I:Vk#/ISP
-C\S49$%O/@#6ZM-5`-&6g.hlh#.ES%4Xp[_/.Nem#&fY/@+c=REou#\dpV#>dq^[X6`,r=Uc)s5
-?uHY8Sd<5db;9!cS%#ld1.VDt#p=3ids))4o0ZC%#iL==5_9DPX`=R6$IqHIWbPpU?,kBB at U80S
-m:^oUeG3V>c_EQ(TW':=E!_Na:_bK-VZLO>`X`(8KPn"$<"i+OP%#:3%_V39cD`QaRB$VG/j4rN
-2u5<qLG>I"HJ&E1Ga<.$*i,YO%4QT/4+>HX+qE_Y%Id3cJ<C3=BFR56c"0'Idd\1bW9^ol1B<nJ
-W%9[qc45A*rkR:s2JrsHK2e&o=[8,V5bNhHg1GHtK`bnCFbej'H4#BFSA9^_\R#X3#aq at 1PJC3K
-i.JYZmL#uB%)D<B5ZS=Zn-SW^]HClE+EDlqfOSP^G^s+]5Z[l7d%jh at Hm"nkatehCp;gY*%dAeS
-V?W%<XpjkNBAhPS@*k(0KFE=N$,Q[:1D(-%d93R?.l7Zlk9EPTl<ts$#6f-]`Y;!#*_.FfGu1M$
-'*une&_SF99d,NkB+iU"?q)W7b9N1;i2gi:(l?.n;,$7W)]M?O6=Ck,2DYf#"As`7Y]qFZNWao9
-A=tn)R*CC1\VO:33g:.%;8KWV<$E"_"J^ebChY-8jJ/t_aHh*0*QTIVYe5j3-k]3DPE<lTBHin&
-"S0B&lnKh*c"'1mbc4Mq$KFVY0gqUP(Y4EGj/BUk9dZ at 6"[d"*e9W;I%VJ\5i9a\o&IN/$UmQm9
-.%H.SK37($1H$22A>:S5nP:NlbsnJ$e>>_dREQp$@5-nk)\L<s1XUkrD^lG,V'EO at DIXV'#m2BF
-Ul]7HQ3eBo_[[E=@^*^3N.WmmhhPZS?8dUlcsebb_U..!"sXEG15Z+RN$\sb@)aW&,=lDsL.QW)
-3/qEen=,ET4(^#I at X,%,KjmGf,H/LFTI:8%d-*EL+i)5NN2!?c4>$^Ijroa.>S7j3cnK4UN8_#5
-'oG;%fI;_'aNQ^MK:nqpNe1*1qMg+5L*_eQ8;\.:U9L at 0L&mr\,`H1lhDYZ!Pi=G*N]=!j_;V'5
-*fD5hN#IL>R)Cp="4RtDNoLDPW!\._jT>tNYb!>!_go`LL#TUs3\(5uauflZ^s"YB!tn]f%82MO
-2@]b\efg"T0UNcW,Ckq8LuXTP,)sK2THXesE82976BLOPMCfZt"GpU#(a9.BOCB)]iM`D##i^qT
-3sGc-?5jBs(sFQA_8p at L"njor-4`JjVAtD%#](Ii,:LVo4!T9[3Y%lnDDkA/aH^!?9ebO_#i`(Q
-0b-cK&giZ+ct^4N+u"g-N,,ra2iAn/Qm3&mA6:&`@pnG[L-`=g3\)B[fH?%$../7:,$:3KN?WVa
-2[[GVAiYmh-uKo[>$.5hNT/M\DiTGmXrIn48E_dh!`5OE%mjBu2 at TajW[<]l=NJ#[Tt#t*$"=1;
-+q#V4g<>F at OD<U2j"T+0%jGuN-]R,)`\<8PJ9!UT6SQiRLBAZ[[IW;_irKA#J=ME+,1I5cNFP5R
-1lNXbROaAm^nU$%+pb82akDi>.h>!$S2cDdJANfE>0s--/A;+Y3si`*kUVJ7(lB;f_bp[_$DPnA
--&=m,OuEj[:t6<j69:\U5pK:#,,<a4A2B2H\5k,:,)E$G6JXns0Ss6]YVcc?0M=l$O>2FhU`@4d
-:C.%=49H.2*C7bE%Y26e";W*g'"E';!B_4!OMjZlBMAte`#s\/WZ2l8,mf,Z3<l_5$q&*6%k7i5
-PJGNV6b7IMiMG"Y:s9kG5]d:Ii&HHfU(0LLD at Ag1-Np[9E<2/=#m&g+X]IJ&Jm`X*iFFkOTW/kr
-3Gf50`L)=OR#TH`E!HDDOp)DK'uQ\H/Fa9,"^$!X",'#N_-A^IM!WGRJ2mm$kTkdmp(2f]=U*iH
-*#ba5&j`0f$=TkZ.Q0?_67?XU_1W`)+E6eu:fiP\,f?'`+;TR5;[*b+*.or,&],AN$1DCRL at C3E
-6Vq6SdICLsd$,33E,,sBA/^+4L<+rX<X&RjCBVP`7>!QR%3Z3bLG7X$afnVQ!RMeh5b&h3U'V7%
-80n at gQ52f#D$j^1nN9Y=*WjM6%fk<A1,,jK!YK&pi64$35cbV$#VZH+$nI"8hAR8><t/R@)[<O4
-'nUs/%De<=KQ*k&K2Dj_ at 5K]o<,NVj=DnIY,UnL0*YJQ_CCD at +K`o:G^Oh[?$UHHo"^l!_gG!g[
-A6^F^Qrk#RQt6Ii&i9cBN#@8(<!?i$*!CeF*Q(]e#2u\/!q<3&6:nNm5tEqe'MA;`3'e!Illq,p
-K_>JOEXmZE-AI&:*eUCmE6[I\"`S>k*Iq*!JP\<-YiZuRY]qjq'IJKpQl:TJA.K8[.YN>m'LG?9
-$L3.#L<sTR_\d.q+]4V[(Z^0=;t(:5/2i6*#S_ms;@>cq(l#iG'a$EcIW>99#/H6.*8ja"+[A,E
-E,$%RQo1mp:<8+(K_PRm;[=N\TSJb at f,a?6I\=IqKg9#dN1`0<+Z(R>OFj^R,lsm)ZlFj)hM+C*
-EFM3n1BUIX&Ah7R$NUe`K+Q6A6a1h?V\u97@&OhAa=e#(('OnB";@=/&g78Y+G2B)'S2G0%0=Gr
-U(Ep[O at V8:!>m/90U<><:f7S8^c.$Y^@;MsFq.Ao)7?M=LB=ta$N[Y5L at F[P6V;_:!?a=S at +5qm
-\8qqYPT#3/eCDE\:Q1teVM#M6ADJXn%`#.q)raC[K2)"K5h$\T`]b&fOD+uo*&n1rK]F\/5n3V'
-/d!e@)M0A@$)*kJL*P[s+@&F(B*]K2J=ms8XbADnf'e9rT/K#5`!-7nA-7pd'a'gpKqV?HKRDhu
-6<GoM/EAWei1+TbcuWgWaq+^VdMi7D8I.T.1<u2JLe6ib6:&O5C/EBRJ]]bQ6'*mU0Pha1>5Jcf
-4;EQXn!l`V6ju@<.0d#J&Pu"Y$HE8u"TXo/_16?'iTM-]MQRA-TLTHb\2AmGaq;Oa5m_Kd>(hXL
-HibuV#2mQN#(WJKQ0<Ds+m($b%B5^^GVT\CTJ2.?jANk7AI at je4G7[<l*HN?#U.8/L="J#_E^Hs
- at E^ie5dUrO=DA,.,U.mSRMAL6KKW`p1Bt);$q!_idBPY[KZ^;'\TgRO+ga4^TT`2WgdYqm70JBr
-neFI+1(#/B/HkQT&q`G;$@pJ[#!dbX6]c-p@).bT9a%6F0J<pp#UY0(g'eTB9a;Q[1^.9Fg<V0E
-%Ui]Kk0T,+6\'FfTi<Ip;JXa687Kj!-RsbQg`1Lea::q%15+$4'gk5@$Gi5MLOJk7"3>=D!@0\c
-^rRHE85KMaO;S8XBGCC^Cm4s^(PWLe\EY6B$:)D+]AW5hcQn+To2*!m0PV8o:g([:%D7FWQk7.]
-Vp-BX)f1&(BnI.'#!lEC'ejAC_l.c7 at 0@eZd$XGWTN2DNj=,i1a<#sHYR^b+6j592l's/$#.0a7
-#4TJF&4f--iS$kY3tMlh&0h:U2$,HhK"3t93&86&,S%%9K?uOZa<?/AQ5'rk2ZPr_(a4K'Vi<Ym
-NJKOrE&J^*(ofPGK"@kRBJ>"11mdDTOH;9(TXoc[,(^\<!P.WUckV,B4G+MRK0U6*5VX$^1Tu$R
-!['>/L`:q2.@'ZCK2=[j:`G#m."f#I3Ff[m>64mF+cF,u!miu[OJB8"1o*Dj"*0-^_ngo6g*k;n
-K":4MZ6'0X+TY[pK9JcV at Wm<)3!6Z=K*X47LaE43)hZ3WSM2>k^bGql4FrkZ"'@WD!PAL_)?Ru;
-/gqpY@@2VE'qJ/=1#n:^CQ9Je_1J_=JWMblW&'$opB**0K8D)[#a^-HE?HqQ"3Y7;a=!d63t_6I
-3RL\)W%%h(.KZ98"(3+#6U-2o+X(:1K=En1J1EbgLoTAp0d&Ba^atR?1':oH[)a]u(b2Vn)FC)F
-M81)GZ`YCK+b?:''Sr*93u"&+jT68=!N7l at _]OLr3eE<9JX at p=ZFtn=]`EXCJnQ#&OW]^pUDNtc
-K<`i,,7pDV=L2r_K;q*:+<3HC+I.I/)^%-BU,%AJX!-`bK"sAK(c++$.KR%.Zgk-7 at 6=Ua+T`KC
-"*br?O;3>&,e>*UJs[pmCi>epU`0"i!bh$'LcMH=*4t,k!Knj_(aB>Y_TD9n!LaW%RrEt@)4H1#
-!K]8BLckjU+T[B;!Z9Gh)('u428Sc5!`1SF8X4pI+TmN]")''na>]?f.u_RQK+K:iBJW3dbQDfI
-!`0fA$cIX:`rgAk"$u%$\2T&%3QrU,!j%jlGU%hq+G.*]!MDK*+=.-"*!*Pu4 at gZIWqZWV_LfQA
-)#tP,E#D$Sq_)>.'#=^Klh5tT\gRh%JhT=+@,$]F;hBfRJl!GC:`G#5,QaXIJYF*F^cXBA0=M)0
--[Njd5U77VXol0OT`\X-Yq<&M/;'TC"*cSRYW%3)gCQB9K5lT5LtDcZY_(&q!JGd1O>=HKME*H!
-Jp8Ih3'3oY)?\>&`_[D2HAo&K4LN6k(t"uY1EJLM3?38u1eI59YW79&"G1*>)@.Sj==#Br-NhF,
-Jfl%b#h]et-Ck,g0Q>JCa?:`/.MXuU5tEC*<*]T'7Y<rG%:a2TW&]mB3B)IFY,R9[\s/=59+0Z/
-8N?p`+=dP9aFh'ubNub at TcZ@H0`t+,!g#Bma<[q:0S0QU!m!7E^bHih(P5a8LnmFk+<lFd(a-2G
-!cT<6O;`_t)p+fhagmXgBHi(_++l6rd*,?:O>rK3qL^N\OP;3.\PIeo2hP6b""E#XGT;9r'nLTU
-(MGeNl1`!o/-@"6/Rcj)0K2]&C)(\=N0#68+;p^QUOl#]JuCKK&2GlC"G:A5Js!Kob`*D`Q3+iO
-aES[1^ak$k-d$rc6,4H at R\Bh],6K&GJ[ci/^bI_!4BAOeK9.%'a>=!9 at kL:j!gl(u\06KD2M7aJ
-_It?Ma?7Pb306[tUYm!jH*RL=)QUq!7*mYJ(c?q>;1bOnK7GF$3&)!@l2j4627PPrZ"H+R1!&H0
-K.o#'Qo]eS*!4Z4`^goi8;72F^On!FTF_pBgVJJ.G18c3"'CT,^bD*WXTC80K5A4'17-042&UWY
--#tVq@%iRE32b_?1LM#MLc>JJ)M44q$@k/>0l[9)[Dm/G!O*E.n1#%KH%XWg$-HQVE%n6mKRpaC
-OpF2PJS0QYh2lS$$65*78s9[&\J<aQ%A4MgH=?q83e=lb+I"5T/9<99*PLqdK"@QVLaC=a"O)No
-"!BV<YS\l52?Iqd_8nL7co`K84?EYJ38"8F=<]G4*!<de"%YESO<Y=Qq1>7WK/HC+RN.p/-^_\,
-,tWbYTGPtkm=WIu9AgfFQmMiq4Vc<f2dutVTGoZ-4<b?8!Qf52;YksC*26mOK$Z7SLcSi2ZPqY)
-*jmRVKljZj)1u$G"+W1[\>i!u+L>e*K#I'qpo6`EHid\4!\sJ$GVXk)XFmGp++_T;Yu-'S2NO?b
-!N7s[5SuQ_+\a7Ge<gu<:b&O+VN2>(O;]BM(`7k?1qGq%!O*mO_?U/fql4$RJtSn?\30pZ)N&bY
-K/8dF>cPOu2Hi'c")odna<LeC-NTUDes&Q;QnsA2aIL%("&LKL'[m+>?:W)8P*e=55WStN3.l`4
-b!7)*3<XpV21_D<?oTX(0Hc!^qVqhuK-2q%81-p#4T^K8!I_9mlLd at MI]/>I9C;Y0(c5\?N.T>!
- at .?\gST9:LEWSc_[7Oh[+>H/))hP%]:D5CeG_#rF1<:RX5#a-8Y_:=YmR*Wq/]]o&L&cg5V#uWk
-!i<M\?mu.".fr%)R)h.;+=R?tkhLd_JXrgQ+=P52hguuaP(5WG,9VRQ2$'t.- at djN$S__00S+[`
-K2=+aQm!Co07m<]jbP3o;1/_[1V/Z!!k9O`j_QoD,Qg"OZtg0R-1uk4/R\I-O at .k>BK:]Q1QtW\
-QR`ZFi&k84lVsf>K7Go^Q;Por.8(7eK<&Ltb^G,Bd6$#)!OAMQE/FaRoI<S%)k\%BQo]iH17KsT
-!c\?p]%6t=Z%H)5daQ9gRi[/P0U;D[!`8l`^_`1a$q&b*!b`k^3%';</3&kXJ[$dF!'4=mE.S?B
-K=iK__@;-+"f"UG!PS\g<5&COpp90#K8:=rHWo%4gTRW4SA_#\Y"hKUpaAZa\_AA3\0Zd#0S2PM
-P<JJf]k'1=3eMjh,Q%lLW%<Lm1BY/#(R2miL`m=(2h?Jsd23UN0Iqr]ncQZPX@\C9Jhg<s,0]^O
-j9R6$82,[`-)*@UJliqC at 3i<#<06l2lCjIT\0D*;/<!>qZls4RBGg#]_1I;h]^RDB at Qk?8*+>So
--#hWRd;OZbNe)`"!Iu-j^bCog-kJ2JJm]JueWp;V-]M0W+F0g=Qm7JR,n]VqOq@%mW%f00"G1pj
-TRl`fEZl?ON^`%P5UtH>=>GN=3s(qU+.sd/&BBB:S\t962>AEuBJ>&e2hP`B3,/JH-lTRV.>!EE
-Ni4f:@/OM:0`ik?&4e#HcDlGomK7DHK+S'8#W;`$4/j>LCt<K at +TWi[=Fqq]"&RdD`E.VX0peOb
-D,Hr=49jDf,QXT7Je0_jF.*3P1eUGYaZqV5cm+1R-iuXq%/hE&QI[*LZ\+P]!Nbl4:a+`LItO[:
-A2ksSnhjB30[C"\3>a7WQlK at R?&YlpJn6>4<h_F+%uPa3ZH6l!i&P:G&cl)Pi52Ss]:'<$#(j`0
-JoDZ]L`(gj__1^/,]GOA80]*J"Tb8H!dHG9dpn#/\ibnT!Iu^cKZ)(P;D"P$!g)DoQ*q5p,20!4
-K>8CXb#G.o3CV:O"*bQGa>lci_h6#lK4tr!W&0.$/V;*Z>gkWa#U%UJA-45-PF^Oq\1('A14go1
-M!-l1ZhOVE!0Ng3(uQip22?f1egcZ<"-QkVdPi-`XXo8g\KDb!YSi#/4mbKRG at 2bLW$.k]+_6Z`
-!Q[&L-oM0 at -j"?E<s%B6UMqE^a0o7LN*nEmRqc)61nI8">/8]"`ur0k2+bBY!JIo+-0oA.Wrdm$
-,FIg=;cG?&o7NZbDNc-jKcd>Q,]7G0K,>kb^apd_"G+Q;JQ\n4E#XA1jTALb,aT!F\0?P?_oM/O
-K"jJMPh-5G-RQXRV_Lp&;iDn[2?QW*3iF?W`?l<*3eBI:"#qWc:c&8^/B%n+]\(53.D_DM&^c\!
-PORPcA+Oe-3Wfp<Y(LX<(b?+M2$/Rk/N=R\r#C9T,P!fO!K=VYrqD#+-U`bOJlGX#HJ\b%)5D*H
-&4p7($W.5X//hDn")o!,dDu?e4TU-EiKaq!C*O;'^R-,hYtMBS`3+_!KrYV(H3Ruma<C^R,D)!q
-4]_a!-1ehN1Y8!F_CohZYS`sf+i^0%03R1g^ap%)/#WG/*mriDZ'ud;%obe<^I[FDa<uVE34Oq/
-?)L'UGUckEh5=p5U*(A,E&.c\SI-P+!cRW:8:VZcV,D<[ct5&&L1=.:@%_C#'aEb$R?3"T.NV?;
-P+g*e;^)VV7maG]lnTP$$3`do.'.S?RZ8UK_9 at LR4W''s, at N^m7jXCVU1"qtJibo_Nb7=&86.`4
-$k-c'JOkei3Q6ee+ebQ at A3?$/jQ"W]?;2:WKk3QLOH__gRLZ5?B]Rf\.?+T[ZUps+G9rYN7!"d;
-P"ll0MT544i:9Z#S#DQ[faOHO1n)W9")uENGq'j at jRR"iW&[!Q9Z6Kee<5&=$Hg<(d?p;8.LaD]
- at _%;hCb$?F`?U3Ne4D-P:IcThZsIu4*DNB)Gn at 213K=Nc"**DBPG=?L`^=.Hl=_(R#6lsifNrS9
-7Rkgi.;3a!Z^Qq&!NjF\+GiGkY3?G50]G2$UKEm,YTgT;/;_5/n0/4W(rdJO,$<hJM5,le.u9r;
-WkAVs>JM86j"RbWLnVVU.>m.>O>Vk<OGYMG_T6+8M1[4N-k at QDE#Jqt+BC'#U+gI>L-mXq)@5B=
-S/I-8#d?)p6AXh?L8,T_16$k#Jh`<20T%Fg at CYA9O$ZBH-]UR0ob3AfW/)B%6D2[E$3H0t16(=]
-e//I$\=CSgii$6>%jB/Wo?6/*`%]8"W0f<SK/hRC8Kk<Y)iR*Sjsc="d%\)Y"'G1C$DNns3"CR#
-gbk,`RYmkpJfAI5#fC&u4:EH2N\QLQ:kf^AUN"F6M#j!4(X,7fl5U97R-Z_.K0[?o9&b*F)3"`#
-ei&N:38ucSU53\5M!IU.%#&+lZ7Cr&d"itW at VF+N`8_ui2i5Cr`[?TeOJ!s-JU$T*L7rjZ-]XrM
-Z58@,C(_Hl_[t(=%YG>X-]4\7`Yo&4Gg7fG!YD#tNFK]_4,2^qqAP88TPue",&i8pN_*8NgP1=(
-:*GZc#ilnYTtoqIO$e`Y)N*OACa9B3PMS!R+c,J:%g.p4+bh.GfIMeGE0)FVU9L.DN<-P&-OL6q
-c9)C8 at -eVfK4*apM5,T;0ok9e`/TM'W6?PUiJ at +EL>nl)3XOM at NMm"jHpAncUS-6e- at 6#12MQcb
-eZXeSfSUp\+i%V<LgrRp3f7Foe0GDhE/l[_Tt'-$e)DLI4HDf7UbiC05cY<Rd63jFN/^STV$6hC
-BH.LK^h13QU0ser%R[I1:^[?GjI(n^4N&(n,CkS4MARa^fS2IYei\\K8FS!a>PR2)4W#5H%2H.4
-%7-P@!s%Dg6824G5eJ5 at P6;j-Y^-R?i&:iOlkBLL9Fda=.>)\2&d#:Z$6^,.#&n/c6F]l"@5K0^
-OQ+[iBJDW.`$kh>TFaH2E&9hu2[,Bt9#AqC7,bYr"Ro_0!^L6!@?;aeE24M+=>Dgg/Y[lZC)WV`
-AI.7n/-eNt&VH`e%&EeVKi$4LJd?B,i=I5f&BkR"TO\DFgarYZPT)t\A-r>W,<8S^%RUe$#flEl
-,&jV)K?-IiTq"5!d-_Ik-rgc9Zl-,>+rWhT1^ZNS;$LF*%KjL%$/rh6LHq":!k;l.+Xe62#=`([
-\2Q-N>Si*eoY].6.ga%R(!+2K*Q#rf7,][E"Ou36_8'dlAiLT^0W5U, at 4i!Se2W4[?62HFFCE at K
-+balG*<N`*#(XW/"Mhkg_N7+jm at 5*u^haoUBJp,>Z'RHf())>17h+gL)?ps6*^VnA7,b3l[h+u?
-_0I:9P'jYABG_<`'@dPC<#Z'-h@'K7Ba.Hd-A8%ZkQ5]X#_>)i&WkES!Ph."i>=8ld$>Dt^h""Q
-=>9qddMd^fBFT]P/3biD);kfk$UE8C"Lr=^=HejWT\LE<Yj*1F#XiAL^cOTMEYUmU0jB;c0`qF>
-(.,qj$t0hqK!=MT_8p^+&%j'?TUdh>cts'i(cSd_ at NE=IH&!PR+TsL!*Dndb8`@0=Kj`[S6dS[7
-+]LIW0X;P4Le04M#T*\pC`:0bnnt/"4U/]:*!([!#U.P6"&OXj&V,!6JV5EtiZ\h`8Z2ofj=:A[
-dn:!V_ at .T`+U(,A$GhTINe&<&"e`jQ6>1WR6'+25Yau^70Q.=afK03YfH-V$9fR]_+pMho%>-?I
-.NlqtZOgLQ6]a9tTb'?k5i`TrA,-F49J$Ga3Y[.,GRgu82MEi`\:]St7,_Z5KckCU6Ps\LTsQn:
-GCIX8aXdlEPU)!fEXY;hC0Y0e+p>^4$pk?;%8o;6LDRNBJ[flc@>KlP[ZZs$W(mb9]JkOD"q at RP
-=:?Lc,9h*l(.-)4%3[,TKcjb7K"_ at 66!tskn7P-V=>dV)PUV8^K5lKBe!Rs^Zq"nJ'EUNi$UNE'
-KH_BVPk[f[_;m;`5\rd at phpYY_!D49L((tu1WR>I,mK4XIt=7`$:+eC#*>Q!_m!0#2^g3\T\^,E
-:c!!ur#CI<_AP]lJe$c#)$JmT8cu.k$5LW2!r.^qJuC[:7&r\09)kLc&46k%TZJ^'GH-6SFU:?A
-+Tk&o'19!J%\XFR"V?\/!Jjec+Z)360S0l=W'[M_!'(,]T"-Q=CCQ%A,m8b:%7=TP%A<tR>[p)8
-ktO5GVW]=Z@'7"l#\XOspKIetX:gm#.h/1'`WpHl%)SEI$I=MWL1"I'JiIENi7&p&J?`:oJ2Iep
-aYO&B at Z,l>#Rhl\/>R6*&G)8C%.&'phr(ES_N7D"_$E,W:rX-c6Y6iB$mgU(KFNQRn.+Bl1kPe.
-)af-2$+0%SKlCiBeA-)1+Y5>Q#h,N7+AN?@cmp,Y"q\=q=^j[Y,QeU4(ft*k%^MdJmi_67_?alc
-+j;?h0^oPn:f at h^";RGWhKjcm8Ig=$49H.$'\;)P$%X,loJVRG+lHJ^+WEiQHLMgTd\[HS,V4S0
-e6XKsF"Hk>/-aOdNl)DaW;u!8KqMln_aMBPTtof)ONnGj3>Vsi"=&ZB_ at VW'WojC:3&f)U$H#+q
-fmum7KJ6dCJVa[=F''m]REQ#T?rmbrTI3qDC)"S$0P9:"3J8N:*()tW7-Lp>;4s![nW6*r at 8J@,
- at +EO(11'0470%sZoF_1TE!jE,)^"]50&U[T5\(6-HjP>AWds`EJ6&,?fF5R8 at pk<(5`?.e1'ulj
-FJ-!/mPYN)Jd=gI%D]4AT]c[`,$j-r@,R?eabZ/=e.,m'#Y3%oi04Hhcj\j0%>R>X5]R.OGf'\#
-%"O(O!+8"K`X;iW%=hhQ-?]ioD#>EC7-k]T@$Cj@?jc.ad_MrVTN2O&Y($G1#f)6g7rE^ID?Xo[
-$E>W]^hBt1kQZo,%3W"fTUH4\Q4AG0:!UK1JDpodU's;.%VI?]T]?H1Qj$lt:6"*7@,_N((^XS`
-#p<p2-ZlWOhRDF+#_:pVcpIHAiX\McK:qe:^uPc/A6be[#&<//i/Dngn-MPcl+ht=WEQ%3NXS2F
-%YeX+%#T$6D#i`s$:*1=5hZP&Xps^)&g3hWD_)=ti3%TC%04J"^o6r,_?K&D-K)*r+J9$1aEXXO
-#U!LYDH?64jpo2,$p^Bg!7q[Qj>R(a#9[Ub7PMm&.L`BW#bYQ0925t)Snp[Uie?S("5jJqGY\=h
-$K/9Ei.t2pM at M34LJ""eT]celXP#kW%OM%WVtLTCo"r2F#U&7?+OKrj1_(#`%AnmC.*`<^O:#lK
--NM:A!Z9HuBF'-]$:uX95`Q?tc4+0!%D_BB!3?MMln%82#!e+V$bI;FXuhA]k-4:dlQ1+TM at ./I
-$"26n%X&:,:'M*k$NS0Pbao/1S-VBI$7hA6!47G&edT?1%SVua!7[TNmL90W$LKAQ^n;)Ym\cej
-%:JP)@%SN=X9dnf#f)`7i/.ejD@/)IX2*d&M,4EGT&--]5qLAK,4Z0mHFEn0#[l"?JDLYVjp_<r
-#_6OsE!crH/-[53$,E\RC-2]NapgUV$NQt3+PmO"L.2I(6%J0]-1V=lL-)'t3<r.d!6lf%H3u09
-%?R[D5gXqPE5d?\-7dLM@%`kjAe!\V#7'f+!6co8n.#H:$L9YYJDT;4r2!,F#/JLio4SS+[LE6'
-Oe?(dJAr)7_YM8(%"Q2_i+<H!a:840Mu_c?-glhlb(5)5W.<<hWSGe7h?@<<#(W!HJAO%6X9`Pj
-C1(m$L_L.%g^_,9#b^O&@*Km'Sd7SreKA[^deX1Kk<rq!7-?lHTZ./qY*\(jU5ECe%?_2$BEoZO
-#9_"qN3b5=?IBs*$NOKi@,,im)@Sl;rJ.C*!144GQk&%]!+:ln!1(JEnd6M2$p^<f+GaGur!n6r
-%m\?,jZF"%*"!fh@)_W37N;d=n8ALd"^pBq+EL(=K[i])#U#N2T]Q`:=ZA+b$UBmB?uZ6ui!&&g
-+fH6&XQYTi_JqmZ$L%a_i*Hk2Nt#LJdGWji_tFT@?>9^;p]+V/U.c%L\m"$h.=fT2TVr'FX9IX;
-#:t%d_"%i*`WcFIJd2tni7L69Zm=SR7gKq<!gjK'$3fPf"lQNlTUl?=G"j[iUFNDm!8^laR[2l<
-m-#2q!/ai#f-#fOJUimfT]cUP^7;,;aro/#T[:'d.Np1?8aA^&@+8AQO9S:2NSqm-24i6hfF/n.
-%=k05^tUH_Zn&qm73J60J7&]aie!&.^u`a9ABY?la]VW4#0Qs7+RHDLD?h;]%Y2d=^lV?0$k,DL
-22"_SJ5ukf$k!F?$:pa]X.g(r.anCI3T+:TE,fIi`!'Q=/`ICZ1Dj)&ndS at lNFk]go99I[mLEq\
-,[faD+GpV[]EYX@$D=$r%oV!%TF.Zf8)Ta at L:(UnAq]Z^#:L>o?uQFflsAVI$R"q/i7?IoW^7G1
-7tBq5M6$msSgUF.3q)PAFM=uTedbWU#sb:;TVr5"U6*/s%3hAgP(<#pd,dZaZRO^,5bJGoe4&]U
-NhBD]+P]`cc!(0S,d&O&^pF:-S>+qK5[\=5J9)>m!X[p)$V_i)Lj0Ai`X8A?AcQ_d!3QNi"&4K4
-%H-%I'O&4],-'RA0M=a=+Qg;OEb;I!:ghQQTO7t3C^cFG.fdY!erC2iN+B@"D?Rn0J;J,Q-k0S0
-#q!@s2\H;RS68+\*7tN$F;. at UUBk83#2k;FBm'ujj9i\g#W/H,?uQSucKh.Q73LFn7_/c]m!I<T
-Ttl8O@%'2P"\N1!""eA4@%\$"7Kq^gF9&NOO3eD&mmsg7"lRJ`oq,4F96`^^,D[2ikSB<=e>8hn
-q#G0<JE.&Fm%WcI%%pqf'CrSgg<F6b\fblYp^V#Rijp9**YWHo!8U16qc5/a73M1-AObaRogXJU
-%P=Oe+Hd/KX:Co*D'6,W'Z3?^app[qI[&MhPlq<p&dgnG$mV?3kQsim4+LDa9;Ba%MTpQh#C:ot
-Arq3gl5jlZAsYc at KS6Q6.09`"6817[%(2l8^t9(J2 at btk#XIrY+CGE878AM2#!emfTR$iqT'-07
-#p at q1i,i6)_ at 5AF#J_#V)5WdIWLCAR%SNH"7=CUBX.,bJRea7\@-O/K]pnhT%KLTH6_k,].LdNQ
-%XH0bRD96HF9n.P$ut!%'6F]:j-jA$Ri1I^c't=R]mB`FTE')+^tuIaH3?K%RQ8Q[@.7*&g^[_7
-U0umcTUVXJcjkTjSH*"8^ubgEFq*BJ%%pi6@,<o_JPr.M"j94AURe+T,GJ?jU=C"d5fsMh3MY:o
-Ufp:tRSBUs<Mb=+"o;Q421uGVZ)9kMTk=#>\on4&Br7OhU0uZKTQO+R:_&q at UYp9j3\.-iLS[%4
-3Vnf9. at MJBR=LQDWXFkV!YQ!3WLp`'UDc"]T\^)eV64ej#MLj8^rVQZF at e`9#D^$YTPas0NiOcb
-#!c])+H$[oE!B^'#V=g:TRmAnM6?oKY?L]1])2i&m at INE#=+KIX&]\QO0AE^0;-FkTPq'mA$J%<
-Z%M5JVcC#a->)!aZN:rLHTL@/o<gFlG$A1XRN\09H*lYj%3WqO/iF!(pTL7FPhSc]Rg9G>g'0q-
-%7",,5fO$/>IM%n"e``&S&bdAc:&jd%%FoL?u`]&1UHtN\gT$;S#NbV8$oi*[/+kRgBXCX5 at LT2
-#L?K]ohl#o#RoJPY<2p&H1mC$_nc/9S%G0"Rm3Llg;Q=u#f,PuH4QJfi+Tph*lI[[\f7X&i!c8I
-^Y,`e3d7!=<OiMe[$tF,MpB"?C2M^DZ+G,T85;D-CGc*HB#').H&9ODkV>5\[@D0T)<JtjFf8O?
-]),ar)[48W0"h'uZ$_,G].2Tj)9CTqa[qp2RWY3lXh*8lb$"\cN[MCWV8$68Zs9lJ+R?Xd]=[!8
-]JK5nS'2:fdCheL]na<1gY]^t0?JUl`dHsa)lM!Yqni0O#Fq_&65.4;Z,3"A_)rOM]cG@*FjjRu
-%6OsGg#:B4jdc2=_hg&U]Ka=WgWEbW^7]QS%b at Aij:=B3RT]Z[,eaaOJ"BgT=56<;S4X8r:T^-d
-"C,%]CQHI5=fU/iX+9OHRM$$V#RA^^_qc?6]slb0X/au0%\:S\gK1pI!R"\T#@)JrgjRBcF3Hm]
-#<>llNk>Xgpb,i3brsOq]V2P-bGMu!gd(<E=o#=^s3T\8]V'#m!,)U,8_sGc]V&]i!+FYGZ3O\K
-+[(b$*O4@&T1*/UBY_ar3M!b>HjDceUu4KE-LqYS((O"(ia>&2TPO`2:^Nf3$tCKUdn0d-3TQH'
-%\?JF?<+.W6cM::j.OC$(M0#Ma9TLfkb*(`5,Zt<S"/;p%6hDV3U,38&_VT%`B75(rM at Ki]?WU4
-gKoBa]t`-)Z0jXHmCe)3Htg_$fuH0ahE6.i>B-p`E!U0s)useH5`4Rh4p]p+i#Xu9>]&DiXlNgG
-j5(IThAOZ0o=UeP28F@?*\HCn2<u;JT:QFb4qH\f9BdKpl$cdsg5"fSBBHpG%UO0j??t_jJ\'qE
-%3CAs*f]7<?fcRRofXts?F6X0\a'3KlTV0 at Su_Z->O2:+li!$`S5$s at RI*&-m<tu)^7F%cm<\h]
-V*NhT7XOQqTDZH$r*6/jrK[jR6k5UmScl=:6T,DXHp*u*+9M.c]]O;rR*J0bJ^?Z(2i%ki"+d])
- at kaG_-M)2hlu"QdN$^o;Lrq>,Rgk-T.EX8]3=c;_;CU8^3]IsfL=7Tub&TM'JO0\Y%Z*WA*/oV\
-e5CidVbm\`MH!D<;O^DkAl>>`i+3scMFLO4]]sMlR7($.IBJ5cR8!oU'-(I<4uo!*``"/"h_hrM
-%G%Rk52:7JbtTPK.>6Mi,`r>PK5&1rBeg0Q"$s`<@PJg]"p8k,^hc!UNWqip#n13!+q-qo;BY%V
-1)\t'f*kD-)J-tIY]O[EkjE+>i,j;HDMON<.L\eAXWCk\/JsF&!tE6lM8m?XGVnb?ElM]P*TmW)
-$(m6"*tVs\5li<0.QU3G`utHlVD\th!c$f7Tu38E'YA.5b4E;">MA!t.r0koN=9=L1'bXC&=UIT
-Wq?V$C-%NSNA14]W5M<&XIH-1d^ZJ3$PLOe/J0LbnZE8r1;L'Yb4_43/+VjD7^3&Mh2[G(*69m/
-T[M">!K/k]ZgA,id^7t`E#FHT\:W<:@N.-I#bfI!*D#`oI)nD]Jqk;BXt,MS3?bGh)[2psDWccu
-ctF<.6(=tB"qK.3mS5D4g8HuM;p[Nf:LMuP4p`(Kq7`h3>5^[HoDntj80eX#;6XUUpJ$lOhAnt9
-F=dnpeR`#c7_sDPVH.[?Cc&/s'NV<9C?iO;XD9<2[+>ft<?/0:)Do*e8`Y9XflTq'#fm at aEh0,-
-prk`-j(]]n,)EQ*JKTb(&;;9`Fi9-2W4[54,KU&IP,.>:1AoAD=MgUVM=cVo<j>%aA1_d^Vd786
-`*6Wh(*mO&g=EmHC+d]HoeU(P4H"#M%I8Kj19A!E)i!?/VU..o,>BSo+pa&F1I7C]+GR_"C*9tW
-1N^T-)%>,S";OoK3O=pM8N]dDQtdNE>'0u7bh=s:'2aC/bstYCFX[&LQcnhl5B#lf!/tk;6NcMN
-X[u%![$ClK6;XL_%mrEi=1Zs_:'lVl=sj.f$=bLE+smq1RO3eV5gk7\_ot=VWBqfJFWkcGEJ0*P
-WXa^R#h=0r$mQD+3\0/)XJ%C:@h]plK,VH\%YLG4*<kX>au0FFE6]9n!I2aF%&qc&3JHFJ>Sr1i
-Se9T[6S_n)U>bYfGMKZj#(lHu>%-Uj,F><,`85eo3d?#W2B\!O*8A`<SRRomX5h!!1(9p3_E.XR
-9#e+ at 5e\2TY[IulI%CRnkSSq[D[^'U09^J0*5b<n%'E;:^6]!!he at afiJ\d at B@,e2':j1+!Qc'i
-8E\2!U+S'_3kB8ul;%ehFic<e"TZj7SYNW;"t=kt:gC=oBJ0l!7H=O.?jjlG!dE#4i57hB%YuN$
-%3`/#4'-;-iUJ(I&IK^MB9NrqR_T?)^+)6I,Y!ER,DjDM-j-94&`UGcMa>W1P":27,5?,5nKoTm
-G\mokcqXoKL'WFi at c@fd2[o6e6HF=2%jVRC#m#]>KkDAD?r:)RL+*k-E5ps*1^#<a-oac<)'u)s
-&sHa%:5:hn at pFtTP&dEmadG%#ep)-W/]LYBa\*3k>_8-EhGua!FAHK-"-=0+7\C=_,Jtp.JneGC
-,07j0Oc%+INiAaA33$s!n2,t/&p#"JcT%flKq0B[*s4OH3Ku)Q%A<!1::]QuK;`Ys-b(Fhdu5:0
-7,abZou#!&:EZNfd[H7qB$cqa'E_b[%&#\2(+7O1S0NcXagk[Zi.`:HA/852VN7Ab9GhIg#,KHW
-*sJ!b!lM]%E"mVb"=bc$Br)h%[!X8)&=aI:GYSO;J/OdhpJ0:4JtmE/>1"fK7>]DVQBO>FSq-$X
-_E-QaTu*f\RP`u;XZ^'rZ!T3G?Ehh?`iN`<3.mmM<s+.S%&!F=^R+X]!hEF[@"PMH5iF/D4`IQ(
-d^H%<hcst#A-^6m`7HLW:FgFKY[Ir!^puKlX>rbO1i]4\-$<@XCtW84Y&;qd&R3/DHjpi..u&oX
-"_^>W[:EPLfP;b<CNs\*n(s-/d'=;N&3@:dqV7i\hAm2I4ph<]-\O12'Z-EY\OC\dU'fd+9P'3T
-1S3:"\jWrC5t8>()"r\'\NH*&_g6F%l_8.N*bgFK%eljn>W_"=0;\-F2GbDZU?!6][.:_O!X at Q!
-T\ue$j/e1hd7o:"2OKJ?\G'J4>?\@KBXg7((^AsXMf4@>Xmj*W(:o/\JT.dk-G]qEjP7A:F7,%:
-]D#@;i]HuV/03Fu+N!R']>'C]D</XER7U_DI<qu<7D7 at 3_I"8FI<&'V]D(HUA320!YPgJs7pd_'
-9>?%^(/@TV.[FJ^M.gM4^VVmpDEQ_$>A[BAYea!WK^biR!<kFm[`^\cCc"nm`JD:]fH18NTG,2=
-e at Bjg,%[K&giE*Qaa-9cB^E'5nRa2Z2mV<#I,gnUej9Tae/&3pF#ef:_oQ"k;/*+jOsE:O"i/1t
-jpT at rFUiH,fin?,0QX50J2u84hY^q*#Hoo6@[pi9)s-F;>P;ZrWEGqhYdJgko5/6eq^%tLr%hc5
-3+[Z:5+#]WB6WkMJ^bV+8SD=pU,5o0]%Xc-=?RjT[%9n$RU9 at fr(EsTrgh#U$[Zh%7sJq02`#Z(
-m-q.g]COM>]^d:TK5I;+EF,o`*(MDpJ:%i>JYLeIj;Voa6-$2&bffoGQ0$5p[;]a0_>1?kmD^H]
-\<XGHQu8PG)M_1)3&dfuX.JN-<MVR6M:$S"7dp>##NfXqb*OK*DX2M^Jm^kM>'f4O$JlFDGW5lK
-pt0F&rRe\UK*WUp(=[\dgO!$`#[OqYChpfAG,Alf&6bsi>DHdk_2P^$9:6u=R968E#aH.n5Zdfo
-=3<?EEmUf0g&shO='@Y=NfhdOM7jkGJOtlAAhC3"o+:j;Ar,Biju at ik%YB;i%"Zp7LEkZhJH/LP
-JJ\q15f?:tOEgs6?6jNoA*iUO[O84Nb!!d2GbD9=pS at o/7ft*Qq!S1ZT64pgJ%bVQ&)d at mPc+LV
-c2($Kkl"kXp3to<qu;H.ra4">Ip_TGs2Xr\5O\S*A,edie3FEC)B8fD/+:8A"[>*Q^hBFW49l97
-#XF3R^mk`=F:1 at DU,Y+9!T5&P^mh!1SUge$K-7 at M\.Jc:*rou)J,~>
-endstream
-endobj
-%%EndResource
-%%BeginResource: file (PDF Color Space obj_11)
-11 0 obj
-<</R9
-9 0 R>>
-endobj
-%%EndResource
-%%BeginResource: file (PDF Extended Graphics State obj_12)
-12 0 obj
-<</R7
-7 0 R>>
-endobj
-%%EndResource
-%%BeginResource: file (PDF object obj_13)
-13 0 obj
-<</R5
-5 0 R>>
-endobj
-%%EndResource
-%%BeginResource: file (PDF Function obj_8)
-8 0 obj
-<</Filter[/ASCII85Decode
-/LZWDecode]
-/FunctionType 4
-/Domain[0
-1]
-/Range[0
-1
-0
-1
-0
-1
-0
-1]/Length 82>>stream
-J0)pi;h0C-+?#cbJcdI[`b5oKi1g<le6k'MN(5RX<&,I*M$P;fTn)'<*/2:=nf_tfA2>3c#3.-t
-JGT?~>
-endstream
-endobj
-%%EndResource
-%%BeginResource: file (PDF object obj_1)
-1 0 obj
-<<>>endobj
+end
+systemdict/setpacking known
+{setpacking}if
%%EndResource
+currentdict Adobe_AGM_Utils eq {end} if
%%EndProlog
+%%BeginSetup
+Adobe_AGM_Utils begin
+2 2010 Adobe_AGM_Core/ds gx
+Adobe_CoolType_Core/ds get exec
Adobe_AGM_Image/ds gx
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndSetup
%%Page: 1 1
-%%PageBoundingBox: 0 0 612 792
+%%EndPageComments
%%BeginPageSetup
-/pagesave save def
-10 0 obj
-<</Type/Page/MediaBox [0 0 612 792]
-/Parent 3 0 R
-/Resources<</ProcSet[/PDF]
-/ColorSpace 11 0 R
-/ExtGState 12 0 R
-/Properties 13 0 R
->>
-/Contents 6 0 R
->>
-endobj
+%ADOBeginClientInjection: PageSetup Start "AI11EPS"
+%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0
+%ADOEndClientInjection: PageSetup Start "AI11EPS"
+Adobe_AGM_Utils begin
+Adobe_AGM_Core/ps gx
+Adobe_AGM_Utils/capture_cpd gx
+Adobe_CoolType_Core/ps get exec
Adobe_AGM_Image/ps gx
+%ADOBeginClientInjection: PageSetup End "AI11EPS"
+/currentdistillerparams where
{pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse
{ userdict /AI11_PDFMark5 /cleartomark load put
userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put}
{ userdict /AI11_PDFMark5 /pdfmark load put
userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse
[/NamespacePush AI11_PDFMark5
[/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5
[{ai_metadata_stream_123}
currentfile 0 (% &&end XMP packet marker&&)
/SubFileDecode filter AI11_ReadMetadata_PDFMark5
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:CreatorTool>Adobe Illustrator CS6 (Macintosh)</xmp:CreatorTool>
+ <xmp:CreateDate>2016-12-26T20:34:28+12:00</xmp:CreateDate>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>256</xmpGImg:width>
+ <xmpGImg:height>188</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAvAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQV [...]
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>792.000000</stDim:w>
+ <stDim:h>612.000000</stDim:h>
+ <stDim:unit>Points</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Cyan</rdf:li>
+ <rdf:li>Magenta</rdf:li>
+ <rdf:li>Yellow</rdf:li>
+ <rdf:li>Black</rdf:li>
+ <rdf:li>PANTONE 307 C</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>PANTONE 307 C</xmpG:swatchName>
+ <xmpG:type>SPOT</xmpG:type>
+ <xmpG:tint>100.000000</xmpG:tint>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>50.196083</xmpG:magenta>
+ <xmpG:yellow>19.215687</xmpG:yellow>
+ <xmpG:black>2.352941</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/postscript</dc:format>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
% &&end XMP packet marker&&
[{ai_metadata_stream_123}
<</Type /Metadata /Subtype /XML>>
/PUT AI11_PDFMark5
[/Document
1 dict begin /Metadata {ai_metadata_stream_123} def
currentdict end /BDC AI11_PDFMark5
+%ADOEndClientInjection: PageSetup End "AI11EPS"
%%EndPageSetup
-6 0 obj
-<</Length 27047>>stream
-q 0.1 0 0 0.1 0 0 cm
-/Document/R5 BDC
-q
-0 0 2769.4 2033.78 re W n
-0 0 0 0 K
-0 0 0 0 k
-763.895 1344.86 m
-806.582 1387.05 806.09 1455.02 762.996 1496.75 c
-719.82 1538.36 650.25 1537.87 607.645 1495.59 c
-565.051 1453.39 565.453 1385.52 608.633 1343.8 c
-651.82 1302.16 721.27 1302.65 763.895 1344.86 c
+1 -1 scale 0 -203.379 translate
+pgsv
+[1 0 0 1 0 0 ]ct
+gsave
+np
+gsave
+0 0 mo
+0 203.379 li
+276.939 203.379 li
+276.939 0 li
+cp
+clp
+76.3896 68.8921 mo
+80.6582 64.6733 80.6094 57.876 76.2998 53.7031 cv
+71.9824 49.542 65.0254 49.5913 60.7646 53.8193 cv
+56.5054 58.0391 56.5454 64.8262 60.8633 68.998 cv
+65.1821 73.1621 72.1274 73.1133 76.3896 68.8921 cv
+false sop
+/0
+[/DeviceCMYK] /CSA add_res
+0 0 0 0 cmyk
f
-/R7 gs
-19.9182 w
-4 M
-/R9 cs
-1 scn
-/R9 CS
-1 SCN
-763.895 1344.86 m
-806.582 1387.05 806.09 1455.02 762.996 1496.75 c
-719.82 1538.36 650.25 1537.87 607.645 1495.59 c
-565.051 1453.39 565.453 1385.52 608.633 1343.8 c
-651.82 1302.16 721.27 1302.65 763.895 1344.86 c
-h
-S
-611.477 1498.85 m
-668.375 1554.95 742.355 1518.06 742.012 1504 c
-770.492 1414.57 702.438 1378.34 v
-634.195 1342.02 599.727 1369.02 590.668 1372.13 c
-545.941 1434.25 611.477 1498.85 v
+1.99182 lw
+0 lc
+0 lj
+4 ml
+[] 0 dsh
+true sadj
+76.3896 68.8921 mo
+80.6582 64.6733 80.6094 57.876 76.2998 53.7031 cv
+71.9824 49.542 65.0254 49.5913 60.7646 53.8193 cv
+56.5054 58.0391 56.5454 64.8262 60.8633 68.998 cv
+65.1821 73.1621 72.1274 73.1133 76.3896 68.8921 cv
+76.3896 68.8921 li
+cp
+/0
+<<
+/Name (PANTONE 307 C)
+/CSA /0 get_csa_by_name
+/MappedCSA /0 /CSA get_res
+/TintMethod /Subtractive
+/TintProc null
+/NComponents 4
+/Components [ 1 .501961 .192157 .0235294 ]
+>>
+/CSD add_res
+1 /0 /CSD get_res sepcs
+1 sep
+@
+61.1479 53.4932 mo
+66.8379 47.8833 74.2358 51.5723 74.2017 52.978 cv
+74.2012 52.978 77.0493 61.9214 70.2441 65.5444 cv
+63.4199 69.1763 59.9731 66.4761 59.0669 66.165 cv
+59.0669 66.165 54.5942 59.9531 61.1479 53.4932 cv
f
-2582.72 1112.02 m
-2569.91 1119.36 2559.41 1177.22 2541.57 1189.81 c
-2535.49 1183.28 2503.46 1164.24 2469.55 1194.77 c
-2398.87 1258.57 2323.03 1353.8 2293.36 1483.24 c
-2293.36 1483.09 2151.97 1483.51 2151.97 1483.24 c
-2118.09 1292.32 1928.95 1153.36 1857.03 1112.02 c
-1809.78 1084.93 1772.72 1068.67 1716.57 1061.91 c
-1662.58 1055.38 1562.74 1077.48 1491.54 1124.23 c
-1435.26 1161.23 1424.63 1218.23 1434.44 1267.79 c
-1444.71 1320.23 1506.24 1338.87 1567.66 1331.35 c
-1558 1336.55 1478.06 1445.29 1314.15 1370.75 c
-1199.38 1318.48 1053.72 1071.08 668.672 1071.08 c
-492.34 1066.04 370.266 1085.88 v
-248.148 1105.84 173.832 1150.97 y
-672.797 805.672 1256.43 805.672 v
-2028.54 805.672 2640.48 1078.98 2582.72 1112.02 c
+258.271 92.1763 mo
+256.992 91.4424 255.941 85.6563 254.158 84.397 cv
+253.549 85.0503 250.346 86.9541 246.955 83.9014 cv
+239.887 77.521 232.303 67.998 229.336 55.0542 cv
+229.336 55.0693 215.197 55.0273 215.197 55.0542 cv
+211.809 74.146 192.895 88.042 185.703 92.1763 cv
+180.979 94.8853 177.271 96.5112 171.658 97.187 cv
+166.258 97.8403 156.273 95.6304 149.154 90.9551 cv
+143.525 87.2554 142.463 81.5552 143.443 76.5991 cv
+144.471 71.355 150.625 69.4912 156.766 70.2432 cv
+155.801 69.7231 147.807 58.8491 131.415 66.3032 cv
+119.938 71.5303 105.372 96.27 66.8672 96.27 cv
+66.8672 96.27 49.2344 96.7739 37.0269 94.79 cv
+24.8149 92.7944 17.3833 88.2813 17.3833 88.2813 cv
+17.3833 88.2813 67.2798 122.811 125.643 122.811 cv
+202.854 122.811 264.049 95.48 258.271 92.1763 cv
f
-7.26577 w
-1 j
-2582.72 1112.02 m
-2569.91 1119.36 2559.41 1177.22 2541.57 1189.81 c
-2535.49 1183.28 2503.46 1164.24 2469.55 1194.77 c
-2398.87 1258.57 2323.03 1353.8 2293.36 1483.24 c
-2293.36 1483.09 2151.97 1483.51 2151.97 1483.24 c
-2118.09 1292.32 1928.95 1153.36 1857.03 1112.02 c
-1809.78 1084.93 1772.72 1068.67 1716.57 1061.91 c
-1662.58 1055.38 1562.74 1077.48 1491.54 1124.23 c
-1435.26 1161.23 1424.63 1218.23 1434.44 1267.79 c
-1444.71 1320.23 1506.24 1338.87 1567.66 1331.35 c
-1558 1336.55 1478.06 1445.29 1314.15 1370.75 c
-1199.38 1318.48 1053.72 1071.08 668.672 1071.08 c
-492.34 1066.04 370.266 1085.88 v
-248.148 1105.84 173.832 1150.97 y
-672.797 805.672 1256.43 805.672 v
-2028.54 805.672 2640.48 1078.98 2582.72 1112.02 c
-h
-S
-2514.22 1690.53 m
-2296.42 1877.05 1853.97 2004.68 1343.7 2004.68 c
-617.766 2004.68 29.2695 1746.43 29.2695 1427.75 c
-29.2695 1109.13 617.766 850.809 1343.7 850.809 c
-2069.59 850.809 2658.2 1109.13 2658.2 1427.75 c
-2658.2 1511.61 2617.35 1591.49 2544.06 1663.34 c
-2637.08 1663.55 l
-2721.94 1579.82 2769.4 1486.14 2769.4 1387.34 c
-2769.4 1030.31 2149.56 740.859 1384.75 740.859 c
-619.941 740.859 0 1030.31 0 1387.34 c
-0 1744.3 619.941 2033.78 1384.75 2033.78 c
-1914.09 2033.78 2374.08 1895.12 2607.05 1691.36 c
+.726577 lw
+1 lj
+258.271 92.1763 mo
+256.992 91.4424 255.941 85.6563 254.158 84.397 cv
+253.549 85.0503 250.346 86.9541 246.955 83.9014 cv
+239.887 77.521 232.303 67.998 229.336 55.0542 cv
+229.336 55.0693 215.197 55.0273 215.197 55.0542 cv
+211.809 74.146 192.895 88.042 185.703 92.1763 cv
+180.979 94.8853 177.271 96.5112 171.658 97.187 cv
+166.258 97.8403 156.273 95.6304 149.154 90.9551 cv
+143.525 87.2554 142.463 81.5552 143.443 76.5991 cv
+144.471 71.355 150.625 69.4912 156.766 70.2432 cv
+155.801 69.7231 147.807 58.8491 131.415 66.3032 cv
+119.938 71.5303 105.372 96.27 66.8672 96.27 cv
+66.8672 96.27 49.2344 96.7739 37.0269 94.79 cv
+24.8149 92.7944 17.3833 88.2813 17.3833 88.2813 cv
+17.3833 88.2813 67.2798 122.811 125.643 122.811 cv
+202.854 122.811 264.049 95.48 258.271 92.1763 cv
+258.271 92.1763 li
+cp
+@
+251.422 34.3252 mo
+229.643 15.6733 185.396 2.91016 134.37 2.91016 cv
+61.7769 2.91016 2.92725 28.7354 2.92725 60.603 cv
+2.92725 92.4653 61.7769 118.297 134.37 118.297 cv
+206.959 118.297 265.82 92.4653 265.82 60.603 cv
+265.82 52.2173 261.734 44.229 254.406 37.0444 cv
+263.709 37.0229 li
+272.193 45.396 276.939 54.7642 276.939 64.644 cv
+276.939 100.347 214.957 129.293 138.475 129.293 cv
+61.9941 129.293 0 100.347 0 64.644 cv
+0 28.9482 61.9941 0 138.475 0 cv
+191.41 0 237.408 13.8662 260.705 34.2422 cv
f
-2122.07 1563.16 m
-2112.26 1563.16 2104.27 1555.88 2104.27 1547.04 c
-2104.27 1538.09 2112.26 1530.69 2122.07 1530.69 c
-2316 1530.69 l
-2325.94 1530.69 2333.9 1538.09 2333.9 1547.04 c
-2333.9 1555.88 2325.94 1563.16 2316 1563.16 c
-2122.07 1563.16 l
+212.207 47.062 mo
+211.227 47.062 210.428 47.79 210.428 48.6743 cv
+210.428 49.5693 211.227 50.3091 212.207 50.3091 cv
+231.6 50.3091 li
+232.594 50.3091 233.391 49.5693 233.391 48.6743 cv
+233.391 47.79 232.594 47.062 231.6 47.062 cv
+212.207 47.062 li
f
-0 j
-2122.07 1563.16 m
-2112.26 1563.16 2104.27 1555.88 2104.27 1547.04 c
-2104.27 1538.09 2112.26 1530.69 2122.07 1530.69 c
-2316 1530.69 l
-2325.94 1530.69 2333.9 1538.09 2333.9 1547.04 c
-2333.9 1555.88 2325.94 1563.16 2316 1563.16 c
-2122.07 1563.16 l
-h
-S
-2410.15 1607.79 m
-2420.91 1607.79 2429.58 1615.42 2429.58 1624.76 c
-2429.58 1624.76 l
-2429.58 1634.08 2420.91 1641.67 2410.15 1641.67 c
-1737.93 1641.67 l
-1727.3 1641.67 1718.56 1634.08 1718.56 1624.76 c
-1718.56 1624.76 l
-1718.56 1615.42 1727.3 1607.79 1737.93 1607.79 c
-2410.15 1607.79 l
+0 lj
+212.207 47.062 mo
+211.227 47.062 210.428 47.79 210.428 48.6743 cv
+210.428 49.5693 211.227 50.3091 212.207 50.3091 cv
+231.6 50.3091 li
+232.594 50.3091 233.391 49.5693 233.391 48.6743 cv
+233.391 47.79 232.594 47.062 231.6 47.062 cv
+212.207 47.062 li
+212.207 47.062 li
+cp
+@
+241.016 42.5991 mo
+242.092 42.5991 242.959 41.8364 242.959 40.9023 cv
+242.959 40.9023 li
+242.959 39.9702 242.092 39.2114 241.016 39.2114 cv
+173.793 39.2114 li
+172.73 39.2114 171.855 39.9702 171.855 40.9023 cv
+171.855 40.9023 li
+171.855 41.8364 172.73 42.5991 173.793 42.5991 cv
+241.016 42.5991 li
f
-2410.15 1607.79 m
-2420.91 1607.79 2429.58 1615.42 2429.58 1624.76 c
-2429.58 1624.76 l
-2429.58 1634.08 2420.91 1641.67 2410.15 1641.67 c
-1737.93 1641.67 l
-1727.3 1641.67 1718.56 1634.08 1718.56 1624.76 c
-1718.56 1624.76 l
-1718.56 1615.42 1727.3 1607.79 1737.93 1607.79 c
-2410.15 1607.79 l
-h
-S
-2722.59 1690.88 m
-2742.17 1690.88 2758.04 1701.83 2758.04 1715.29 c
-2758.04 1715.29 l
-2758.04 1728.72 2742.17 1739.49 2722.59 1739.49 c
-481.785 1739.49 l
-462.152 1739.49 446.262 1728.72 446.262 1715.29 c
-446.262 1715.29 l
-446.262 1701.83 462.152 1690.88 481.785 1690.88 c
-2722.59 1690.88 l
+241.016 42.5991 mo
+242.092 42.5991 242.959 41.8364 242.959 40.9023 cv
+242.959 40.9023 li
+242.959 39.9702 242.092 39.2114 241.016 39.2114 cv
+173.793 39.2114 li
+172.73 39.2114 171.855 39.9702 171.855 40.9023 cv
+171.855 40.9023 li
+171.855 41.8364 172.73 42.5991 173.793 42.5991 cv
+241.016 42.5991 li
+241.016 42.5991 li
+cp
+@
+272.26 34.29 mo
+274.217 34.29 275.805 33.1953 275.805 31.8491 cv
+275.805 31.8491 li
+275.805 30.5063 274.217 29.4292 272.26 29.4292 cv
+48.1787 29.4292 li
+46.2153 29.4292 44.6265 30.5063 44.6265 31.8491 cv
+44.6265 31.8491 li
+44.6265 33.1953 46.2153 34.29 48.1787 34.29 cv
+272.26 34.29 li
f
-2722.59 1690.88 m
-2742.17 1690.88 2758.04 1701.83 2758.04 1715.29 c
-2758.04 1715.29 l
-2758.04 1728.72 2742.17 1739.49 2722.59 1739.49 c
-481.785 1739.49 l
-462.152 1739.49 446.262 1728.72 446.262 1715.29 c
-446.262 1715.29 l
-446.262 1701.83 462.152 1690.88 481.785 1690.88 c
-2722.59 1690.88 l
-h
-S
-69.3906 418.77 m
-96.457 418.77 l
-96.457 406.488 l
-96.457 396.5 101.324 390.25 112.145 390.25 c
-126.484 390.25 130.004 397.75 130.004 407.531 c
-130.004 420.219 129.195 424.398 101.051 445.82 c
-83.7305 459.148 69.3906 471.23 69.3906 491.621 c
-69.3906 516.18 84.2773 526.789 113.77 526.789 c
-128.379 526.789 138.938 523.039 145.43 518.469 c
-150.035 515.129 153.277 509.93 153.277 499.328 c
-153.277 485.172 l
-127.844 485.172 l
-127.844 497.031 l
-127.844 505.559 123.242 510.559 112.691 510.559 c
-101.586 510.559 96.457 505.77 96.457 494.109 c
-96.457 483.922 99.1563 477.672 124.047 457.699 c
-150.57 436.461 155.445 429.172 155.445 411.07 c
-155.445 387.539 143.539 374.031 111.332 374.031 c
-86.4336 374.031 69.3906 382.148 69.3906 400.871 c
-69.3906 418.77 l
+gsave
+0 203.379 mo
+276.939 203.379 li
+276.939 0 li
+0 0 li
+0 203.379 li
+cp
+clp
+272.26 34.29 mo
+274.217 34.29 275.805 33.1953 275.805 31.8491 cv
+275.805 31.8491 li
+275.805 30.5063 274.217 29.4292 272.26 29.4292 cv
+48.1787 29.4292 li
+46.2153 29.4292 44.6265 30.5063 44.6265 31.8491 cv
+44.6265 31.8491 li
+44.6265 33.1953 46.2153 34.29 48.1787 34.29 cv
+272.26 34.29 li
+272.26 34.29 li
+cp
+@
+grestore
+6.93945 161.502 mo
+9.646 161.502 li
+9.646 162.729 li
+9.646 163.729 10.1328 164.354 11.2148 164.354 cv
+12.6484 164.354 13.0005 163.604 13.0005 162.625 cv
+13.0005 161.355 12.9199 160.938 10.1055 158.797 cv
+8.37305 157.463 6.93945 156.256 6.93945 154.217 cv
+6.93945 151.76 8.42773 150.699 11.3774 150.699 cv
+12.8379 150.699 13.894 151.074 14.5435 151.531 cv
+15.0039 151.865 15.3276 152.385 15.3276 153.445 cv
+15.3276 154.861 li
+12.7847 154.861 li
+12.7847 153.676 li
+12.7847 152.822 12.3242 152.322 11.2695 152.322 cv
+10.1587 152.322 9.646 152.801 9.646 153.967 cv
+9.646 154.986 9.91602 155.611 12.4048 157.607 cv
+15.0571 159.732 15.5449 160.461 15.5449 162.271 cv
+15.5449 164.625 14.354 165.975 11.1333 165.975 cv
+8.64355 165.975 6.93945 165.164 6.93945 163.291 cv
+6.93945 161.502 li
f
-180.605 487.238 m
-180.605 508.27 189.535 526.789 226.34 526.789 c
-253.125 526.789 265.574 516.391 265.574 499.531 c
-265.574 484.539 l
-240.141 484.539 l
-240.141 494.941 l
-240.141 504.531 235.816 510.559 224.441 510.559 c
-210.371 510.559 207.66 502.852 207.66 484.75 c
-207.66 411.07 l
-207.66 393.379 214.977 390.25 223.633 390.25 c
-233.652 390.25 240.141 395.66 240.141 408.16 c
-240.141 418.57 l
-265.574 418.57 l
-265.574 401.91 l
-265.574 386.09 257.188 374.031 225.797 374.031 c
-191.699 374.031 180.605 387.969 180.605 411.281 c
-180.605 487.238 l
+18.0605 154.654 mo
+18.0605 152.551 18.9536 150.699 22.6343 150.699 cv
+25.3125 150.699 26.5576 151.738 26.5576 153.426 cv
+26.5576 154.924 li
+24.0142 154.924 li
+24.0142 153.885 li
+24.0142 152.926 23.582 152.322 22.4443 152.322 cv
+21.0371 152.322 20.7661 153.094 20.7661 154.902 cv
+20.7661 162.271 li
+20.7661 164.041 21.498 164.354 22.3633 164.354 cv
+23.3652 164.354 24.0142 163.813 24.0142 162.563 cv
+24.0142 161.521 li
+26.5576 161.521 li
+26.5576 163.188 li
+26.5576 164.77 25.7192 165.975 22.5801 165.975 cv
+19.1699 165.975 18.0605 164.582 18.0605 162.25 cv
+18.0605 154.654 li
f
-289.934 525.551 m
-316.992 525.551 l
-316.992 461.02 l
-352.98 461.02 l
-352.98 525.551 l
-380.039 525.551 l
-380.039 375.281 l
-352.98 375.281 l
-352.98 443.539 l
-316.992 443.539 l
-316.992 375.281 l
-289.934 375.281 l
-289.934 525.551 l
+28.9937 150.822 mo
+31.6992 150.822 li
+31.6992 157.275 li
+35.2983 157.275 li
+35.2983 150.822 li
+38.0039 150.822 li
+38.0039 165.85 li
+35.2983 165.85 li
+35.2983 159.023 li
+31.6992 159.023 li
+31.6992 165.85 li
+28.9937 165.85 li
+28.9937 150.822 li
f
-437.402 410.031 m
-437.402 397.121 444.98 390.25 456.078 390.25 c
-467.441 390.25 475.016 397.121 475.016 410.031 c
-475.016 488.91 l
-475.016 503.699 468.523 510.551 456.078 510.551 c
-443.902 510.551 437.402 503.699 437.402 488.91 c
-437.402 410.031 l
-h
-410.344 487.238 m
-410.344 508.27 419.27 526.789 456.078 526.789 c
-490.984 526.789 502.078 512.852 502.078 489.539 c
-502.078 413.57 l
-502.078 392.551 493.148 374.031 456.078 374.031 c
-421.438 374.031 410.344 387.969 410.344 411.281 c
-410.344 487.238 l
+41.0347 154.654 mo
+41.0347 152.551 41.9272 150.699 45.6079 150.699 cv
+49.0986 150.699 50.208 152.094 50.208 154.424 cv
+50.208 162.021 li
+50.208 164.123 49.3149 165.975 45.6079 165.975 cv
+42.144 165.975 41.0347 164.582 41.0347 162.25 cv
+41.0347 154.654 li
+43.7402 162.375 mo
+43.7402 163.666 44.498 164.354 45.6079 164.354 cv
+46.7441 164.354 47.502 163.666 47.502 162.375 cv
+47.502 154.486 li
+47.502 153.008 46.8525 152.322 45.6079 152.322 cv
+44.3906 152.322 43.7402 153.008 43.7402 154.486 cv
+43.7402 162.375 li
+43.7402 162.375 li
+cp
f
-558.633 410.031 m
-558.633 397.121 566.211 390.25 577.305 390.25 c
-588.672 390.25 596.25 397.121 596.25 410.031 c
-596.25 488.91 l
-596.25 503.699 589.75 510.551 577.305 510.551 c
-565.129 510.551 558.633 503.699 558.633 488.91 c
-558.633 410.031 l
-h
-531.566 487.238 m
-531.566 508.27 540.504 526.789 577.305 526.789 c
-612.211 526.789 623.316 512.852 623.316 489.539 c
-623.316 413.57 l
-623.316 392.551 614.379 374.031 577.305 374.031 c
-542.668 374.031 531.566 387.969 531.566 411.281 c
-531.566 487.238 l
+53.1567 154.654 mo
+53.1567 152.551 54.0508 150.699 57.731 150.699 cv
+61.2212 150.699 62.3315 152.094 62.3315 154.424 cv
+62.3315 162.021 li
+62.3315 164.123 61.438 165.975 57.731 165.975 cv
+54.2671 165.975 53.1567 164.582 53.1567 162.25 cv
+53.1567 154.654 li
+55.8638 162.375 mo
+55.8638 163.666 56.6211 164.354 57.731 164.354 cv
+58.8677 164.354 59.625 163.666 59.625 162.375 cv
+59.625 154.486 li
+59.625 153.008 58.9751 152.322 57.731 152.322 cv
+56.5132 152.322 55.8638 153.008 55.8638 154.486 cv
+55.8638 162.375 li
+55.8638 162.375 li
+cp
f
-653.613 525.539 m
-680.668 525.539 l
-680.668 392.762 l
-726.133 392.762 l
-726.133 375.281 l
-653.613 375.281 l
-653.613 525.539 l
+65.3613 150.824 mo
+68.0669 150.824 li
+68.0669 164.102 li
+72.6138 164.102 li
+72.6138 165.85 li
+65.3613 165.85 li
+65.3613 150.824 li
f
-837.617 410.031 m
-837.617 397.121 845.191 390.25 856.289 390.25 c
-867.645 390.25 875.23 397.121 875.23 410.031 c
-875.23 488.91 l
-875.23 503.699 868.734 510.551 856.289 510.551 c
-844.109 510.551 837.617 503.699 837.617 488.91 c
-837.617 410.031 l
-h
-810.551 487.238 m
-810.551 508.27 819.48 526.789 856.289 526.789 c
-891.195 526.789 902.289 512.852 902.289 489.539 c
-902.289 413.57 l
-902.289 392.551 893.363 374.031 856.289 374.031 c
-821.645 374.031 810.551 387.969 810.551 411.281 c
-810.551 487.238 l
+81.0552 154.654 mo
+81.0552 152.551 81.9482 150.699 85.6289 150.699 cv
+89.1196 150.699 90.229 152.094 90.229 154.424 cv
+90.229 162.021 li
+90.229 164.123 89.3364 165.975 85.6289 165.975 cv
+82.1646 165.975 81.0552 164.582 81.0552 162.25 cv
+81.0552 154.654 li
+83.7617 162.375 mo
+83.7617 163.666 84.519 164.354 85.6289 164.354 cv
+86.7646 164.354 87.5229 163.666 87.5229 162.375 cv
+87.5229 154.486 li
+87.5229 153.008 86.8735 152.322 85.6289 152.322 cv
+84.4111 152.322 83.7617 153.008 83.7617 154.486 cv
+83.7617 162.375 li
+83.7617 162.375 li
+cp
f
-932.594 525.539 m
-1006.2 525.539 l
-1006.2 508.07 l
-959.652 508.07 l
-959.652 461.02 l
-1003.5 461.02 l
-1003.5 443.539 l
-959.652 443.539 l
-959.652 375.281 l
-932.594 375.281 l
-932.594 525.539 l
+93.2598 150.824 mo
+100.62 150.824 li
+100.62 152.57 li
+95.9653 152.57 li
+95.9653 157.275 li
+100.35 157.275 li
+100.35 159.023 li
+95.9653 159.023 li
+95.9653 165.85 li
+93.2598 165.85 li
+93.2598 150.824 li
f
-1116.6 410.031 m
-1116.6 397.121 1124.17 390.25 1135.27 390.25 c
-1146.64 390.25 1154.21 397.121 1154.21 410.031 c
-1154.21 488.91 l
-1154.21 503.699 1147.72 510.551 1135.27 510.551 c
-1123.1 510.551 1116.6 503.699 1116.6 488.91 c
-1116.6 410.031 l
-h
-1089.54 487.238 m
-1089.54 508.27 1098.47 526.789 1135.27 526.789 c
-1170.18 526.789 1181.27 512.852 1181.27 489.539 c
-1181.27 413.57 l
-1181.27 392.551 1172.35 374.031 1135.27 374.031 c
-1100.63 374.031 1089.54 387.969 1089.54 411.281 c
-1089.54 487.238 l
+108.954 154.654 mo
+108.954 152.551 109.847 150.699 113.527 150.699 cv
+117.018 150.699 118.127 152.094 118.127 154.424 cv
+118.127 162.021 li
+118.127 164.123 117.235 165.975 113.527 165.975 cv
+110.063 165.975 108.954 164.582 108.954 162.25 cv
+108.954 154.654 li
+111.66 162.375 mo
+111.66 163.666 112.417 164.354 113.527 164.354 cv
+114.664 164.354 115.421 163.666 115.421 162.375 cv
+115.421 154.486 li
+115.421 153.008 114.772 152.322 113.527 152.322 cv
+112.31 152.322 111.66 153.008 111.66 154.486 cv
+111.66 162.375 li
+111.66 162.375 li
+cp
f
-1208.6 487.238 m
-1208.6 508.27 1217.53 526.789 1254.33 526.789 c
-1281.13 526.789 1293.57 516.391 1293.57 499.531 c
-1293.57 484.539 l
-1268.14 484.539 l
-1268.14 494.941 l
-1268.14 504.531 1263.81 510.551 1252.44 510.551 c
-1238.36 510.551 1235.66 502.852 1235.66 484.75 c
-1235.66 411.07 l
-1235.66 393.379 1242.97 390.25 1251.63 390.25 c
-1261.64 390.25 1268.14 395.66 1268.14 408.16 c
-1268.14 418.559 l
-1293.57 418.559 l
-1293.57 401.91 l
-1293.57 386.09 1285.19 374.031 1253.79 374.031 c
-1219.69 374.031 1208.6 387.969 1208.6 411.281 c
-1208.6 487.238 l
+120.86 154.654 mo
+120.86 152.551 121.753 150.699 125.433 150.699 cv
+128.113 150.699 129.357 151.738 129.357 153.426 cv
+129.357 154.924 li
+126.814 154.924 li
+126.814 153.885 li
+126.814 152.926 126.381 152.322 125.244 152.322 cv
+123.836 152.322 123.566 153.094 123.566 154.902 cv
+123.566 162.271 li
+123.566 164.041 124.297 164.354 125.163 164.354 cv
+126.164 164.354 126.814 163.813 126.814 162.563 cv
+126.814 161.521 li
+129.357 161.521 li
+129.357 163.188 li
+129.357 164.77 128.519 165.975 125.379 165.975 cv
+121.969 165.975 120.86 164.582 120.86 162.25 cv
+120.86 154.654 li
f
-1317.92 525.539 m
-1391.53 525.539 l
-1391.53 508.07 l
-1344.98 508.07 l
-1344.98 461.02 l
-1388.81 461.02 l
-1388.81 443.539 l
-1344.98 443.539 l
-1344.98 392.762 l
-1391.53 392.762 l
-1391.53 375.281 l
-1317.92 375.281 l
-1317.92 525.539 l
+131.792 150.824 mo
+139.152 150.824 li
+139.152 152.57 li
+134.498 152.57 li
+134.498 157.275 li
+138.881 157.275 li
+138.881 159.023 li
+134.498 159.023 li
+134.498 164.102 li
+139.152 164.102 li
+139.152 165.85 li
+131.792 165.85 li
+131.792 150.824 li
f
-1447.26 431.051 m
-1481.64 431.051 l
-1464.86 503.469 l
-1464.31 503.469 l
-1447.26 431.051 l
-h
-1450.24 525.539 m
-1481.64 525.539 l
-1521.42 375.281 l
-1494.35 375.281 l
-1485.42 413.57 l
-1443.2 413.57 l
-1434.28 375.281 l
-1407.22 375.281 l
-1450.24 525.539 l
+145.023 150.824 mo
+148.164 150.824 li
+152.143 165.85 li
+149.436 165.85 li
+148.543 162.021 li
+144.32 162.021 li
+143.428 165.85 li
+140.723 165.85 li
+145.023 150.824 li
+144.727 160.273 mo
+148.164 160.273 li
+146.486 153.031 li
+146.432 153.031 li
+144.727 160.273 li
+144.727 160.273 li
+cp
f
-1545.49 525.539 m
-1582.84 525.539 l
-1614.76 400.672 l
-1615.3 400.672 l
-1615.3 525.539 l
-1640.75 525.539 l
-1640.75 375.281 l
-1601.77 375.281 l
-1569.84 503.469 l
-1569.3 503.469 l
-1569.3 375.281 l
-1545.49 375.281 l
-1545.49 525.539 l
+154.549 150.824 mo
+158.285 150.824 li
+161.477 163.311 li
+161.529 163.311 li
+161.529 150.824 li
+164.076 150.824 li
+164.076 165.85 li
+160.178 165.85 li
+156.984 153.031 li
+156.93 153.031 li
+156.93 165.85 li
+154.549 165.85 li
+154.549 150.824 li
f
-1756.32 431.051 m
-1790.69 431.051 l
-1773.91 503.469 l
-1773.36 503.469 l
-1756.32 431.051 l
-h
-1759.3 525.539 m
-1790.69 525.539 l
-1830.47 375.281 l
-1803.39 375.281 l
-1794.48 413.57 l
-1752.25 413.57 l
-1743.33 375.281 l
-1716.28 375.281 l
-1759.3 525.539 l
+175.93 150.824 mo
+179.068 150.824 li
+183.047 165.85 li
+180.34 165.85 li
+179.447 162.021 li
+175.225 162.021 li
+174.334 165.85 li
+171.629 165.85 li
+175.93 150.824 li
+175.633 160.273 mo
+179.068 160.273 li
+177.391 153.031 li
+177.336 153.031 li
+175.633 160.273 li
+175.633 160.273 li
+cp
f
-1854.54 525.539 m
-1891.89 525.539 l
-1923.81 400.672 l
-1924.36 400.672 l
-1924.36 525.539 l
-1949.8 525.539 l
-1949.8 375.281 l
-1910.84 375.281 l
-1878.89 503.469 l
-1878.34 503.469 l
-1878.34 375.281 l
-1854.54 375.281 l
-1854.54 525.539 l
+185.455 150.824 mo
+189.189 150.824 li
+192.381 163.311 li
+192.436 163.311 li
+192.436 150.824 li
+194.98 150.824 li
+194.98 165.85 li
+191.084 165.85 li
+187.889 153.031 li
+187.834 153.031 li
+187.834 165.85 li
+185.455 165.85 li
+185.455 150.824 li
f
-2007.97 392.762 m
-2020.96 392.762 l
-2040.99 392.762 2044.77 400.871 2044.77 426.68 c
-2044.77 478.289 l
-2044.77 500.57 2041.79 508.07 2018.81 508.07 c
-2007.97 508.07 l
-2007.97 392.762 l
-h
-1980.92 525.539 m
-2024.5 525.539 l
-2068.33 525.539 2071.85 514.301 2071.85 470.59 c
-2071.85 425.852 l
-2071.85 387.328 2062.91 375.281 2020.16 375.281 c
-1980.92 375.281 l
-1980.92 525.539 l
+198.092 150.824 mo
+202.451 150.824 li
+206.834 150.824 207.186 151.947 207.186 156.318 cv
+207.186 160.793 li
+207.186 164.645 206.291 165.85 202.016 165.85 cv
+198.092 165.85 li
+198.092 150.824 li
+200.797 164.102 mo
+202.096 164.102 li
+204.1 164.102 204.477 163.291 204.477 160.711 cv
+204.477 155.549 li
+204.477 153.32 204.18 152.57 201.881 152.57 cv
+200.797 152.57 li
+200.797 164.102 li
+200.797 164.102 li
+cp
f
-2163.56 525.539 m
-2237.19 525.539 l
-2237.19 508.07 l
-2190.63 508.07 l
-2190.63 461.02 l
-2234.47 461.02 l
-2234.47 443.539 l
-2190.63 443.539 l
-2190.63 392.762 l
-2237.19 392.762 l
-2237.19 375.281 l
-2163.56 375.281 l
-2163.56 525.539 l
+216.355 150.824 mo
+223.719 150.824 li
+223.719 152.57 li
+219.063 152.57 li
+219.063 157.275 li
+223.447 157.275 li
+223.447 159.023 li
+219.063 159.023 li
+219.063 164.102 li
+223.719 164.102 li
+223.719 165.85 li
+216.355 165.85 li
+216.355 150.824 li
f
-2292.92 431.051 m
-2327.29 431.051 l
-2310.5 503.469 l
-2309.97 503.469 l
-2292.92 431.051 l
-h
-2295.9 525.539 m
-2327.29 525.539 l
-2367.08 375.281 l
-2340 375.281 l
-2331.07 413.57 l
-2288.85 413.57 l
-2279.93 375.281 l
-2252.86 375.281 l
-2295.9 525.539 l
+229.59 150.824 mo
+232.729 150.824 li
+236.709 165.85 li
+234 165.85 li
+233.107 162.021 li
+228.885 162.021 li
+227.994 165.85 li
+225.287 165.85 li
+229.59 150.824 li
+229.293 160.273 mo
+232.729 160.273 li
+231.051 153.031 li
+230.998 153.031 li
+229.293 160.273 li
+229.293 160.273 li
+cp
f
-2418.19 458.121 m
-2425.24 458.121 l
-2446.62 458.121 2449.59 461.23 2449.59 483.711 c
-2449.59 505.98 2447.96 508.07 2431.19 508.07 c
-2418.19 508.07 l
-2418.19 458.121 l
-h
-2391.14 525.539 m
-2433.08 525.539 l
-2472.6 525.539 2476.65 517.43 2476.65 484.539 c
-2476.65 464.352 2473.15 455.609 2450.94 450.41 c
-2450.94 450 l
-2469.33 448.531 2475.56 441.262 2475.56 427.102 c
-2475.56 394.422 l
-2475.56 389.012 2475.56 381.512 2477.19 375.281 c
-2451.75 375.281 l
-2449.05 379.012 2448.51 382.77 2448.51 388.801 c
-2448.51 422.73 l
-2448.51 436.871 2445.27 440.641 2427.4 440.641 c
-2418.19 440.641 l
-2418.19 375.281 l
-2391.14 375.281 l
-2391.14 525.539 l
+239.113 150.824 mo
+243.309 150.824 li
+247.26 150.824 247.666 151.635 247.666 154.924 cv
+247.666 156.943 247.314 157.816 245.094 158.338 cv
+245.094 158.379 li
+246.934 158.525 247.557 159.252 247.557 160.668 cv
+247.557 163.936 li
+247.557 164.477 247.557 165.227 247.719 165.85 cv
+245.176 165.85 li
+244.904 165.477 244.852 165.102 244.852 164.498 cv
+244.852 161.105 li
+244.852 159.691 244.527 159.314 242.74 159.314 cv
+241.818 159.314 li
+241.818 165.85 li
+239.113 165.85 li
+239.113 150.824 li
+241.818 157.566 mo
+242.523 157.566 li
+244.662 157.566 244.959 157.256 244.959 155.008 cv
+244.959 152.779 244.797 152.57 243.119 152.57 cv
+241.818 152.57 li
+241.818 157.566 li
+241.818 157.566 li
+cp
f
-2489.13 525.539 m
-2581.14 525.539 l
-2581.14 508.07 l
-2548.67 508.07 l
-2548.67 375.281 l
-2521.6 375.281 l
-2521.6 508.07 l
-2489.13 508.07 l
-2489.13 525.539 l
+248.914 150.824 mo
+258.113 150.824 li
+258.113 152.57 li
+254.867 152.57 li
+254.867 165.85 li
+252.16 165.85 li
+252.16 152.57 li
+248.914 152.57 li
+248.914 150.824 li
f
-2603.86 525.539 m
-2630.91 525.539 l
-2630.91 461.02 l
-2666.91 461.02 l
-2666.91 525.539 l
-2693.99 525.539 l
-2693.99 375.281 l
-2666.91 375.281 l
-2666.91 443.539 l
-2630.91 443.539 l
-2630.91 375.281 l
-2603.86 375.281 l
-2603.86 525.539 l
+260.387 150.824 mo
+263.092 150.824 li
+263.092 157.275 li
+266.691 157.275 li
+266.691 150.824 li
+269.398 150.824 li
+269.398 165.85 li
+266.691 165.85 li
+266.691 159.023 li
+263.092 159.023 li
+263.092 165.85 li
+260.387 165.85 li
+260.387 150.824 li
f
-69.9219 197.359 m
-100.93 197.359 l
-100.93 185.07 l
-100.93 175.082 106.516 168.832 118.91 168.832 c
-135.355 168.832 139.391 176.332 139.391 186.102 c
-139.391 198.809 138.457 202.969 106.207 224.41 c
-86.3516 237.73 69.9219 249.801 69.9219 270.199 c
-69.9219 294.762 86.9727 305.371 120.781 305.371 c
-137.52 305.371 149.617 301.621 157.066 297.051 c
-162.336 293.711 166.055 288.512 166.055 277.91 c
-166.055 263.75 l
-136.902 263.75 l
-136.902 275.609 l
-136.902 284.141 131.637 289.148 119.535 289.148 c
-106.82 289.148 100.93 284.352 100.93 272.691 c
-100.93 262.5 104.031 256.262 132.566 236.281 c
-162.961 215.051 168.539 207.762 168.539 189.66 c
-168.539 166.141 154.895 152.602 117.984 152.602 c
-89.457 152.602 69.9219 160.73 69.9219 179.449 c
-69.9219 197.359 l
+6.99219 183.643 mo
+10.0933 183.643 li
+10.0933 184.871 li
+10.0933 185.869 10.6519 186.494 11.8911 186.494 cv
+13.5356 186.494 13.9395 185.744 13.9395 184.768 cv
+13.9395 183.498 13.8457 183.082 10.6211 180.938 cv
+8.63525 179.605 6.99219 178.398 6.99219 176.357 cv
+6.99219 173.902 8.69727 172.842 12.0781 172.842 cv
+13.7524 172.842 14.9619 173.217 15.707 173.674 cv
+16.2339 174.008 16.606 174.527 16.606 175.588 cv
+16.606 177.004 li
+13.6904 177.004 li
+13.6904 175.816 li
+13.6904 174.965 13.1641 174.463 11.9536 174.463 cv
+10.6821 174.463 10.0933 174.943 10.0933 176.109 cv
+10.0933 177.129 10.4033 177.752 13.2568 179.75 cv
+16.2964 181.873 16.854 182.602 16.854 184.412 cv
+16.854 186.764 15.4897 188.117 11.7988 188.117 cv
+8.9458 188.117 6.99219 187.305 6.99219 185.434 cv
+6.99219 183.643 li
f
-196.461 265.832 m
-196.461 286.852 206.688 305.371 248.867 305.371 c
-279.57 305.371 293.832 294.969 293.832 278.109 c
-293.832 263.121 l
-264.684 263.121 l
-264.684 273.531 l
-264.684 283.102 259.727 289.148 246.695 289.148 c
-230.57 289.148 227.465 281.449 227.465 263.332 c
-227.465 189.66 l
-227.465 171.961 235.84 168.832 245.766 168.832 c
-257.234 168.832 264.684 174.25 264.684 186.738 c
-264.684 197.141 l
-293.832 197.141 l
-293.832 180.488 l
-293.832 164.68 284.223 152.602 248.254 152.602 c
-209.164 152.602 196.461 166.551 196.461 189.871 c
-196.461 265.832 l
+19.6465 176.795 mo
+19.6465 174.693 20.6689 172.842 24.8867 172.842 cv
+27.957 172.842 29.3833 173.881 29.3833 175.566 cv
+29.3833 177.066 li
+26.4688 177.066 li
+26.4688 176.025 li
+26.4688 175.068 25.9731 174.463 24.6699 174.463 cv
+23.0571 174.463 22.7466 175.232 22.7466 177.045 cv
+22.7466 184.412 li
+22.7466 186.182 23.584 186.494 24.5767 186.494 cv
+25.7236 186.494 26.4688 185.953 26.4688 184.705 cv
+26.4688 183.664 li
+29.3833 183.664 li
+29.3833 185.33 li
+29.3833 186.91 28.4224 188.117 24.8257 188.117 cv
+20.9165 188.117 19.6465 186.723 19.6465 184.391 cv
+19.6465 176.795 li
f
-319.898 153.852 31.0039 150.277 re
+31.9897 187.992 mo
+35.0903 187.992 li
+35.0903 172.965 li
+31.9897 172.965 li
+31.9897 187.992 li
+cp
f
-384.711 304.129 m
-469.07 304.121 l
-469.07 286.641 l
-415.727 286.641 l
-415.727 239.609 l
-465.961 239.609 l
-465.961 222.109 l
-415.727 222.109 l
-415.727 171.332 l
-469.07 171.332 l
-469.07 153.852 l
-384.711 153.852 l
-384.711 304.129 l
+38.4712 172.965 mo
+46.9072 172.967 li
+46.9072 174.715 li
+41.5728 174.715 li
+41.5728 179.418 li
+46.5962 179.418 li
+46.5962 181.168 li
+41.5728 181.168 li
+41.5728 186.244 li
+46.9072 186.244 li
+46.9072 187.992 li
+38.4712 187.992 li
+38.4712 172.965 li
f
-494.195 304.121 m
-536.988 304.121 l
-573.586 179.238 l
-574.203 179.238 l
-574.203 304.121 l
-603.355 304.121 l
-603.355 153.852 l
-558.695 153.852 l
-522.102 282.07 l
-521.484 282.07 l
-521.484 153.852 l
-494.195 153.852 l
-494.195 304.121 l
+49.4199 172.967 mo
+53.6992 172.967 li
+57.3589 185.455 li
+57.4204 185.455 li
+57.4204 172.967 li
+60.3354 172.967 li
+60.3354 187.992 li
+55.8696 187.992 li
+52.2104 175.172 li
+52.1484 175.172 li
+52.1484 187.992 li
+49.4199 187.992 li
+49.4199 172.967 li
f
-634.688 265.832 m
-634.688 286.852 644.922 305.371 687.102 305.371 c
-717.809 305.371 732.07 294.969 732.07 278.109 c
-732.07 263.121 l
-702.922 263.121 l
-702.922 273.531 l
-702.922 283.102 697.953 289.148 684.938 289.148 c
-668.805 289.148 665.703 281.441 665.703 263.332 c
-665.703 189.66 l
-665.703 171.961 674.082 168.832 684 168.832 c
-695.48 168.832 702.922 174.25 702.922 186.738 c
-702.922 197.141 l
-732.07 197.141 l
-732.07 180.488 l
-732.07 164.68 722.457 152.602 686.48 152.602 c
-647.406 152.602 634.688 166.551 634.688 189.871 c
-634.688 265.832 l
+63.4692 176.795 mo
+63.4692 174.693 64.4927 172.842 68.7104 172.842 cv
+71.7813 172.842 73.207 173.881 73.207 175.566 cv
+73.207 177.066 li
+70.2925 177.066 li
+70.2925 176.025 li
+70.2925 175.068 69.7954 174.463 68.4941 174.463 cv
+66.8809 174.463 66.5703 175.234 66.5703 177.045 cv
+66.5703 184.412 li
+66.5703 186.182 67.4082 186.494 68.4004 186.494 cv
+69.5483 186.494 70.2925 185.953 70.2925 184.705 cv
+70.2925 183.664 li
+73.207 183.664 li
+73.207 185.33 li
+73.207 186.91 72.2461 188.117 68.6479 188.117 cv
+64.7407 188.117 63.4692 186.723 63.4692 184.391 cv
+63.4692 176.795 li
f
-759.059 304.121 m
-843.414 304.121 l
-843.414 286.641 l
-790.066 286.641 l
-790.066 239.609 l
-840.313 239.609 l
-840.313 222.109 l
-790.066 222.109 l
-790.066 171.332 l
-843.414 171.332 l
-843.414 153.852 l
-759.059 153.852 l
-759.059 304.121 l
+75.9063 172.967 mo
+84.3418 172.967 li
+84.3418 174.715 li
+79.0068 174.715 li
+79.0068 179.418 li
+84.0317 179.418 li
+84.0317 181.168 li
+79.0068 181.168 li
+79.0068 186.244 li
+84.3418 186.244 li
+84.3418 187.992 li
+75.9063 187.992 li
+75.9063 172.967 li
f
-964.414 209.629 m
-1003.79 209.629 l
-984.566 282.07 l
-983.949 282.07 l
-964.414 209.629 l
-h
-967.82 304.121 m
-1003.79 304.121 l
-1049.38 153.852 l
-1018.37 153.852 l
-1008.14 192.148 l
-959.758 192.148 l
-949.527 153.852 l
-918.508 153.852 l
-967.82 304.121 l
+96.7822 172.967 mo
+100.379 172.967 li
+104.938 187.992 li
+101.837 187.992 li
+100.814 184.164 li
+95.9761 184.164 li
+94.9526 187.992 li
+91.8511 187.992 li
+96.7822 172.967 li
+96.4414 182.416 mo
+100.379 182.416 li
+98.4565 175.172 li
+98.395 175.172 li
+96.4414 182.416 li
+96.4414 182.416 li
+cp
f
-1076.06 304.121 m
-1118.86 304.121 l
-1155.45 179.238 l
-1156.07 179.238 l
-1156.07 304.121 l
-1185.22 304.121 l
-1185.22 153.852 l
-1140.57 153.852 l
-1103.97 282.07 l
-1103.35 282.07 l
-1103.35 153.852 l
-1076.06 153.852 l
-1076.06 304.121 l
+107.606 172.967 mo
+111.886 172.967 li
+115.545 185.455 li
+115.607 185.455 li
+115.607 172.967 li
+118.522 172.967 li
+118.522 187.992 li
+114.057 187.992 li
+110.397 175.172 li
+110.335 175.172 li
+110.335 187.992 li
+107.606 187.992 li
+107.606 172.967 li
f
-1250.98 171.332 m
-1265.87 171.332 l
-1288.82 171.332 1293.16 179.449 1293.16 205.262 c
-1293.16 256.879 l
-1293.16 279.148 1289.75 286.641 1263.39 286.641 c
-1250.98 286.641 l
-1250.98 171.332 l
-h
-1219.97 304.121 m
-1269.9 304.121 l
-1320.14 304.121 1324.17 292.879 1324.17 249.18 c
-1324.17 204.43 l
-1324.17 165.93 1313.94 153.852 1264.94 153.852 c
-1219.97 153.852 l
-1219.97 304.121 l
+121.997 172.967 mo
+126.99 172.967 li
+132.014 172.967 132.417 174.09 132.417 178.461 cv
+132.417 182.936 li
+132.417 186.785 131.394 187.992 126.494 187.992 cv
+121.997 187.992 li
+121.997 172.967 li
+125.098 186.244 mo
+126.587 186.244 li
+128.882 186.244 129.316 185.434 129.316 182.852 cv
+129.316 177.689 li
+129.316 175.463 128.975 174.715 126.339 174.715 cv
+125.098 174.715 li
+125.098 186.244 li
+125.098 186.244 li
+cp
f
-1406.41 304.121 m
-1511.85 304.121 l
-1511.85 286.641 l
-1474.63 286.641 l
-1474.63 153.852 l
-1443.63 153.852 l
-1443.63 286.641 l
-1406.41 286.641 l
-1406.41 304.121 l
+140.641 172.967 mo
+151.186 172.967 li
+151.186 174.715 li
+147.463 174.715 li
+147.463 187.992 li
+144.363 187.992 li
+144.363 174.715 li
+140.641 174.715 li
+140.641 172.967 li
f
-1536.99 304.121 m
-1621.34 304.121 l
-1621.34 286.641 l
-1567.99 286.641 l
-1567.99 239.609 l
-1618.23 239.609 l
-1618.23 222.109 l
-1567.99 222.109 l
-1567.99 171.332 l
-1621.34 171.332 l
-1621.34 153.852 l
-1536.99 153.852 l
-1536.99 304.121 l
+153.699 172.967 mo
+162.135 172.967 li
+162.135 174.715 li
+156.799 174.715 li
+156.799 179.418 li
+161.822 179.418 li
+161.822 181.168 li
+156.799 181.168 li
+156.799 186.244 li
+162.135 186.244 li
+162.135 187.992 li
+153.699 187.992 li
+153.699 172.967 li
f
-1643.05 265.832 m
-1643.05 286.852 1653.27 305.371 1695.44 305.371 c
-1726.16 305.371 1740.42 294.969 1740.42 278.109 c
-1740.42 263.121 l
-1711.26 263.121 l
-1711.26 273.531 l
-1711.26 283.102 1706.3 289.148 1693.29 289.148 c
-1677.15 289.148 1674.05 281.441 1674.05 263.332 c
-1674.05 189.66 l
-1674.05 171.961 1682.42 168.832 1692.36 168.832 c
-1703.81 168.832 1711.26 174.25 1711.26 186.738 c
-1711.26 197.141 l
-1740.42 197.141 l
-1740.42 180.488 l
-1740.42 164.68 1730.81 152.602 1694.85 152.602 c
-1655.76 152.602 1643.05 166.551 1643.05 189.871 c
-1643.05 265.832 l
+164.305 176.795 mo
+164.305 174.693 165.328 172.842 169.545 172.842 cv
+172.617 172.842 174.043 173.881 174.043 175.566 cv
+174.043 177.066 li
+171.127 177.066 li
+171.127 176.025 li
+171.127 175.068 170.631 174.463 169.33 174.463 cv
+167.715 174.463 167.404 175.234 167.404 177.045 cv
+167.404 184.412 li
+167.404 186.182 168.242 186.494 169.236 186.494 cv
+170.381 186.494 171.127 185.953 171.127 184.705 cv
+171.127 183.664 li
+174.043 183.664 li
+174.043 185.33 li
+174.043 186.91 173.082 188.117 169.484 188.117 cv
+165.576 188.117 164.305 186.723 164.305 184.391 cv
+164.305 176.795 li
f
-1767.43 304.121 m
-1798.41 304.121 l
-1798.41 239.609 l
-1839.68 239.609 l
-1839.68 304.121 l
-1870.7 304.121 l
-1870.7 153.852 l
-1839.68 153.852 l
-1839.68 222.109 l
-1798.41 222.109 l
-1798.41 153.852 l
-1767.43 153.852 l
-1767.43 304.121 l
+176.744 172.967 mo
+179.842 172.967 li
+179.842 179.418 li
+183.969 179.418 li
+183.969 172.967 li
+187.07 172.967 li
+187.07 187.992 li
+183.969 187.992 li
+183.969 181.168 li
+179.842 181.168 li
+179.842 187.992 li
+176.744 187.992 li
+176.744 172.967 li
f
-1905.42 304.121 m
-1948.25 304.121 l
-1984.84 179.238 l
-1985.43 179.238 l
-1985.43 304.121 l
-2014.61 304.121 l
-2014.61 153.852 l
-1969.96 153.852 l
-1933.33 282.07 l
-1932.74 282.07 l
-1932.74 153.852 l
-1905.42 153.852 l
-1905.42 304.121 l
+190.543 172.967 mo
+194.826 172.967 li
+198.484 185.455 li
+198.543 185.455 li
+198.543 172.967 li
+201.461 172.967 li
+201.461 187.992 li
+196.996 187.992 li
+193.334 175.172 li
+193.273 175.172 li
+193.273 187.992 li
+190.543 187.992 li
+190.543 172.967 li
f
-2079.43 188.609 m
-2079.43 175.699 2088.11 168.832 2100.83 168.832 c
-2113.84 168.832 2122.52 175.699 2122.52 188.609 c
-2122.52 267.488 l
-2122.52 282.27 2115.08 289.148 2100.83 289.148 c
-2086.87 289.148 2079.43 282.27 2079.43 267.488 c
-2079.43 188.609 l
-h
-2048.4 265.832 m
-2048.4 286.852 2058.65 305.371 2100.83 305.371 c
-2140.83 305.371 2153.55 291.43 2153.55 268.109 c
-2153.55 192.148 l
-2153.55 171.129 2143.31 152.602 2100.83 152.602 c
-2061.12 152.602 2048.4 166.551 2048.4 189.871 c
-2048.4 265.832 l
+204.84 176.795 mo
+204.84 174.693 205.865 172.842 210.084 172.842 cv
+214.084 172.842 215.355 174.234 215.355 176.566 cv
+215.355 184.164 li
+215.355 186.266 214.332 188.117 210.084 188.117 cv
+206.111 188.117 204.84 186.723 204.84 184.391 cv
+204.84 176.795 li
+207.943 184.518 mo
+207.943 185.809 208.811 186.494 210.084 186.494 cv
+211.385 186.494 212.252 185.809 212.252 184.518 cv
+212.252 176.629 li
+212.252 175.15 211.508 174.463 210.084 174.463 cv
+208.688 174.463 207.943 175.15 207.943 176.629 cv
+207.943 184.518 li
+207.943 184.518 li
+cp
f
-2187.37 304.121 m
-2218.36 304.121 l
-2218.36 171.332 l
-2270.46 171.332 l
-2270.46 153.852 l
-2187.37 153.852 l
-2187.37 304.121 l
+218.736 172.967 mo
+221.836 172.967 li
+221.836 186.244 li
+227.047 186.244 li
+227.047 187.992 li
+218.736 187.992 li
+218.736 172.967 li
f
-2326.92 188.609 m
-2326.92 175.699 2335.59 168.832 2348.33 168.832 c
-2361.34 168.832 2370.02 175.699 2370.02 188.609 c
-2370.02 267.488 l
-2370.02 282.27 2362.58 289.148 2348.33 289.148 c
-2334.37 289.148 2326.92 282.27 2326.92 267.488 c
-2326.92 188.609 l
-h
-2295.9 265.832 m
-2295.9 286.852 2306.15 305.371 2348.33 305.371 c
-2388.32 305.371 2401.05 291.43 2401.05 268.109 c
-2401.05 192.148 l
-2401.05 171.129 2390.81 152.602 2348.33 152.602 c
-2308.62 152.602 2295.9 166.551 2295.9 189.871 c
-2295.9 265.832 l
+229.59 176.795 mo
+229.59 174.693 230.615 172.842 234.834 172.842 cv
+238.832 172.842 240.105 174.234 240.105 176.566 cv
+240.105 184.164 li
+240.105 186.266 239.082 188.117 234.834 188.117 cv
+230.861 188.117 229.59 186.723 229.59 184.391 cv
+229.59 176.795 li
+232.691 184.518 mo
+232.691 185.809 233.559 186.494 234.834 186.494 cv
+236.135 186.494 237.002 185.809 237.002 184.518 cv
+237.002 176.629 li
+237.002 175.15 236.258 174.463 234.834 174.463 cv
+233.438 174.463 232.691 175.15 232.691 176.629 cv
+232.691 184.518 li
+232.691 184.518 li
+cp
f
-2507.12 264.371 m
-2507.12 272.07 l
-2507.12 282.691 2499.37 289.148 2487.25 289.148 c
-2472.99 289.148 2465.85 280.391 2465.85 264.371 c
-2465.85 188.609 l
-2465.85 176.531 2474.55 168.832 2487.25 168.832 c
-2495.94 168.832 2503.07 169.672 2507.12 170.301 c
-2507.12 214.41 l
-2486.66 214.41 l
-2486.66 231.898 l
-2538.11 231.898 l
-2538.11 156.359 l
-2526.03 154.48 2504.63 152.602 2486.95 152.602 c
-2447.57 152.602 2434.87 166.551 2434.87 189.871 c
-2434.87 265.832 l
-2434.87 293.93 2447.57 305.371 2487.56 305.371 c
-2520.77 305.371 2538.11 297.262 2538.11 278.109 c
-2538.11 264.371 l
-2507.12 264.371 l
+250.713 176.941 mo
+250.713 176.172 li
+250.713 175.109 249.938 174.463 248.725 174.463 cv
+247.299 174.463 246.586 175.34 246.586 176.941 cv
+246.586 184.518 li
+246.586 185.725 247.455 186.494 248.725 186.494 cv
+249.594 186.494 250.307 186.41 250.713 186.348 cv
+250.713 181.938 li
+248.666 181.938 li
+248.666 180.188 li
+253.811 180.188 li
+253.811 187.742 li
+252.604 187.93 250.463 188.117 248.695 188.117 cv
+244.758 188.117 243.486 186.723 243.486 184.391 cv
+243.486 176.795 li
+243.486 173.984 244.758 172.842 248.756 172.842 cv
+252.078 172.842 253.811 173.652 253.811 175.566 cv
+253.811 176.941 li
+250.713 176.941 li
f
-2566.05 304.121 m
-2597.07 304.121 l
-2624.04 240.859 l
-2624.66 240.859 l
-2655.68 304.121 l
-2682.96 304.121 l
-2639.86 215.461 l
-2639.86 153.852 l
-2608.84 153.852 l
-2608.84 215.461 l
-2566.05 304.121 l
+256.605 172.967 mo
+259.707 172.967 li
+262.404 179.293 li
+262.467 179.293 li
+265.568 172.967 li
+268.297 172.967 li
+263.986 181.832 li
+263.986 187.992 li
+260.885 187.992 li
+260.885 181.832 li
+256.605 172.967 li
f
-0.42749 0.313721 0.286377 0.129395 K
-0.42749 0.313721 0.286377 0.129395 k
-97.5898 62.9219 m
-97.5898 27.7383 l
-97.5898 18.3711 100.805 13.1289 107.32 13.1289 c
-113.938 13.1289 117.148 17.9219 117.148 27.7383 c
-117.148 62.9219 l
-133.773 62.9219 l
-133.773 28.7617 l
-133.773 9.64063 124.223 0 106.863 0 c
-89.9727 0 80.9609 9.28125 80.9609 29.1211 c
-80.9609 62.9219 l
-97.5898 62.9219 l
+9.75928 197.086 mo
+9.75928 200.604 li
+9.75928 201.541 10.0806 202.064 10.7324 202.064 cv
+11.394 202.064 11.7148 201.586 11.7148 200.604 cv
+11.7148 197.086 li
+13.3774 197.086 li
+13.3774 200.502 li
+13.3774 202.414 12.4224 203.379 10.6865 203.379 cv
+8.99756 203.379 8.09619 202.449 8.09619 200.467 cv
+8.09619 197.086 li
+9.75928 197.086 li
+.42749 .313721 .286377 .129395 cmyk
f
-181.195 1.01172 m
-181.195 62.9219 l
-200.758 62.9219 l
-210.582 43.8984 l
-213.984 37.7617 217.563 29.4805 220.316 22.2305 c
-220.59 22.2305 l
-219.68 30.4102 219.309 39.0391 219.309 48.2188 c
-219.309 62.9219 l
-234.469 62.9219 l
-234.469 1.01172 l
-217.012 1.01172 l
-206.449 21.5898 l
-203.051 28.1094 199.016 36.4609 196.07 43.8984 c
-195.707 43.8984 l
-196.16 35.5508 196.348 26.2695 196.348 16.2617 c
-196.348 1.01172 l
-181.195 1.01172 l
+18.1196 203.277 mo
+18.1196 197.086 li
+20.0762 197.086 li
+21.0586 198.988 li
+21.3984 199.602 21.7563 200.43 22.0317 201.154 cv
+22.0591 201.154 li
+21.9683 200.338 21.9312 199.475 21.9312 198.557 cv
+21.9312 197.086 li
+23.4473 197.086 li
+23.4473 203.277 li
+21.7012 203.277 li
+20.645 201.219 li
+20.3052 200.566 19.9019 199.732 19.6074 198.988 cv
+19.5708 198.988 li
+19.6162 199.822 19.6353 200.752 19.6353 201.752 cv
+19.6353 203.277 li
+18.1196 203.277 li
f
-282.066 1.01172 16.6211 61.9102 re
+28.2065 203.277 mo
+29.8687 203.277 li
+29.8687 197.086 li
+28.2065 197.086 li
+28.2065 203.277 li
+cp
f
-361.25 1.01172 m
-341.598 62.9219 l
-359.785 62.9219 l
-366.402 38.5703 l
-368.324 31.6016 369.98 24.8008 371.543 16.8984 c
-371.723 16.8984 l
-373.191 24.4219 374.938 31.6016 376.773 38.3008 c
-383.477 62.9219 l
-401.113 62.9219 l
-380.906 1.01172 l
-361.25 1.01172 l
+36.125 203.277 mo
+34.1602 197.086 li
+35.9785 197.086 li
+36.6406 199.521 li
+36.8325 200.219 36.998 200.898 37.1543 201.688 cv
+37.1724 201.688 li
+37.3193 200.936 37.4941 200.219 37.6777 199.549 cv
+38.3481 197.086 li
+40.1113 197.086 li
+38.0908 203.277 li
+36.125 203.277 li
f
-482.789 26 m
-460.563 26 l
-460.563 14.6094 l
-485.453 14.6094 l
-485.453 1.01172 l
-443.941 1.01172 l
-443.941 62.9219 l
-484.172 62.9219 l
-484.172 49.3203 l
-460.563 49.3203 l
-460.563 39.3984 l
-482.789 39.3984 l
-482.789 26 l
+48.2793 200.777 mo
+46.0566 200.777 li
+46.0566 201.918 li
+48.5454 201.918 li
+48.5454 203.277 li
+44.3945 203.277 li
+44.3945 197.086 li
+48.4175 197.086 li
+48.4175 198.445 li
+46.0566 198.445 li
+46.0566 199.438 li
+48.2793 199.438 li
+48.2793 200.777 li
f
-547.191 36.1914 m
-551.516 36.1914 l
-557.766 36.1914 561.344 39.2188 561.344 43.8086 c
-561.344 48.3984 558.305 51.0586 552.797 51.0586 c
-549.68 51.0586 548.023 50.8789 547.191 50.6992 c
-547.191 36.1914 l
-h
-530.754 62.0117 m
-535.438 62.7305 542.516 63.3789 550.77 63.3789 c
-560.238 63.3789 567.035 62.0898 571.715 58.5117 c
-575.668 55.4688 577.781 51.0586 577.781 45.0898 c
-577.781 37.3789 571.992 31.9609 567.219 30.1289 c
-567.219 29.8398 l
-571.262 28.0195 573.555 24.0586 575.113 18.75 c
-576.953 12.3984 578.98 3.39844 580.172 1.01172 c
-563.266 1.01172 l
-562.355 2.85156 560.691 7.62109 558.953 15.3516 c
-557.297 22.6914 555 24.2383 549.859 24.2383 c
-547.191 24.2383 l
-547.191 1.01172 l
-530.754 1.01172 l
-530.754 62.0117 l
+53.0757 197.178 mo
+53.5439 197.105 54.252 197.041 55.0771 197.041 cv
+56.0239 197.041 56.7036 197.17 57.1719 197.527 cv
+57.5669 197.832 57.7783 198.271 57.7783 198.869 cv
+57.7783 199.641 57.1992 200.182 56.7222 200.365 cv
+56.7222 200.395 li
+57.1265 200.576 57.356 200.973 57.5112 201.504 cv
+57.6953 202.139 57.8979 203.039 58.0176 203.277 cv
+56.3267 203.277 li
+56.2358 203.094 56.0693 202.615 55.8955 201.844 cv
+55.73 201.109 55.5 200.955 54.9858 200.955 cv
+54.7192 200.955 li
+54.7192 203.277 li
+53.0757 203.277 li
+53.0757 197.178 li
+54.7192 199.76 mo
+55.1519 199.76 li
+55.7769 199.76 56.1348 199.457 56.1348 198.998 cv
+56.1348 198.539 55.8306 198.271 55.2798 198.271 cv
+54.9683 198.271 54.8022 198.291 54.7192 198.309 cv
+54.7192 199.76 li
+54.7192 199.76 li
+cp
f
-624.648 17.5508 m
-628.406 15.6211 634.477 13.6914 640.719 13.6914 c
-646.406 13.6914 649.172 15.6211 649.172 18.75 c
-649.172 21.7695 646.406 23.4297 639.434 25.8086 c
-628.961 29.5898 621.977 35.2695 621.977 44.4492 c
-621.977 55.3906 631.266 63.832 646.875 63.832 c
-654.223 63.832 659.547 62.4609 663.59 60.7109 c
-660.102 47.3984 l
-657.434 48.6016 652.844 50.3398 646.695 50.3398 c
-641.637 50.3398 638.883 48.4883 638.883 45.7383 c
-638.883 42.6211 642.188 41.4297 650 38.4805 c
-661.109 34.3594 666.07 28.4688 666.07 19.8281 c
-666.07 9.19141 657.805 0.101563 639.703 0.101563 c
-632.266 0.101563 625.012 2.01953 621.523 3.85938 c
-624.648 17.5508 l
+62.4648 201.623 mo
+62.8408 201.816 63.4478 202.01 64.0723 202.01 cv
+64.6406 202.01 64.9175 201.816 64.9175 201.504 cv
+64.9175 201.201 64.6406 201.035 63.9438 200.797 cv
+62.8965 200.42 62.1978 199.852 62.1978 198.934 cv
+62.1978 197.84 63.127 196.994 64.6875 196.994 cv
+65.4224 196.994 65.9551 197.133 66.3594 197.307 cv
+66.0103 198.639 li
+65.7437 198.518 65.2847 198.344 64.6699 198.344 cv
+64.1641 198.344 63.8887 198.529 63.8887 198.805 cv
+63.8887 199.115 64.2192 199.234 65 199.529 cv
+66.1108 199.941 66.6074 200.531 66.6074 201.395 cv
+66.6074 202.459 65.7808 203.367 63.9707 203.367 cv
+63.2271 203.367 62.5015 203.176 62.1523 202.992 cv
+62.4648 201.623 li
f
-711.188 1.01172 16.625 61.9102 re
+71.1191 203.277 mo
+72.7817 203.277 li
+72.7817 197.086 li
+71.1191 197.086 li
+71.1191 203.277 li
+cp
f
-787.34 48.9609 m
-771.547 48.9609 l
-771.547 62.9219 l
-820.043 62.9219 l
-820.043 48.9609 l
-803.965 48.9609 l
-803.965 1.01172 l
-787.34 1.01172 l
-787.34 48.9609 l
+78.7344 198.482 mo
+77.1548 198.482 li
+77.1548 197.086 li
+82.0044 197.086 li
+82.0044 198.482 li
+80.3965 198.482 li
+80.3965 203.277 li
+78.7344 203.277 li
+78.7344 198.482 li
f
-878.203 1.01172 m
-878.203 26 l
-858.727 62.9219 l
-877.742 62.9219 l
-882.973 48.9609 l
-884.629 44.6406 885.828 41.5195 887.203 37.4688 c
-887.387 37.4688 l
-888.578 41.25 889.77 44.7305 891.332 48.9609 c
-896.387 62.9219 l
-915.121 62.9219 l
-894.828 26.6289 l
-894.828 1.01172 l
-878.203 1.01172 l
+87.8203 203.277 mo
+87.8203 200.777 li
+85.873 197.086 li
+87.7744 197.086 li
+88.2974 198.482 li
+88.4634 198.914 88.583 199.227 88.7207 199.631 cv
+88.7388 199.631 li
+88.8579 199.254 88.9771 198.904 89.1333 198.482 cv
+89.6392 197.086 li
+91.5122 197.086 li
+89.4829 200.715 li
+89.4829 203.277 li
+87.8203 203.277 li
f
-1056.52 13.1289 m
-1064.51 13.1289 1069.19 20.8516 1069.19 32.0508 c
-1069.19 42.7109 1064.42 50.7891 1056.34 50.7891 c
-1048.34 50.7891 1043.48 42.7109 1043.48 31.9609 c
-1043.38 20.8516 1048.34 13.1289 1056.34 13.1289 c
-1056.52 13.1289 l
-h
-1055.69 0 m
-1036.5 0 1025.93 14.4102 1025.93 31.6016 c
-1025.93 49.6016 1037.69 63.9297 1056.7 63.9297 c
-1076.64 63.9297 1086.73 49.1406 1086.73 32.6094 c
-1086.73 12.6797 1074.79 0 1055.78 0 c
-1055.69 0 l
+105.569 203.379 mo
+103.65 203.379 102.593 201.938 102.593 200.219 cv
+102.593 198.418 103.769 196.984 105.67 196.984 cv
+107.664 196.984 108.673 198.465 108.673 200.117 cv
+108.673 202.109 107.479 203.379 105.578 203.379 cv
+105.569 203.379 li
+105.652 202.064 mo
+106.451 202.064 106.919 201.293 106.919 200.174 cv
+106.919 199.107 106.442 198.299 105.634 198.299 cv
+104.834 198.299 104.348 199.107 104.348 200.182 cv
+104.338 201.293 104.834 202.064 105.634 202.064 cv
+105.652 202.064 li
+105.652 202.064 li
+cp
f
-1131.67 62.9219 m
-1171.44 62.9219 l
-1171.44 49.3203 l
-1148.3 49.3203 l
-1148.3 37.9414 l
-1170.06 37.9414 l
-1170.06 24.5313 l
-1148.3 24.5313 l
-1148.3 1.01172 l
-1131.67 1.01172 l
-1131.67 62.9219 l
+113.167 197.086 mo
+117.144 197.086 li
+117.144 198.445 li
+114.83 198.445 li
+114.83 199.584 li
+117.006 199.584 li
+117.006 200.926 li
+114.83 200.926 li
+114.83 203.277 li
+113.167 203.277 li
+113.167 197.086 li
f
-1307.14 62.9219 m
-1307.14 39.9609 l
-1327.26 39.9609 l
-1327.26 62.9219 l
-1343.88 62.9219 l
-1343.88 1.01172 l
-1327.26 1.01172 l
-1327.26 25.4414 l
-1307.14 25.4414 l
-1307.14 1.01172 l
-1290.52 1.01172 l
-1290.52 62.9219 l
-1307.14 62.9219 l
+130.714 197.086 mo
+130.714 199.383 li
+132.726 199.383 li
+132.726 197.086 li
+134.388 197.086 li
+134.388 203.277 li
+132.726 203.277 li
+132.726 200.834 li
+130.714 200.834 li
+130.714 203.277 li
+129.052 203.277 li
+129.052 197.086 li
+130.714 197.086 li
f
-1421.34 27.5586 m
-1418.49 38.6602 l
-1417.56 42.1602 1416.37 47.2109 1415.45 50.8789 c
-1415.27 50.8789 l
-1414.36 47.2109 1413.44 42.1602 1412.52 38.6602 c
-1409.85 27.5586 l
-1421.34 27.5586 l
-h
-1407.65 15.3516 m
-1404.16 1.01172 l
-1386.99 1.01172 l
-1404.99 62.9219 l
-1427.03 62.9219 l
-1445.48 1.01172 l
-1427.58 1.01172 l
-1423.63 15.3516 l
-1407.65 15.3516 l
+140.766 201.844 mo
+140.416 203.277 li
+138.699 203.277 li
+140.5 197.086 li
+142.703 197.086 li
+144.549 203.277 li
+142.758 203.277 li
+142.363 201.844 li
+140.766 201.844 li
+142.135 200.623 mo
+141.85 199.512 li
+141.756 199.162 141.637 198.656 141.545 198.291 cv
+141.527 198.291 li
+141.436 198.656 141.344 199.162 141.252 199.512 cv
+140.984 200.623 li
+142.135 200.623 li
+142.135 200.623 li
+cp
f
-1493.74 1.01172 m
-1479.5 62.9219 l
-1497.31 62.9219 l
-1500.89 39.9609 l
-1502 32.7891 1503.1 24.6211 1504.02 18.1914 c
-1504.2 18.1914 l
-1505.21 25.1719 1506.5 32.6094 1507.87 40.2383 c
-1511.83 62.9219 l
-1529.56 62.9219 l
-1533.4 39.1289 l
-1534.51 31.9609 1535.34 25.6211 1536.17 18.6406 c
-1536.35 18.6406 l
-1537.27 25.6211 1538.37 32.8789 1539.48 40.2383 c
-1543.14 62.9219 l
-1559.95 62.9219 l
-1544.71 1.01172 l
-1526.61 1.01172 l
-1522.49 25.25 l
-1521.55 30.6719 1520.74 36.4609 1519.91 43.8086 c
-1519.72 43.8086 l
-1518.71 36.5586 1517.9 30.6719 1516.78 25.25 c
-1512.1 1.01172 l
-1493.74 1.01172 l
+149.375 203.277 mo
+147.951 197.086 li
+149.73 197.086 li
+150.09 199.383 li
+150.201 200.1 150.311 200.916 150.402 201.559 cv
+150.42 201.559 li
+150.521 200.861 150.65 200.117 150.787 199.354 cv
+151.184 197.086 li
+152.957 197.086 li
+153.34 199.465 li
+153.451 200.182 153.535 200.816 153.617 201.514 cv
+153.635 201.514 li
+153.727 200.816 153.838 200.09 153.947 199.354 cv
+154.314 197.086 li
+155.996 197.086 li
+154.471 203.277 li
+152.662 203.277 li
+152.25 200.854 li
+152.154 200.311 152.074 199.732 151.992 198.998 cv
+151.973 198.998 li
+151.871 199.723 151.791 200.311 151.678 200.854 cv
+151.211 203.277 li
+149.375 203.277 li
f
-1628.33 27.5586 m
-1625.46 38.6602 l
-1624.56 42.1602 1623.36 47.2109 1622.44 50.8789 c
-1622.25 50.8789 l
-1621.34 47.2109 1620.42 42.1602 1619.51 38.6602 c
-1616.83 27.5586 l
-1628.33 27.5586 l
-h
-1614.62 15.3516 m
-1611.15 1.01172 l
-1593.96 1.01172 l
-1611.96 62.9219 l
-1634 62.9219 l
-1652.47 1.01172 l
-1634.58 1.01172 l
-1630.6 15.3516 l
-1614.62 15.3516 l
+161.463 201.844 mo
+161.115 203.277 li
+159.396 203.277 li
+161.195 197.086 li
+163.4 197.086 li
+165.248 203.277 li
+163.459 203.277 li
+163.061 201.844 li
+161.463 201.844 li
+162.834 200.623 mo
+162.547 199.512 li
+162.457 199.162 162.336 198.656 162.244 198.291 cv
+162.225 198.291 li
+162.135 198.656 162.043 199.162 161.951 199.512 cv
+161.684 200.623 li
+162.834 200.623 li
+162.834 200.623 li
+cp
f
-1696.51 1.01172 16.6094 61.9102 re
+169.65 203.277 mo
+171.313 203.277 li
+171.313 197.086 li
+169.65 197.086 li
+169.65 203.277 li
+cp
f
-1757.03 37.5703 m
-1760.24 47.1211 1764.2 55.6602 1769.17 63.75 c
-1779.07 64.582 l
-1775.96 55.6602 1773.57 47.1211 1772.19 38.3906 c
-1757.03 37.5703 l
+175.703 199.621 mo
+176.023 198.666 176.42 197.813 176.918 197.004 cv
+177.906 196.92 li
+177.596 197.813 177.357 198.666 177.219 199.539 cv
+175.703 199.621 li
f
-1822.82 1.01172 16.6289 61.9102 re
+182.281 203.277 mo
+183.945 203.277 li
+183.945 197.086 li
+182.281 197.086 li
+182.281 203.277 li
+cp
f
-1987.72 27.5586 m
-1984.87 38.6602 l
-1983.96 42.1602 1982.77 47.2109 1981.83 50.8789 c
-1981.65 50.8789 l
-1980.74 47.2109 1979.81 42.1602 1978.9 38.6602 c
-1976.23 27.5586 l
-1987.72 27.5586 l
-h
-1974.03 15.3516 m
-1970.55 1.01172 l
-1953.38 1.01172 l
-1971.38 62.9219 l
-1993.39 62.9219 l
-2011.86 1.01172 l
-1993.97 1.01172 l
-1990.02 15.3516 l
-1974.03 15.3516 l
+197.402 201.844 mo
+197.055 203.277 li
+195.338 203.277 li
+197.139 197.086 li
+199.34 197.086 li
+201.186 203.277 li
+199.396 203.277 li
+199.002 201.844 li
+197.402 201.844 li
+198.771 200.623 mo
+198.486 199.512 li
+198.396 199.162 198.277 198.656 198.184 198.291 cv
+198.166 198.291 li
+198.074 198.656 197.98 199.162 197.891 199.512 cv
+197.623 200.623 li
+198.771 200.623 li
+198.771 200.623 li
+cp
f
-2060.02 48.9609 m
-2044.23 48.9609 l
-2044.23 62.9219 l
-2092.73 62.9219 l
-2092.73 48.9609 l
-2076.65 48.9609 l
-2076.65 1.01172 l
-2060.02 1.01172 l
-2060.02 48.9609 l
+206.002 198.482 mo
+204.424 198.482 li
+204.424 197.086 li
+209.273 197.086 li
+209.273 198.482 li
+207.666 198.482 li
+207.666 203.277 li
+206.002 203.277 li
+206.002 198.482 li
f
-2261.57 23.2305 m
-2261.3 30.2188 2261.21 38.4805 2261.21 48.1289 c
-2260.92 48.1289 l
-2259 39.9609 2256.43 30.6719 2254.41 23.8789 c
-2248.27 2.30078 l
-2235.3 2.30078 l
-2230.16 23.8789 l
-2228.5 30.4883 2226.66 39.6719 2225.21 48.1289 c
-2225.02 48.1289 l
-2224.66 39.3984 2224.38 30.2188 2224.09 23.2305 c
-2223.08 1.01172 l
-2207.83 1.01172 l
-2211.69 62.9219 l
-2234.03 62.9219 l
-2238.07 46.1992 l
-2239.81 39.3984 2241.65 31.1406 2242.92 23.6094 c
-2243.21 23.6094 l
-2244.95 31.1406 2246.97 39.8594 2248.8 46.3906 c
-2253.5 62.9219 l
-2275.26 62.9219 l
-2278.37 1.01172 l
-2262.32 1.01172 l
-2261.57 23.2305 l
+226.158 201.055 mo
+226.131 200.355 226.121 199.529 226.121 198.564 cv
+226.092 198.564 li
+225.9 199.383 225.643 200.311 225.441 200.99 cv
+224.828 203.148 li
+223.529 203.148 li
+223.016 200.99 li
+222.85 200.33 222.666 199.41 222.521 198.564 cv
+222.502 198.564 li
+222.467 199.438 222.438 200.355 222.41 201.055 cv
+222.309 203.277 li
+220.783 203.277 li
+221.17 197.086 li
+223.402 197.086 li
+223.807 198.758 li
+223.98 199.438 224.166 200.264 224.293 201.018 cv
+224.32 201.018 li
+224.496 200.264 224.697 199.393 224.881 198.738 cv
+225.35 197.086 li
+227.525 197.086 li
+227.838 203.277 li
+226.232 203.277 li
+226.158 201.055 li
f
-2354.65 27.5586 m
-2351.79 38.6602 l
-2350.88 42.1602 2349.69 47.2109 2348.76 50.8789 c
-2348.58 50.8789 l
-2347.67 47.2109 2346.74 42.1602 2345.83 38.6602 c
-2343.16 27.5586 l
-2354.65 27.5586 l
-h
-2340.95 15.3516 m
-2337.46 1.01172 l
-2320.29 1.01172 l
-2338.29 62.9219 l
-2360.33 62.9219 l
-2378.79 1.01172 l
-2360.9 1.01172 l
-2356.93 15.3516 l
-2340.95 15.3516 l
+234.096 201.844 mo
+233.746 203.277 li
+232.029 203.277 li
+233.83 197.086 li
+236.033 197.086 li
+237.879 203.277 li
+236.09 203.277 li
+235.693 201.844 li
+234.096 201.844 li
+235.465 200.623 mo
+235.18 199.512 li
+235.088 199.162 234.969 198.656 234.877 198.291 cv
+234.857 198.291 li
+234.768 198.656 234.674 199.162 234.584 199.512 cv
+234.316 200.623 li
+235.465 200.623 li
+235.465 200.623 li
+cp
f
-2422.81 1.01172 m
-2422.81 62.9219 l
-2442.39 62.9219 l
-2452.21 43.8984 l
-2455.61 37.75 2459.19 29.4805 2461.94 22.2305 c
-2462.23 22.2305 l
-2461.29 30.4102 2460.93 39.0391 2460.93 48.2188 c
-2460.93 62.9219 l
-2476.08 62.9219 l
-2476.08 1.01172 l
-2458.62 1.01172 l
-2448.07 21.5898 l
-2444.67 28.1094 2440.62 36.4609 2437.69 43.8984 c
-2437.33 43.8984 l
-2437.8 35.5508 2437.97 26.2695 2437.97 16.2617 c
-2437.97 1.01172 l
-2422.81 1.01172 l
+242.281 203.277 mo
+242.281 197.086 li
+244.238 197.086 li
+245.221 198.988 li
+245.561 199.604 245.92 200.43 246.193 201.154 cv
+246.223 201.154 li
+246.129 200.338 246.094 199.475 246.094 198.557 cv
+246.094 197.086 li
+247.607 197.086 li
+247.607 203.277 li
+245.861 203.277 li
+244.807 201.219 li
+244.467 200.566 244.063 199.732 243.77 198.988 cv
+243.732 198.988 li
+243.779 199.822 243.797 200.752 243.797 201.752 cv
+243.797 203.277 li
+242.281 203.277 li
f
-2551.7 13.1289 m
-2559.69 13.1289 2564.39 20.8516 2564.39 32.0508 c
-2564.39 42.7109 2559.58 50.7891 2551.52 50.7891 c
-2543.53 50.7891 2538.66 42.7109 2538.66 31.9609 c
-2538.56 20.8516 2543.53 13.1289 2551.52 13.1289 c
-2551.7 13.1289 l
-h
-2550.87 0 m
-2531.68 0 2521.13 14.4102 2521.13 31.6016 c
-2521.13 49.6016 2532.88 63.9297 2551.89 63.9297 c
-2571.8 63.9297 2581.92 49.1406 2581.92 32.6094 c
-2581.92 12.6797 2569.99 0 2550.95 0 c
-2550.87 0 l
+255.088 203.379 mo
+253.168 203.379 252.113 201.938 252.113 200.219 cv
+252.113 198.418 253.289 196.984 255.189 196.984 cv
+257.18 196.984 258.191 198.465 258.191 200.117 cv
+258.191 202.109 257 203.379 255.096 203.379 cv
+255.088 203.379 li
+255.17 202.064 mo
+255.969 202.064 256.439 201.293 256.439 200.174 cv
+256.439 199.107 255.959 198.299 255.152 198.299 cv
+254.354 198.299 253.865 199.107 253.865 200.182 cv
+253.855 201.293 254.354 202.064 255.152 202.064 cv
+255.17 202.064 li
+255.17 202.064 li
+cp
f
-2655.32 27.5586 m
-2652.49 38.6602 l
-2651.56 42.1602 2650.37 47.2109 2649.46 50.8789 c
-2649.27 50.8789 l
-2648.33 47.2109 2647.43 42.1602 2646.5 38.6602 c
-2643.85 27.5586 l
-2655.32 27.5586 l
-h
-2641.65 15.3516 m
-2638.15 1.01172 l
-2620.98 1.01172 l
-2638.98 62.9219 l
-2661.02 62.9219 l
-2679.49 1.01172 l
-2661.57 1.01172 l
-2657.62 15.3516 l
-2641.65 15.3516 l
+264.166 201.844 mo
+263.814 203.277 li
+262.098 203.277 li
+263.898 197.086 li
+266.102 197.086 li
+267.949 203.277 li
+266.158 203.277 li
+265.762 201.844 li
+264.166 201.844 li
+265.533 200.623 mo
+265.25 199.512 li
+265.156 199.162 265.037 198.656 264.945 198.291 cv
+264.928 198.291 li
+264.834 198.656 264.744 199.162 264.65 199.512 cv
+264.385 200.623 li
+265.533 200.623 li
+265.533 200.623 li
+cp
f
-2324.05 77.75 50.1992 8.44922 re
+232.404 195.604 mo
+237.426 195.604 li
+237.426 194.758 li
+232.404 194.758 li
+232.404 195.604 li
+cp
f
-EMC
-Q
-Q
-
-endstream
-endobj
-pagesave restore
+%ADOBeginClientInjection: EndPageContent "AI11EPS"
+userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse
+%ADOEndClientInjection: EndPageContent "AI11EPS"
+grestore
+grestore
+pgrs
%%PageTrailer
+%ADOBeginClientInjection: PageTrailer Start "AI11EPS"
+[/EMC AI11_PDFMark5
[/NamespacePop AI11_PDFMark5
+%ADOEndClientInjection: PageTrailer Start "AI11EPS"
+[
+[/CSA [/0 ]]
+[/CSD [/0 ]]
+] del_res
+Adobe_AGM_Image/pt gx
+Adobe_CoolType_Core/pt get exec
Adobe_AGM_Core/pt gx
+currentdict Adobe_AGM_Utils eq {end} if
%%Trailer
-end
+Adobe_AGM_Image/dt get exec
+Adobe_CoolType_Core/dt get exec
Adobe_AGM_Core/dt get exec
%%EOF
-%%EndDocument
+%AI9_PrintingDataEnd
userdict /AI9_read_buffer 256 string put
userdict begin
/ai9_skip_data
{
mark
{
currentfile AI9_read_buffer { readline } stopped
{
}
{
not
{
exit
} if
(%AI9_PrivateDataEnd) eq
{
exit
} if
} ifelse
} loop
cleartomark
} def
end
userdict /ai9_skip_data get exec
%AI9_PrivateDataBegin
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(R) 16.0
%%AI8_CreatorVersion: 16.0.4
%%For: (Paul Wessel) ()
%%Title: (soest2.eps)
%%CreationDate: 12/26/16 8:34 PM
%%Canvassize: 16383
%AI9_DataStream
%Gb"-6l!c,(XtY0/J9QMh,\2LqWQImO1(Po,S</CLX:QL>G40j.I*_d`*i`I69ap?2T6kp-DZVPXCrqhkad/JmDmk+`YP%&TB'\o^
%Un[%9MPMSA<D.()5*8TYf2$-e^H,LbO_(JiAhDQ]=m],Qjl`\qllC:R0=>],fP7cSh5+ZPT5$0-:jn*He`:kTd:iJ/\_3pqHm[9q
%*W<6 at Dq$8=c<%E?Pa/>'KsL9Zq,;4E*r^OMf/cPr_ih9,I3]r]])W5Siccs!5ONnba_ at m/K3glsP0fQT:UesPia'YG(CncO%a.FD
%asW+R:p5+_]dM<49$0^SX%Ta0i"t'EA3a8>8rBW!<l"SV^'K8g06;J<H`qX?SSG at bC>R8l$p(Na=1.XVh1Ygi/L>,P$@R(uqeA'i
%]c&%NO>X(+3sL-phcW[H)6"pOq#A"0,]ubTc^[k2rDg'"CFQf"X1m.GPh:[bn$N'Y5Wr9!,`-uu-RV-<>3EP$mm58jIk44ZK at Xh?
%_2?>2Pt(G;oj0t"nP<?IXP.s'omgg]N??)c.;A>g?o7VYs3u!-AD4gr]@K)[?'&AFl>f(Vc^RHe'1cu>C/QblGg/e%^ll?!g%hFo
%&I\a"d#f-*JKp19p%NcRM=iJ#\CIRn3a at hLOs^,Mh9VP,Ihr'Fp(L9jokI4PDrAq#J\Z,#p>D/nE:s;@gT8tW?F"#e/L+sr=#PU=
%R\ac&$Dk$Z))*1_-TD(ie[gUE"TMF957I]Z/IOe$7:*!opfCJcWN+rV<M`JA'muLbAJeOm0^tE;?nK:3>)#nRE0urFFY!pd=RZjY
%[OeLk=]c'Hi@!2+(9poFLi4&epnV$13gC%9X],]2hl]rJH)3jbTfo:OV>[)>d\ljeJ$,f.1k&mc`!JZ5(?37eV9]\tr5:XP&Ukq\
%S.bI"`!JZu(Li&i#`6ud6:Qq''Cj)W=Gf(HS!9AKIB8-Ii@!3U<3V=B&,)OAQr9&E#s[[D'Q_uTg3;70g,eqtNtJQ]s'[Lt%mLX=
%*C5Q?I7?^8s'dRuO,kuk$@N`\_b^2af[960:YKk at _,%.dpu*S at 7EQp@Y-`UnOn/SHSF[751YP&cFf\$r`p#fEVnL-Bdsf\f.:bVK
%Zj-PcFV$X[R>;lt9sLQk&O633>*Qc65=uUc/q.7M`%I27SBYW#;NA1N\XW1Ek7u9ZfQ51aPS^i7n1gb]VnJj)VsRBn at F+b*E85-a
%Ynh8K6Ds;$kO]k`3L*:\c#h/YD((&Eq+(84O`pRr,0ct7OXs6TL\E6AF1ukn&)VPTLeG<8b+-W"3+.e,-1Pi-)SE8d^V!hZQbEcP
%Oo3,3<%H,XT;'[[c<pDYB.j,Fr2'E+BjIV_c<pE$T;TGp^\".4dbgqDgG[a"6 at h=?rmH:cS+O2]Qi9XR9-md$r2'G9Abt0W9E.TW
%5H<%Lm-p4!/,d_BdD(4(U(oQ!;GuFS_(8^aZDm)S?;N,O+^o(VW^nGd:b$cWLSsq&e1)d#`4+tMUc-#Mnk`8_2/-p@!72)JQ^+OP
%QTt`.8gOet+TEs$>?Jqq$>--1Q(U'<+)9hW%Md_N=9Ya'8u-#+l`_Et:"I$e_pBkJHpSuaX4VcD_o0$L4NEf?i4X\jOqq$\"$WQ`
%@k1@[0FNCiI1*<qVl[U`cO``U<e)+R-FRE!:)f"u;PAM<-/&Q4QS6fO,Mn*B)YO=X.g/>UN)YND"&-*(Q4TG9B*6k?;M(*$kZkp3
%!E]M0VQ^VUOJS,7E4TE`N20'qEsh-,h_Mj&E3ND'eqb3X9d. at E,5*#HJEKAf%6uTa"R(b[dPC`<8<dkZ#1t0RT^\'N'%SAh)#R_b
%*VM>T^H_V(6XfEsU^i>B&/;YfC0;9<0r'8 at 7ZKp]PmWNRXi3epaopfAqJDV7[YtY!@AL>k^:"IpUB]gWpf9^b+Irj?s'JB>^F+%#
%JnBm;'7%ml0>8H5KE!6mXQ+5nQ\[i!D3GPhkifm.QVdg?%T=7k>I4O/e3Za$)HK.NP^OMC0 at brCNcISM%%=1ml(UtY,uqGMX7&9"
%`$530)/^E0ebqI';_BHOaeH.NOq at -7)%@R(Ylq&KqbFC>gnRer=XiGir'ocX7h!-uNsqhd?E2 at 4#3\>JN(YRio`0RN)Q:HZ-0S<n
%BQp3BE,8?@O\mSPO4p&-J8\@iaqec"8#ih;.8;5X%B:La:"5.;!e\?ib>dL:9Un`]hG>[p83ts.e=GZ;U)W at PL6r'Jnhr'cWo4@\
%[0i<V$BG+.cYGr;64''\LrLe%m=%f<jib:VYp%iX7,$'ITd;Hu+jJO]CRNDZoPMbHc?foaCOplRg.6Lr*>!-Me*oD]6(jJ\D2#NR
%l42N/EXP\`7j1[k/fY,_!J.`%qID=>b3ZU_Gnk-#PE2b2U_<Q*WA'2KigAI9$6;4_nc6fHh,!QjUt6nYO-:?@$OIVOWe#Cn?I]@+
%dWr&`C3#7="ZI;f98rF&6Ga<Z'Hth:hs"K'B-V7e;L9)CdJ8U8XOsi[TuA?o7Ak;FD2Ur<8M)jkT$I!F8eSNoOLg*8b=&csg">QA
%*haJi"'&bdZtUdhH\BP2N(Tpq._>D;ba:"e&S6rA2RF_c?7?ND+?5It1=I)Y:?<0h%4_AjZY`P`82#jZAk]K<-FQ:8:qS*liBaIK
%\:!6s$J."DedI]7JnPChV]8:%^PJ+/D5n:T4BM*K)XfJB-@[t5H;'sc<ZT^MmM]%WS<4qBa]$@lj]bb&=6c$m16F#g$)l*S at Ch`N
%PJ]0NgF.!]QZUG#<B2Bc[WGbJNSBt:r=Ttmn4D at Ij]+aWB/GNdYK!P.X_Bh:W0nXK3/U2Bh]g#]W@$9(ESkAX)9k<`$(ZuZCGWLQ
%&7:*";PLl6nf$%Fi1QA=l^7156G*b*<bD9LGus%[J\n;a+VjdrLNHV=r':39pl at tSU/A%KZ[jn7)+CE8e7!T=n at r9n+7/ISD0*=?
%8gk]s^m[o`AP48p<bK(`]cQIdYhp2YD9e,noE9J(1tKCR2L*uT)cW%O7A[NY-KdM1TK31t,`1f,10_O-&eUioY?'e7.b2L3Qh\db
%s%[I:4`3XN\P1ud"m2d#WB[-0efp,<eKiqY6ENdoCFZ.iPu^n*737=qCr)7Ld7;E;JhXB5LjsA^!..&7%W;<ohpbE/@lYea6[TYY
%3uB5h62Jk+j$!qJ:$n5Rd:*!GH)@@IoqJH[Y;'gUC*jjYTJeKt)pq[@?_J&[C-MgH<?-o=Bhl'=_%^KenrH-`<iJ^KAW[Q+Kj)$u
%9'n^E*A"S?\IF:q;(.[l'f(88as"\1Q#DSH+?\5YMUQ?o8*Pt\_.OT<U)!j=f+<7Z`.\Q:r^Js\XZDgg8NZ"DBkl-r_.WI8`9,O#
%Kqh\JcmXo^5?;I4&IO:hG`_P;+]=4g[I#dHDLqEslVVKg2hd&4TJ4$X*JC\nK#PD)N]GO at Nu^FGfMELnh^3MbL"^9fJb#hMcP8n[
%hE$'S]K)P9j%'cq+E.F:L:otlKP)l8j.fNrE@/W55lE;Z[Bq">]1$F"a'9ciOh%&dm1aJ"k*1n5*u$p+.HNbiSbIo^3U0R=>tT=;
%in0+qHP?9GqG)9p at u_2EEMQi)n`RR(in]:5aCg`QG[E0\8Gj.n"\]O>K\!-(o23P+'!81,+3C+Y:\7#bInZqNi#FpEPcO>b86=La
%W`*$Go/*=1Z/H<fpfA;RphmU^S9m,L3L*.pd?la+a[a1 at 1SLAYHO=Uo9SNupH`\t0Lg*+=/rkTaU0(76V5$e\(,k:jeK:;CkW%RC
%qO]b4e7N1dh-b4',(EQmQ&6gNp8D3TW)H?Q`btZDS_N9H)PnPF3c[FC<([8"j00O6Mr at t#HAtgs5[mF:Wc?bTj%(UjH&PYBTbaQ=
%1Zh;`auB'QLdYC9;H.j\Br9ZX3JVAh4r\J>8UJ6C#2=1nJO?60#R.k$ST6.(@8s^W%7hmWE1D06Z$00Zd[>oO!7q=#g_CHm+=e=g
%rjK27I,#<PNY<LYe35/7:2h>I1U/1g'Ce)j'sS5h)t%?32!PSr948MOA.FUYK)2#&@6/InHE9;Y6K0H,bi4+d05+%CqtGIJTm\/J
%C7WKbc5s>>Kh9&.=jYY8A2`bKpJ4h5$G;Gl45s?rfl%d)2+c<CmNG^F69C(WMtij'2Td;aR*\3qo/G2`=OWrKZ*)`/oK.Ujg1G8t
%-V8VZha0HQG,*cC7fIXN38HPn:(,Q'Zkf>R>LO_GK0f=%lNPG+e.O*+WnI)LTg1/<l@&7aM9;N%;7!d7iReoF6C!H**ICO*&s)?P
%%[;S$$g]mEfd[_S9h at c;lP/!/SmZ3anj6hPe4/SHJBe7!QfoWfkIDX"RS#,kJtkunL3=!NJ^b=-ZN/T,<0q#-QGOiS*Na2*L^B[e
%kpc^l<3W;-jU5r.U;W8+RIDr%Jb^9[.7<J*S^$A_`f?(T^Ia(oB4.UoM2bW2Zm</CSl0tdc:;,dcufGjBi'ENWN$=a*M8+[2,i].
%+9J*1(8DX!?_dV/kUaM'06,48(!5SZK<AaB<Y*`Qm#;@3dh!Q#]gA^ABgV]&i-#Nu"Y"Y94,I`T(2YcT#E*]!,6:StFNoDt5*%cb
%[^?31(G&X"d1O#?(&6!K at j)?==IX%X%Y`3V!o=-IEpWQ`;Q)Pfi#-MuT,E%Ma/CGZs-R&Q\-pil>ZR7-CXVaMSd!^[e4u_q)%IBB
%%XaS<1CUBOI3RCF;Mc</V at cPJ.@b,VbE6Zl0ab7 at l$J;G9:aIRX?D>k#d)`o&K,BH+jb4!$<'\ga[V8KG+<D2;qo3_?3,II at IjYX
%bq044ZH&r_s+8Lk1F_pS3/-Db!%!k%A:]fO5rk"OQp_%GNf<"Ga"T8KSQS+/Ih2t+*W8GKBgXD-gV. at CdBsuMiku'k/k%3@=FA&S
%heKCgLC3dl*S`ZQ!hMG^$L\9b#[4+\eoO=:JO42dS4cD6FNVuX=m[u4:+9:m7\H%Oomk,D"H2PdC7S9&7q$>Ap)G`WbeTL, at TI<G
%S*lRblNJV>h_Eg\!Ck4(I'nPo%SRLh,uF0V&'`#Hq,4ppb6UOUS\.Ai;@aI2N'DOOJ\G1Vbi3(hWPnr$07QbKjj<K9krY-mM2]iN
%Zt8OmdPC>u?7TAl1U2hg++5)Xn\7g0WFL^siH#*19HiB,H0.]P31!`qbC7d5:JB$,%A at 0`auAbs_W3khbK9lSL"RcPK.!g8dd\pA
%A*Kj604U;[$/al^OL?U(.]4^7ZSECKk34lNJJ`GZpkWq&M:G^K.$l<%,E at T92]Cuo7[TOj*fq8m&g=g#Z14\PKZ#\nei'@Z"-5b\
%7\)dV3L*aF-&r:si,lO*MOSPK[pnY2pI9B&[bTn<X3l6kcg:,]a_ at mOe#*##am[9f(=]KGES#-gO?>6>NuL=QBWKVYC%!n9>)>r3
%[Imct?IW;-X\ShEC9PaSkMPc=2OP_8e<=O9l3dTBhfbQ,[GIJa"]oD;41->^#]Glur,;5^V:o.SoB!V[9?YSpC5l7u!,Ip#S$0rW
%C8W']qRBC><]`lNDF<9arrl2u5UcrH;\fIKXj_+hEQBZ+MPl#e$GrPT%97`saj!;Wq:`5be"?&ge$<Y3V_>PQ]T_.;r,b/dB<>4P
%#4$_K6YFB6'^Pd3ZuJcGBHB#[JbiS['tc+53kbR'<hOVT$h3XM)1&RAB[kp$eb2N3`NK<7kB9MjfcZ7Hce!6=;=Aror$7LH=$++l
%9;?\,:UaF&MESJknnT81>_!ZHeiE\1[J06s?[qKC47udUo\fe_eXNbXqkl[O?HjWil`6#U9?GYDC:cs^k^?E$bu5RSrWoN2<:5[&
%iEG-5:GA!0pJ7R8:#u#:Xa`4MO5s1_Esi>aqU=ZacR*^geZW.s+d"jgJ$jiRXGW6)8k:M(jV,A!,^=(I?@o*)8BIo^i5[Htq$fdm
%9$1'&+F/;e-"!A at l6Lou0NYH7*7_F>M. at +MKtjF=J<JBr80j7sN>d`Zl,E16+t/!Kqp\@4V)9:.,R2AY![rOG]QmHVj*9&@..>J)
%_lsYW&o$5n#?"utnWkKtLrogOq0uL$!:gg.!,$`AR9A#ZH-Gg9^_6FCrdkidG5`Z"V<"@'8]faZXkGaP!Al3G9lQKEoQX8L<:NJT
%d;!eVWm,ka"'R#DB7]U$O5PI88Q1oGOc\ks+$H. at CW0JP;?"1/iuk!.44)*22_OCOqK'>In,7=]X.fTWQ at TX2GtV)q[sZbAMd8gQ
%VD\^1buV%"q@[3RR,NaLikY%.@,B>l&TGMY2B_rPj,W9#m=7t.qm?(FC;(2O:8Qh37PmJ7,C#T-?F/#sD/a>G6]S;IIc&N7o5_L;
%71anml]jH[TTG>)G4jB'LJ=.#PF8UhpQHB7]VsS&ofTX^0OM-B.?(F5m<Y'6l)`sBe`bACAXKH?P(fN7.sY$HR2+NY%n'ARaZ#Z<
%#SUJ/Vq7k+CWToMDf=A22*k0M5&9!Rb(`a'$Hah)SZhn>PEW1T:OP-*0:r5(q+bSeOK.tk$WC2lcY,ESO2k2P9"&/+mNfF;YFc#e
%95O/3.U`dj3hBR+c>2tS1K!CX7<f<+:p\m\0<"^;&+lk#$ICa9F[]6Q5ZgS]HM/#]l?fF0CW<I1WA2sYFC!FLCW\sK,-)%kLobB9
%5W2S?[;4J&dFIAdeaBD2-eUA+a.6DCecEhV$lFqjAlU>XZuSVoZ;O^*bN?/:1Yd=4o3'_Fr%o<3q?=q]$me%'n#`e94lO*),qaV[
%oo at ba3:h$$H>),,oqb]&^,Ke([8A`)/";+g^_C:o\HJ+E[J<]>:m%IB"Nh#H#ApQ at QX6\O#X+.rgPga#>pj.pkG43N8//>/VOMi_
%Ci7pHQr@#U7R!pAVTn^p<F]tPWTW7L`DGWgc6?^a?ZjgQjcHL30(B at L(o*j.c.1,GPht9.29mM!gl$>F&c<SK;%828'chj,K"JRQ
%!NB+@]8#\3<k$qcBE,>K$madnJ``Z'UdK)]?qtKYmF;!5enLn9h$nkmV,;/`@RTDFDbuD]+FsA!8[;?kl]hsJL_p(8iOS#j[Gf2Q
%k4YJA>6"Cj3l`24P6V`qdX&$8NC`]?D;(1-@^9Hq-OR;K7)tCMY<<l(c4=[J`cGX?BFLRl51$GkNdc:kR$,AE&WlDGgjZ[,re&&/
%j&VYqlFEsJrBiimf/3T8jmTBB'-8e.>+PN]:QHG3\O*2mV7$:ZLbZ[]C;##E)m::-Vk!)K;uGk4*1rX:Fs$aaG.Pl66mu+7X(nsr
%.IRJjCYE%/HI?s7qHljcAuf'm6'ql/P,LC9.Doq]M(se)la]bA=ZH\(^`4J$<61j)'5NYCpd_-5*(l&ipt)QSqT!%BaAMon,j7mN
%`>3TtqJYM07.5gLIe<*ZA:KUMQb$1er%[18+r6Lcs0u=(U362Pe!9qd887hc?iRsKn\838\rHR0s)q[aS+o9?5*Gsin[(i71sRND
%^[ppEaEY"^RPug9hZr-:_*#)<$pOl%mb`h%hOk)W7c<sCqJ5OE%U,sn^ONW33J\8Lr=]F2J,\ifkkQVprf3g8s!)-)U at M&`5Fn,Z
%3PY.B54uerp$_=c=05PP"\WOYITRigA!4#.`*k$eZ5CZuF#48q>.$VI8H#m"7rmtLA#EO=!HY\Km'p?s]O`A[VJ1:MZGN?*]+_#e
%\)""^F&;8.[@n!6Ss9*S6UK#;%_rfS=PK.)'Gl*lC5oRN$#PmuiOIF?g[Sd-GJfN-fIt@<Z/o7;7,uSnfLr::>'m(K'rdSE*O^9s
%`rY]a+V:Lr$The50DBc,Y(bh$;umf0lnp"B[R]6j0rS/a6+mq5:sWA=Lb44L"tbG;C7X%9C3aHGKiXnp[2e#0QeW:MK!M<>OXE%)
%9dMf&5!Fs%-EJ1Q-OMRLTkN7Q9"D"uPD[qJ7k4cs307o%Rk6#7S#eP?+;[&,MgIF-3[E!2'2\+ at lT*_&^=PErk. at NiIFYRXC82AI
%X8?%<56He8DUm[Ieu8Zsh&:I?'41:,eS*V$m$W;[iiUNC!!g;q^Z%44D"/#B^"[kQI8rk7DCe+)5-;MGAH>h+=R5O[_ZT`g?iPf+
%:T2q2I;o%n2Hkg]#jGJ:rHB^K^/hhY7eW*6,]p?H#mZNpZ22bY($D.]lPD[$1h1a0r>HV7%I2Sap^spim]^HBX^`C&3iur=2uWCP
%M`bn]ee6dNfaOl\a1]pS#.S77CA(hIfg<0Tn<tAqGs!oFZn?J2)9m`a5juB5TDqKK3acrL_?U+81e%B!hp@::C;H0'U4n,4$*/e(
%^c^0DV%%4&SJC+0lF#3F^Ggk;)h*+KeiM.$#S2PY.^n4!hBd)i2:d2YpV*ZpfQtt'*;rtu3a%]fn/<s^-4G;5GQ*9RJi2qPlPWL0
%B,miEf'^1_>FdgHNo.TXkH4L`;u0"bo082i")>63h&"'=Ut,3U..a])/5RokJ[N)!:P$E at XS5dUNnp%Fj5lnpH%XUlBmM_PH0b+f
%%<:E*!.HUsNG:PD%]iu-hqRU,T36,>Sf>'k]o0;0\0EjHkE>+0:HO.?k8dt+?G1!0;HD1n[2i9O'othT>8R*Z*,pg(m\SBI7oVb^
%X:@]h7(&&Zdl=@)h#6kMm;t_8dD5g)TJ4'tW8&%_MQ/2N0h,PfEX.90)_ihsh2"p0k_>]D]et/if1*9mUNP:][oP:YhdNq\cSLnX
%eSgDXJEU at J7`[!$Zd3bN0ghuuC[Y9Di=Dl?IKJ/[h/KO5H8+/3_dPE5KN>MTf_CMW2r";H9/^N.<5M88*c<fK6JjnV!)H%-Xh:9t
%s1=hED,*qS^IFntVrQG<6?\moeU7,B%&h3Y6"^_.++H<DkRQ,3RP:jt2MiAPX"JTTTOOu#&u&AsKl4tfP7"KXTq6Uek(VF)bm\R?
%]$YR%WV,u6HjSaE>)1'*32]/<%-3soZcVqnqn'qF<g7A"5+/0-1?[?>D"=n*S1M+aFa[!@APOn>NpgSDIjkuT)7juG9Km4Wq=&$]
%1)>lE(eR`.mctIqJH'_,V:Ng:rq(?0$iEH0R209^]!E.;\Gg]SEEqhBeU/j<<r]0?J.kt%2eiN*mqrA(qR2DBX54lNI8rI7s4XXI
%6$-s3US4ck:A#>2;j%bcGG^)]7ADO'@seQGhs_qtNS+,k]-S@$)RLsi<fFK>+RW=C4\iSZOr`u_`\O(^.<i'-[RcU,YSI-gOi)4E
%"QL_\e)JZ5WL%A at oE]Sg9n1=3Y?sETUtkmair&XC:W770[dn3*[3,=P^QAcElM=Y%Zh.jHI;ViPXB%u4de0(-<1.)V0g8LAlLnt-
%0fO0:8>kV%5$(XgLGr7KiM-mDT&-cPq4FM4eAB%%.CCQE-rOsU3^]@f;oREs>$'r05j(b3gA94GR_!45VK$*nh5i.k<Ef2k<I/eZ
%9&#E7 at NsXmXK=Z&(>=PU)gbV0c.lX9bZ7n+g-rPnG9`Aj.bA<ue\^U04BKT_=Y&de@&O+F-utl=Q<LeCfL[Z`Me6`'-$tMOR93Kb
%/Ngc4WS.,\,;n61X<VJd,&5iK$%CW^Nnb?T)Jdpte8GSc7%0du:#4-[PaSq9P,D29f/:%%ouZS+ppnq:?Dju"*0'o7VmG0lkhJ&>
%4Xm;";PH3oJiD.[lGg#$#$Q;CQ3ejtS8mlM([!]^lG!'M^UBDrFp<OTWjPSsRmE#tFRC58:-FSW>g0>#-iJCp/bq=$@,)_,27bs(
%Gg>.?2nG0`m7ptm+%%Qm\Gf[&=^*B4meSe%^\jh.">jje:0u]qlCLJM("01,I3V`MN?d=M-RumUWM[7Sm+818H$e3SCiik.Y003_
%I;m`>?_sm,cF#m6Q1&djGkR)+WjV]CFQR at q20qA@6Q.8QYYeC^(V(().'VcRffc at ESbpjS0fD)IcUup)f#sX<qD[-bhG'e/brUh&
%LXPa(:no\7#?/A-DtL7r2u.=g*&rp)dS at .)anB<mW6t!TV((<s2lb,/cS%6&%t,CfW)WFXg=*,_WdDK=!ua$De%2N^#;gc*-rjG`
%B254PMpUhAeEZ[TmGm!2dB-d<73JJVMlA6He+2=-`?d>SZ\`dJAn.Nmc-H"@])DEC,rOTR2S-YEGg@;A?HdXJc0O'LNRK<FR#((Q
%VR6Br/+;BZcGYdSJ,NjQ2L<lOD$Mtf8FL-)gC+"jC:Ef_l2LF<J"qAU_g\GfT(6ajCo>#-1^`:&DYE_<3-u!IZm8pJ&!h^?qhpYN
%YE*bJIZ8r6\Th6D#3'rkWBI\B)Ej07(Y:SJ)D09BDO?t=Bf(tGid.qMp(5m?mtnCLc%&:P%-bM&2"0$EnCY\<H2Ve5ICS3.i.m)g
%a1t/K[Iqaj:nn9D;gH,G)FY_=b3HN"ERjroj4 at tBF1=3O)LYY!4[LrCc';;_BQ^&YjYVkG`CamEo:m'ICj)MUdA,79pI"ak!ubJ4
%G\<JAf(B)[o[B9#1n&m*STlB=-IU'![CkO#&1:BOn9,0Y?0kXHLPpPW.JCF8/XLs"Bqt!^nq,==ki>uMs-S)&B3Ilt=t8sN<FK`n
%eNCL`7W\Nf)X3+/lg8P&F>r;q1o5"0I?6p<>aBhM4h1K/Xd21cU[.+?qsLF'B`.b&7A`"XqrtU=5#lo9.:oLSm!3?laNDhN8q$YQ
%qnK8XK$^U`[@jE<@"s;[^f+]JPZNmfoQf?$I'Y<iDl="gg99FQetr>/FY2fk6/$hE1W\$5g?3`Y3_3PF6#W*dUR.O8TVmk!C%8Om
%H0X$9[gUXK`FLIVmG"^a[W.B8HE'X$WUHqge!6.#o(&!eZfh:UC0S8/:T`'CDF)1<]@+[qid/u#IHbdp.WC:<5<kAbNH-c;m:5Bm
%14LD<oXAplFYi3+l;6h"0AZYW>6oKNcB96oQdqb,)q(MOBE^MHli8Zk\NN+6Gr6gN:Wbu=e)s;JF8DRCo^l,>q_bVt8?nMII/'\j
%"5\KtQ*5]+:&@0*+.?ic/%qDpMCIBAeBI83Z)KM:a^hhc1>OOXZJ-=6oVkp`.D82c7GIe.s&>K$!tDT2]`/=bIQtTQr,j2G/M>>>
%0TQ`$g0-T0H8`Okl5ijj[C4da$a*Y.Y-uHZV8kS@>-QIYQdZnahFt1p[[t5\c=Q7;]TRt(WD_Nq^(cKp\\395mBk,EHV-6$2_&Z?
%BR*LH+kHGV(NjrIgPoE-DrqPRjp_$H=$OXZ!Tj0d at f*6j\bbU_/4e\e)4[7oA!aLh9IM]ta,Aa+3BD-(qq*H<<<&=YYG>A$NG@'H
%_2V2h??;]- at 2?2=Pq$F9^B,;W_t^0Z:^q13.AY at n7E[RW^J7R#3fS<o9ClH$;:X3q\ZK.cln at s"[i-mi:1V:4[F;*Cg1e"eo- at rN
%)^X8TcmX.&i&TTg2l^0@&hcgmej\LM-*U8+3s7I!T#7VX.,a*"[MIYsH2-\T\5BV'!m-p&UIF_jK^5hU;4Urq@*OmRN6dj-l_0&A
%24%f=eF*%jeXJ_!oh\j(Rt'=77u1EE>PS:aIHIuZ\A*?q8aJ[A>W?:8M;OC2cK,6,j-GZ4ZRK"0W%H0 at dsMfpS-Ygu[H$KeFq8Hc
%dg]//@Iq*W3__eW3%s+%(i/'NmS=-P`sSfagY6"H_5=@+A,&'TAfoR(P%3R"@WYHB[Nq4.]3@*%_[mTp]N.e6O+i3%V%0p/\N4mf
%!"LQk#Un,L1\X`sV1Fih&$Y-+ZkM:F]1P>T(<R$WK@*U5!eZO-8r<N\KBVBKiCA99?i5p_%Xqrkm).3L3"]F=TCE"&q]KYO*e2O0
%@\'D<OXKcmRE?T3 at E/mgI2'T\q#Q<ebRDZ&*`.$5,`LRXR=4D4*R7dt?VsQ.jt,akT"'eHq/Eq*]FU6f at aitmZRkq"SW-9!Z.u?,
%gZh^#f*cFs"#fiQ5*6ms1s1WoQ2neiZ:jl7:(sc=P03*E?=87b7mOPI%n8VnFS2>5q<l*EQ(m:3QV-Q<pn5&Jn*S.\/Wo`Lk<a$*
%1)r1J;*3&uYI/"EgAWqc3rVaIK;KjuX(dHV5I3S=V-<Wb1*!!@mq?ukLWg?R+&m_RhqFRnf]jZA_*F9+iulQUn15$Ye9^:<`]H(+
%;uaiRfQ/t_=<K##7WutGh!UB<BB;2Zc@/[SZMC1Y'b!CqKT,$QcOAHP#7It8nm.Q6b12Ais0G94R8b)U%iA.@@%F2]m!ddkr7j?[
%"_qI%6b5ZJ$__5)JN]4RMV6_a,`dEM=^fV>;Mr#?7/QBkP#&Ct50&AX*cVqtXKK-#'9fWEkdD>!dG=A,<?d^rM(//n^2D'CWL<,j
%ersTLaF4Mt81Z8+7BG&&9R)oN'8K=3RlAp$J#@*u0$'i0GA/gCY&jk$`oI0mr1"*O/1)TXIW5K89Y(8E&+s&tnU*I7UtY:kKc_]u
%/cu2s:FOWh'!u3lYd^%hX0GMQ_QFg\ag\+jc.FH,d:e/1N((1"*2^4=m;ZBrc)ZUb-02Io*SZrr96Y=3\(q^GQpL%&6#YfKb]]p+
%'+Jbb>6,<3S/@GhDW;YXhB7jLCqrTUD^WuueFMJq8CWK>q\%<+H-F8<,6[$>W"oRSVFP!s`T]o;:040s5\*B(p$M$A)4;h&@S]%J
%8GE"99Af_I<,\lX1>DVML1El>GtB:&9c1t.hM%M at _V*;.h`IJ7Woa!b\:PVO)s4lh9F[^[Jct0/NlUL*H[LsHEcn??)-6jKGMVnJ
%gs1-Y!7C_ZGN(-'E;Y%R1Of*"/cubMb#7a"XOa[7^RK#j1Sp[*\,!Wk#5l%SMITl1Mff7!jP]QEh0fM`6R"Z1YsLn7O&uMl`fp:V
%25#c;LufEA/=XU`,6#"9(@_AP/Mao5:+]16`/0S/`Y-"/6i=UrOK>ZVZ(KES)CUCK"@S#UECO8tB1<;nI-ms"(M<u(W$UF+37KDC
%>8eg#6"PN^>.J=+N0&6Y'k4E+;**;_mJaUQHL//&356SEoYFuZ!V)Ua:V8$AP:-;R%;o*jIHe9)0r<Fno5r,BI(i**e<oYGKD+.e
%0f*%O\=%+1>Rh8GH7e*KBlK,,K5@\!$Z<tgK\LkABlH%W=[-8a*JMfG-b&i_dpL=4[)hE'^JaKF:I$=j%d.pmmq>'<!.i2aqW>C5
%'EF661XTWtfZrH+W at kuP7I%B1\qkV;>N+/7cVuh*/PjXt9<mug#\BF-BUf7*$]HQ?SIW1o+_%j%r$AEj`L60]i`-9.Njjbc98n*G
%!"0UW=?7=R7NOE&O/"V&nNcVOj,8XJ2c+F?f>Iucq6=<RfJ"Pd=cCat7#[Op!6^BVM726PD4bEQqd%@FZ]S<+*"<"c4FYo/dgc#o
%[HJ9BNA$BXYL?+6Ff9u:!"ICji4A-Y*fUA89/4Z#8R*-iYU$Bs8(M?5/mq]iAAO%81]ZX4dHHUH6!'-JfK^A"hbq>$ZoYMZj$N\!
%(hCC2pHp'a7DanV6c,OYrQ36&e44V!Ee-tKHK)(&<R+$]OY*1+Rh&^9 at S;LOO`P=Q=6tN6E*QAhkF(pZl at Q<$!tf1l<=p;>"Kjo.
%[*5[**$rekb+TVl!Ec^l9uL&<(NFX`po,-8p:%3ZiSJYb;jrZ6HW*k9L5CQsB\E\XER0n.S5Ha\:aib>*P1e_#q,/\UP/(=jomYJ
%XP0'MKh1Y at 9Y=U$hV#+oYogl]M=@O%a*2Yd%f?5XGh7OaNQ7V"!Ec:Kml)$e`*a20OS6 at IVXfC(N`iGEEA3\]%,d(.qiD5BK9:?h
%Okp3GlGUATd;\0^fe at e+o[,A``8]^]@E;]`Pek&ahUuis1S>NrYR.N>*P(QWIm7E6Pd:fD:^J^bK&'9jb(Pg@#-GUjZS82OgE5T+
%^]p+m^jZmK%ZMrkkup$bN:;s'`!rd,=C/qN1At6L"cr+%1isbNSM$j6!_9c[QI4^RkG0Pr=4`A%C!!]&,#16\cq1hZS!M!`CS8^q
%p9&]2hn8gT#,2>8/ls%TXdG+;NT+iC6;W!L\.#`jK>8[u3.?NKft<oD*lQ"dmQhOHq3o7TiW9K!p?/U9k$+_uOXD>37ZoA-LP<FY
%`Q#k1!trT4"-8A>4Sl?>)Zu6T[s%DKe[VPAQ6osgaq\],j.UM%G$H at 3FG]X7Ep2XQ1['LNTojBZ`(a50)0Fje!Me`&KkJamfn-!\
%cj>^.AC(WELI]L\$dYIZZNWk at TaT2>$cs/(.#0E;K20W+*$p at m4G1qM/NA+f?$HPoS]+(ETaT2>6V\[m%UF;`*Q;To*'3hKjH-`-
%4"e<MhkKJKi!c^U(gW"2l%Ml$D;7<gKcB2s(I?.^aWGgbltsj]r at 0$[HB2\Cg.NL"`ckX-LR<gh'@/3#B%chF1ip34 at 7b^;qsjU8
%pd0L"mDB:Hc^Q^',BGIqIbr/r#Xj.N:D9R1MO!uS'tF\9;VQ%9&"5=6J?F/GA+nB-d6m-q;(m;I#k]`XC^)>LZ8O(68d)\ej&LW`
%h4t95hd&1'a_l`K"nD-W1"gF%LiGXGV//7I.4X"&r`5+GD$bmcfaKX#)hOS"2a]+@(9FoVV<'ET8>nKlo.ci^H<,Kh+saFW9WJhf
%'@?p at RptZH`tt&Y3)JNA at us;RUt6>.#md'3",CRS0"AeE>=b'cH[!L9WG01)RuimN.hBkj7@=ekjRGD2%$Y`EP/lak]R9>Gk/<om
%E,&Q.0F>a78k86!h[8*?Iro-iQ6XD1jmbe,JWHGDkIX)db]t9QO3\KUN+*!s,9dt,7"S.gIM![t,'_@[?mHsm#oEeInERt('T5Ms
%)2r%i.)=Vh?[BA\CSMQbIYu4<M.OkJHXjeg)+0Fga30eWd1u`_E*T--4X/^&Uiq4Ep2fqTp;+afp3Q$:q&bXali;!;%/&2L#7'2h
%Yh#(eN^e#8YP(Kld3L2=/ms>8$[0.#AL,2'$d?$M'j%m28!5*?Hm'mr*gJ&'2n]As/r5VO6)\_jW8"umgWH-;FhCk^pYGS8+3B3V
%/%6N:^r\9Q%MZ@='s,-*"M"f?':]Zrh*Em)4na4M:uWKm:W/E at TMoZHp"P8_nC[3#_888WR:GYb*+/fN?Q#%2U,1h7?*[6/p$L6o
%&Xe_5iJr`an5EFW`]g^Z?De!caEY?CGPlZmkDdPj9%#+")2H8HG"7S6W)H?W.6g$le1`W5L>BZj14fH(fC$]l)*gp>"Rkc7T8"+;
%+qo-k&kPG02'RZEBW<F)FbkjtDN'BF,$o_)E'u$REXoQeO?*K?kCi8daE`_USmrLtLDn?<h@&*]0h>(!d]\Hm%.k#*p0=T_kP5so
%UG:%'gN.P`#4:Z7L"^?Jrl"T!5DS[Ggq"&^5)*8X at Uoj9k1)mNfgLe3\iBM\Tn5om+%*n_EAiUYe-QJ5\iDcAIQ^p.5Y'+Ef284m
%Ql1RJ?."Q at 6g)@tI5.<*2su(';9p>BQOanOA)k[dUF5;O1ZAUo':o^NIu!;;q/CqV/7c\Y4!-*G7*r4"_hIH3ihkiTo&7NVN-rQ_
%9_iXL&%jhGDVY&,!Ekq&cA)f%`IaCu[Ot`naK3Dg/n-JZlogI28rdOg`n1q2^m$Rp51'0``ep%b)'J:!4<K>=6(ml;$m'eMQb[T&
%c]Pp2Mo-)c,Nm\m-qjo#\PcP*)/.'3i#0=ZHf/E$GQpN_D9aYdjh"t]!U7>4(h._Qd\3m-DYZ1(F_XPHXiWBV?HJ&T at t@jJB>.lR
%P6P7O7DGr6"#JZMGYS>fE2(XDM;c,\3!5&3mjrW:(,<H-S-ssFdgFlBIF36aE7AT8o:`'>!e,R0MQgo)LH6P&[5r:?G^sd=!a^mC
%,P?)I)6&t_a[j,B*^`Ds4L$l3N)Y<`QAedr1O;M?65`9_.V>kQ*s:o`f,'gh"Tf<WBPOVC7d_4:5XG%#iF?N]\/*UK68I?;4*pg&
%iP\kMcAir)P&]=Okd-r&OUC8B,tj!i,H5WLqiq8[_?HPt1sT&[\g&CC4`]U_3-'c=6hjn!dm&3I"tCs/_$\=-?K./qK1,?gnFg.%
%53(rl>'T65eL8DNI2 at D<%No8rHG9+/&2qb?pQ4 at t`J)*DFA-/%Z%Nd63\RN(*1?ALnm8)TRlt'JSFl42#[nNkp`<DT@,E4WHharq
%?AkC8REDEC5(9-`V<If51gV=(R$uc6Q;\0fP=rPRr"Ldq5>07l'b("`N&?Nm`P"cIb$BGXfjqJDq at pQc,>R[mib0s1i)dLQh2ZQ>
%87blZ=a+JX-!m2.:3OfC:Ruk;A_:_'G at AU2%uZ!uP"W1b)Drj5>#]Hqh*Y;M>=oED'JJ"F)cce(isX-o>=mY+>b^q-j$[S1F'Tbl
%2'&&mVglp->gBa0;S]HQP24t@:S[@Tq!PVD1[NP^\VoXD7]R\lDFmKpp[Prc:'NVF\skP%K?1Y9Q=2^LfpVPm.Z3O9BqB_4R<Us"
%Z0E?(f%bUuK5+.$XeoPmm//tpM?e,GcAj&_a2b^R_V5G9c\*2P4-&0<gLn>D:OdXKb'PA56`'M'H`YqPJLCJr8anlD)nng"#O],0
%:@3nNUSWJ1b:hF*g.cVU0)^$<g5kPH3PV8G)21/DR2 at 4hdY[VQQD/:;EUE'"\]W-CKj8^6DLbC@!qD2_pFY[9OZ<.3SY\5d$>Q)X
%7cG%Di[0ETnfkd7CNm&I,fVs!0;,X7^9M7uq7.:D`aN=ee+re?^/;D&ZK_:-l(ZLZ))Ri.0.*&WO#riV0:*11A\?]<I[lT=HT#/;
%e9\4LFFG0##!!hP?8c*=*l[Y[e+p,ppohAkP"k*\;jp>q]J;6Y2P'm%laX:cJoaE$R8"LhS?!7.l%G&jFtT?SWp!",FFKEN_A+=9
%7lHoFQ\<oS0kJi0jjNt[Qnr20S_s4qB0qV1S'DNY>N$T42P"2-SPRPPLtQmf;J`RR\d41Q.@\U9QYo'G`Q4qJbG>TfYo4dTcHl(R
%k#RP7:$8Enh"N.S,Fcts[=n=?A'Lll".5,>?AHb%o,Hl.Q'%cHl,41n9.M1WbE1D!rdJE$3JPbT'8U(dP/3Pk_e.Bn+XERD'P*G;
%Vabb.anl!7[kE"S;i3Cd_ at je3++EYi#LITsj04A9OkRZh?&[gX\d7V29_[)>q:o$6B3iHN;rl33!gAe'@dq'MOid+_=9-YeNk1'j
%0&Fs'"AcJ?470q'Q]&G,f!e;#]0!5qEPsk<Qaheg;o=:8ab[-/!^.`Mb50>m4ec5c8(><Na;Y6i\1PmPdG9mECJMN%BKo0aP<@tb
%GDS9kj,pOU,I*0*Msb%$dZ*5Xm#eH]'=0Y#0=m(6VA+!oh1-*V+g8HJN at 9*+\f3>)WW/F!^6?A20"N!2ZNn\^_HlNGSo_:u`]T1Q
%hKVf]`c5/X20(=q?MIh8HRE?7,+[WJ_ZBL8j-YmT7F#5thI#_HQ,j?uJi@\fbt94)dm\(kMmnNOBp4UsaalBe\J at GB1]<=hB&^?J
%3me`_BY=X<o<At at 6?]7o8%%iBp].q"Ls8/Uh,#BkIq0T&HH4\E'dN<i$qh`HMT]E#)?#qA#+>#`GBP."Td6iQ$Fm=fRDL[29dd`.
%cPDIZ"1pLsp3/+;QWX-s(:f_F5On&`/_63%55&:^Nc"hT(JC/&F&sJ5:Rd$%KAH8?[^61g>5o)t$[V#RpaqnR6 at ZtgSKl$`VOW_=
%#/g'&h-bKq8RrZ9p+KSOg$cbFO7T-6'+U8R?(HV`)?#d"$>6m'Wa5T3_?nmN1tZ,7&.kI%L(RI2_=m.16R_OtA/HKl5K""T^A4$1
%,E&5qC4,bV8)8,#cPdnuL-$RMdJ&[5!AeWqDR^YNVS%KOM#qS;)c[;02r'+YcQ=Ar,i/uSM-s`J`7go&\;P^6q:=BraGF2I9!^Vl
%EM>o"`*.H'f5DAL*fQ^n.o-Rs96t". at kC1<7:bO*cYaidS1=Xg<\u=ScP;!e>%0(76KZG<'5K6gc\:,h\T3f0p:ed/Z*)7`D&@10
%;ubtubhkGlT>5j7>5n91Ko"]<8PE2rV($@!o1rj'92^*H%c4J^qVjR(!:1rMG!W=dmOsh*lnaAq`^jRM,/3r!r6!&T\-)3m.g+q0
%V+`dX04Uedk_UcSVaAk""uQg]l$BD.'dt*Cfkm+Kp*q&Dm_(&fclCYH2L(jbUC'-H^kZHRNH-jU+2u6Ch;`S.=b$t+Xc?i-'XRTP
%ZY%FNnua%ohZ=_'Q:,Vd)r#Lrd&!tQ4(@B_3mtX;+#JE#@jA58m<"TL<$KSMoQI?PbjIR1O,_Ze96M-#qMHQ-0<=MF;teR4HRQnJ
%\Pgm;>rg_\)F[DEhnq at G/6VuJE%;UNJba8UT;QLE&g"EcU:bjAS==`j at Iq$8cd!08$-W8D/\Crt:[[,piFu\pe+2qe92MCeJZ3@?
%FOrY14;DgXVl"Sa5AEL[E9?lJpXGOhW@&d*<_1*6mn+6!]W))m.TJ%a0VD9QEpD^YH15T+O[`SC&e69=>qNS6XbE[2^d_sORJ_gR
%\alWVA]#GBT*]>@dlh&2q)+U3e(h]tqo(ACW7ENV4Scu$@^^OQqA#pb_p;C_e1^n\NQLXEo$pS_7/_c.*LeB17HUc20fkjG&Xfi:
%W(Q0L'0J_:'4$Q6PLL9?=V&(qNTCe)')GcHpPMu#QD'BJkZg$Lh^rG[3u)raB)b2aW;0lW.cKR\`3j\[SoCjYbq-+E8[kP;92M.L
%OPt:"A8>15<n^fOHSno+>0maRcT/\Dph at NL>(M$I&AQ:Ll#F&t_!V\tQhX^-&\H^/"*?$f^mbAdANAgPHJ4kf]s2J,g?1.`Eq at mB
%>`!LrEO7H1Yh'8r;1`")MO!W__RID#?+2GIAX2G)EH:^H=EtnL2I[.=Qep]I[3dit`=-G.k\+?>@)RVenT"V>kDMcS/`k>b>-['s
%mS+pHs4Yc)nf<a3>RaW6N6b"C<[Zl87#X8'lGS7HXSR+r%!^D>&1cfiHlerSRJ$*E.\C>-H``5c^_gI?cr4U%ZeN99$W-])'$6Z/
%`7M,1bADbt1 at rOBIuKP#oc.tsJJ0X\g+kY"/bkig(tQ31.J3j,#>G at 9`m:u]ka0%+4-_VmcC;Q<$ejA,Bm([6F^d-o-cTG+nUUl+
%X4m<+%0C?RNXqgcA1l1N'H>Yl,6096j`22qKd<JeV$jn9G_aKEN,'HFmn+NU$d^Jj_)[$0VeQX%"mGAAE"8Q(IcLO9!9<2A1<gp)
%!X4,llpa.1Fg1tQ!!?2+?OgK-*N>0(JC.:g^g;_GZ2b!jfp;dXQ=CY#Ne),uoCnC-Ac]or!=\U_O3[^/)X:57+`Cm1n5@!9N7>+=
%aqkXi(t5=/M>0\QKM2,'HL)/Jb"&5%_qon[pJO0rL&83Cnfa'&VuH%ZI"U<`3R"=I^/5(#<6b/89k$35hF*nD-/Ro7hI8C'Z_@;8
%oc#lS/)XaK+jPf\ia0AbeAcGcP]O%c./T7ghs2)MFZ5&]TuaorURqu1k?bo*q3<2^lfV*b09kG5a[=nM[ha:j?QpN.A at JNOI';F8
%R9[Ydlf[@8pT8o$SLVP6lPGRbkl$bKh!5c*X5CuWJ?XD!_@]D!l!D-'*NJ/1f.[%GX at .Ab4_Gr4qLqQq\&Q,G7t][a(I$5lm'38Q
%olFtIlFYSbKG1:hp\KS^SP"k*?GG]?NcEk?(OiFB@/'0phs35RI=/rhlfX#^^""doUt1+coaBVO7U$bV]meoJ.TDIgI]m*lH4&=a
%5-?HAi*6/mH*>-BlPI91KCf(%me$tFE#k=.3oI]#6!7U4C;PdP%fe.IGpMD44k.@:ontL#UYP0J1Rdd7IRDu42rH,+JbS\oT(aA_
%l8MU!a*F?Dm9(Wn[G*UZ]meoZ>OD?:>7?;!f.[%a&*I8jdI-\6;m(K]UW&1cput<Ip\I>EZ#SRb(OiFBGjaUMg8#>T5/*^$drE%P
%1#2*8U%nN5K:UlGJ$35?<IDV$Ar(g4_NHM=^8YI"qRq?llt,)>2elAs4>TK0Y8le5^Mku!aK-KJ?9a5!ITa1ugrD?u(2gp9I%s0;
%4Lb0HFrt)H/DQ=M=$HBT%@[dPEY:mVf?YatICK'8<lT*^+&?M?^X\D1Z-i%5$fC/9/D)]4lPJut1Q%/DkK3a)^\DeA2oWH(q at 2gn
%%Wnm]O:J(qqMf4`?nqR[5L4'86f72GI]Hg"*Q'^Udb0 at KM"R=$LUbqhr)UQ<HRsV4D!8!M6:>ghHi8]'@>;;D05r2Y!`&+Kg5(+S
%ip=,orEd8.aT803hW^`blaP97/9l2Co0V>p%m.#=C`)F(Hn"4fm6Xs3Je-a`mnR(4fc1&X[665q(nBW\,PJ:jebQ(5!g4m<Va+60
%RRK\A!9N''oN3Ve3bp,9NEgC5[ih0,Vom6;7#=mZI&cT0Zf>dJQ+i`[:157n2=n'NOijj+0$GuPI9Z:nb9tp5BD'T:<%e3r8`eif
%92]?i<rk.-V,cE>[XMA;df.PNUU:'op+@@CC*1mgJSIbh47s!G]_h4G>tDY`FRcU3,@)p.A>G]Ko3(>WH/_A at Gdr'`*`(:WoV>g<
%85BJY?_'riSEk:c>0EHY\Ts<.GCCUX9QqgJN@)J5%s'gF(@/0Y8)&gMgW%52c$O2C3dl-5AM,o"e&S at j]@.jol%o]sGF4e7]VKa.
%C\m8jpJkp=N[Fn*IMUYki=d(AP'WEbV[A]qZa;PhH\Ko.QELd,j$N<0]3S)Xh+oV??>ICmOR+%)V+hK*#cW>`>JHI\+NMg;oX+0C
%gZ]\1c9&Q0 at B.RYc*+'%)cC6gDc<[K^$J?q7u(I-aTpiD1KRMV]s[>"r2P$e/*/7A. at QIq9.F<0+3?Bi;XUKli%_[qio at VUmj[ki
%`*3DpSCtrSpM$MlFD?!\:eND&AhGdt[Zm41RCUham)B6qmAB#q9cRWrm3+Yq:G!@3f at 7[ReTP]qHP/$7I[c:ol1LIe4R10?H*/PK
%-dot[2('VTNuQ:>W=Bf98m+/.iS/'N??gs,K5VR``3#AHT+bAu[Q7uJoctuMc&nWs'Jo+1n(JboYrtb7H^ji&-h=Q+cO,snMth at U
%rS6!A#g`Xdo#p4*-0=b>WUSHlmhYUL0CM17oISS<[J[,tJ7-/7X?nGSUZtfuPs6`N3Y.J"S+Ce%?mk,"!8HhQ^`OQ<p4ESeY]N7T
%D6;*G12$ha`O<75$VkiLjfP()d!K12VR!gZJ293dgin8J^k3;gr)D:o;t0C'A'P;J85)DkrSu$%<gj+@]=(;<$*$<*[->:2$L%hN
%p at p%kOlZa%n\WUn!d9S6:@@mXboN='WpoEo&:\_3&tdH:"5,=VGJ1a>;!a%JncT&5ganb3eWoBqpZB\FAYlL,[Q0a'@r>TN&fk%<
%Y>a,`Lu'DP5?>!n^Cm3G]B1cige+ at m)`+n.d`sATV at kSqOuXn^.J'BioM6d>]sFKX2BF4`UKpqYRfl`Rd at QC7O]VuVhL#ucT'+a_
%T^_nPP+VJmB&VLH9^U`mo7O>\m3jR]<`St)=,h`<KD^!]+>/h6*.D5UfXmcb'*%YJ$U"+kF6WZBld+apC3T;QGt=oqQ,hS44ltqd
%43_a?r%a(_;)_5">cp66^(ikkb0ah=S2>qmc!'5,5pkLm%Fkb,1^qGMG>bSfQ*hQZ@;OD>OQ8!=,6Qi'1B7'J3;$[Z4otS-^GQe9
%'`4["/h1qKCWlO3`JK5idm;\3o;aqNfZd($>Osn7e\*\E^:;lLls32H&JI120(tXe4!NHW.WP^_gjS8h-^6-oCq'o=na\.eH[(`_
%)Y@[!gc2qU>'9cp2-Y"#V&#Q8mSKrfc4L91(Sca&YT[5aVJ6X[ViW(=a.+t_SubQW)ti$0#AC1^YqfJWq:O`/\NPS7 at D>ZXc4dl_
%mhI-]Q-M2!H/6UelksAH,BZcd*_j]ZEf:P(T.<"6qGf1Aj'),0V0QN.K17B[q?;/poo$`$^<stkkKli8e#-f7#_7Zk?/Ad.\f34n
%`+:S\^QuXe/j=\!?=!DM?\2>Nk<4c&m)b7jb$1 at m"q8fS&Ni%CZgjN]WTKH at 5c`<g]^h$H;PHIn;u=8]QtTO]mDXsA!+_ai"+,Cn
%"?#&>3DUoi\e<:6]=-F:$t%fe;V?4E]KZ41rB6cD0AR]l=G:V0fRT$Jc-<0(a[>W?Bt@;J.S\J0G06/@[?HTZ1O0n1.]4"s;I?J,
%;^\cfqq]B]je$`Nm^$*[!b?XqM]2dY^M'M_El%g]?uo7+Zrt6N/nHt![BW^1^0=KnV8pGUn_pX`I9`*t^'hJ<C$2PRXcsap-8QXK
%;OnbKh*Z at QJSTs@Cc8BBa_lC<Ie-Dr]=@2Yf<!81iUeMjOoO9%fe6F-1YM?Dlbj#?1MFc*T`UQuh4o]*_]n8'T7.'$[="s<ZItMd
%b%'mHhH8Y54Rkej[ZnE1>8-UD5LV'B5=bn`_fmM6]3jpOLW\X>O]b2,)O!hk-U@'&IIf7Y!AA-e;FAXnbA5RZ\'28AhGiaB['d=<
%=Z at q2hZFH2+Y(Xs[Cd/Dnit!$]pYt1]fG+Y(Lu1)G.]ksg619'?,!@egSXGF\pi5b.+TotSW/PqX7)&!G3?I-\?J,!3-nrb#81]K
%V70gf'-`@jeGW'4H;-=k+I,SR/gHF!$u3]DqpBcY]pg?DN`(0`>'E'j6Qhsk%tse at N5g%@N5TBfibG0N.bUsgNLBJ,\ah/s5W--Y
%ZIiA1rD^9"6&hK(K1!>d=4l)&*Di?(e'52(]j[2NQ\BJC at Hh4rB"nZCZIQIp\q<VadRLCorZE&hb_0DXh8Abj>D<O_88>#-/8fp^
%2")(A;Dpbg*D"h<ehH%gO0%*W.5Xm-a$:FXXZ])UM*t7mc6)5lIHtA&).X=lN.<`$bm':fo_4--[^`UI)J2sV*b,ZbcXPg8I.0-9
%j-G21BGkJ!)qnuq&DB//-n_J(6'jAGY#l!F4Tt(JE#*(@5KOh+a-a7=g+q/aMksKG#d*ro%1EiC<%:$5SN%#51ii*@AnjW2*7CIc
%F.5d:nZI7s0&Ad<GC/geZ%JaT;]7fO.LW4EF7I*6nOZi.S[a)i^%0Mj5F\@%IBeF<%[n5d=en3EAuA<olB[m.8&lSCQ'/:7(!`+p
%B1b7p`\*3>An#7]]ood5_r#;'NJp0k,Mh_E"rYUBFo7OYC)[t9X#i!:B;tHcEV/3,'.Ea/k/?Q0jKOUn09:/nbBG%hV<l<&-]p$q
%XYue]feD'Wa,#Oc4jis$OUT8IqOGb_Z0(JjAo;'@p$GTrNo"cT4g%q(&51,&NK1&b+F,.o*r at +nj[=E65 at JO0qM.3'eD*EdD7aBt
%mNmibq/EpWk8.2)L7cul at K<*n\C-i^"cY'`\;6/RTPO'30V;b36Kpm0UiG7A\`>(>;bKKYU_Y"YGO_Sq>52uBdKQ!5?PCUBK,g_"
%TAE6W>C:ful(P&*BRUh$!SGs,=1I:1=$>h,Eden6j`:$nr!>Q-o/l[L*B:Ti0t$S/[C,N(lMM95AkSq0+<2&#cnH87-,3iH&/u^<
%0F!g=0bHBY,qq).B_/u2Dq")F1n^Il">>fGikT&$,<_b-Ku+!U2XpW*3/`Fh18Za-=NbNY8mLm);RjB;Sc"nS?_8AYJ]EAip#WGd
%nJW$Qi3>SdCImFTjfr4`)HaLg=mk9RgcalSS4[*=DIt2kI(=NN=BK60)hjVcLR$<a]Y7TPBJ%JnDCW?s_RAuV\FFan?7pHiT9#;i
%jU8COq>+#BXj<9_b1V+?3g'+=s2G`Ko2p-loXL[`I`@AR-9eRl`S_>k=Gn[1EW3hA_Zt;(h8#WIE'Eh0itQru-dptY_!sB=M=cn'
%aFTcjM89ZBp@#Jg#EOoT_sq,oqm8NSj[?<H)W=<daV\j/qrA\<PD>3[AYs at O(^iFBT>r[6'gGKJlqe.TF*XY6.t6RJCG at 3)ms2?S
%;#cpOBpV&3G6_Es+4t435FK,6S=T\/LnWSE^-;I$Gtc&`V)%^HEIq\i8dCmM$^JcY`a#@eW;_h=-'<*GB>2egXk,2X4pW24*JiI3
%@`D*==ARbu`g&:$A,'n\DL,r`Cl;+JYH#9$p$UV[nV7=?%(j$4pdYO[I%u$'rntSU@>F[?cON&TG21XD7gGUoHQrED#C`U/^4?OG
%g!fgG#G)>c\c:be%QkX&p_I]0^f/_=*B4`+:Z8gF*E9I\dN.0;L/&>5CeJ:bP)."_!t6s>Y$LrhpUrULVd92"ksk1P@@!M9>8<h\
%;DqB'9\:ji(TtAr."GG5*OS0aeB8mEo>R^%ZJu0=)=(IK0Hap?'5Qo<gcKAtM:gjE:K/fXk)#;e;JebHGsGV?*>`N'oo,!m5aW&b
%+ at EWoQ1("Te`l1")8*-#K"Uc<V.kUY$teSFX,AM\^$e/E?F[U"hmrL6o/]DF5J6m7^?"J6@>jsCQ_OZ<hEKn>q[_gbE.gF;2D40m
%_EC/m9[@>%DssBpg(lf4h2FMSjQ#fpEjj`#[-m=g,F,T:ph5iZr'*C[=m:7+aXFSX]/S&SYh?b::Ad:'E^d0[_G0E at D]0,Aa`XC1
%E](U0lCQ]t\.a_gF*hF2iQ?T%e%@qtgQ)-S8['HJ,UhN^4qJg(&A`c(("mLC7KdCHDFu%fHLY4(-@/W>OoQG4.osNK6k_kWZ9E?:
%;)Njqa[i*&aFS_(j@(1Xc=-(?<%D%I7-JGnh`=0H4AVO'"n9?E7\F4:-2#4EZ1>+s.#;"j&2=/ErlaZ`O<A?>o7?JJk/p5OQsCQ*
%&+nYK`DP%(L5Rq^`5C!DNS4V/e<\!,PoKlk+rpks at 5b91#KZVUS.N:L'#`uPAmlh_7,60l&6LEE%Kt`W_[@Y- at l2\p?^V<'J?iNf
%5B;AnQ)PNE%fd4a)[qB>K9RG!E1_CE[%M at L`hXhch2/8IU8qU<cD`bQ<0r[Ah/cq\]A at od*Xfk8(L-2b4QZgP323A4"9qGnLQ_Gf
%?joBa(G?&.<&D6kL\'-uBIJN-_8BbC2-S_B[FKoh49a,8do at 1a`E2@:MT)EFZ7of2S/GHIQ)U!a+ at h5DEnG%REJti,EI$%LR?85f
%hMJ:ULs#sNeOEW_l)P2`I,iB&qU/*Ko8pXWU^PqsiHDL&^AAl*BAL\HU$9bo%?B5'^<BE'_F^4G5:iq@]Ubg$PGOLLI4d"1gTLu1
%M2CB`:OuI75r.-!`#DS*cR3CH&l7,3Dg5dsFBP(Z5J[Q[BYi#kH'ZB:'#aF%7JcVi>9fP"1[<K4aqO1a,l(.F)t,m6F\hAfK%,1R
%+3]QPMWndN_1MI?>^j(&AB=peKg'fiIBt"e_E3ZS4!4C:+\cO5\+V2LG1jNqcLd3HYobMX%m]itg.OF%LH1qAFsmsC?/@L5EV'cU
%BLRB!8DC at uc-n/gD&EN8f:m+q:Jl$Jb,G1j^DKD^ahK+\$-4dS7gSf)"8d+[/$mIUlcQl2%8-6$PZ_M<-HoUn>Qeu8VTT at um)-iK
%F>5Yf-Ji:O_@\0f*$*@63WLND%OW5'?Uk;[Or.-?9m0V#c^-`5g:;B/aPXaEBWtt>jtt%U3H(H6`$`Do1dc<WkOk#`H+>&X^/EZk
%70R[&3E[fem)YF19.rdrqpm`.fXIL-#Fa[LSuk2^Dot.R/7.TU^uNZD_RmqLKj$(t`#frq&q0ZIkCg[#R_?!elUFQ at I9M*uD*QBL
%%cla5Z[g6JAZBDKRnbj\g%RLgrSs6RrR0OtlI8s[`O+Y63C^nMltT]`G_7XfCoZ`lSJlG=5"?oF=uk2JP5"V>/YtfYX\P4_Fh=Nn
%C0l9&4T-]K(!l:uV8gGHiT0?CVYn*:EJZ_j"n`'qH0r!K)NgZnYKEX.`0<f_0fRA:*E6\^RdA"gg)QsKbj+F4afZrcX at +FE+AuZ0
%l*=QjC8=mY`$*gZd%&6^pN(mtUX-4;F*St-PSS3#M2&EZ1)J&h(/S&UiX$N)2Oi!tK3\%@cN!MhI7GJqbk>2d4FLATX_AZs?Hc$F
%REQ;iO^')DA3g1/hNBM7$iBNDp3V]Kamsj;=5$qo8Pls\'bf0#:U'\/.\oR?U#]%p%lu5anCuZa8)ZPFdE",7]N&);g-&)&-ZAD8
%GeW;`,phiU&)7]5?p!XgO`=7Ws/[O;H-8aIRUmge-U3SokGV=/Y;_XQM<...YTq?Sc.?!m;lcJ>rpH%T00`gOAhU]ZbS<m24$0<G
%WkGcGCIpQB:O-1#/Md<5]CWrC7pOgB#lAJ)hQ3j*mE(RBC?\I(?Lr("RoQq!ED,0q]siBCY)Fr[e3 at p@?5 at U4:N8P!PZj:]'U%/8
%GFFX*C;)F:DH7OF.]rWF._U_n%Amft?*14m(Db_[],Q)tGKnoL\]e)X2qg^2F*AjoDCX7NQ.<b:$d#U>5;Hg-MNQ<q\9O1*1Q0ci
%`,?GVQLQYbA&*Ee_'c4mIpZ;r_^+ask;WRqCg!>*\tb-rB(_TAaN^bU14(Z0&^g'YpsYi'0YNm&bL#$cOMNrd"JVa&]tgKEXdCCY
%S$cVIfuieZ?,(&kEnShq_C6(7Tb>e?"j:Lp at mN4'6;4V-ad-uIo<@1a0ag;q1r$FdbaVb?AWSXu.1no$+DMBha^'^%hPao<3g*<h
%c*O/a[a#VN9J.AXE"&$f*qmD?Z&a)Em5Z$p)ks'I]Uu#J6HlN;J^o!m,,'D-nF;B#Y:*M7QR4l96^aLfc>j;$LQ(<,GdbTa;:_!c
%(k&K9F-M3BG4$>"E.*o at K85n3=GZ.'+I2,j9?"dDo^YrN,JVh_S/%KZo[&E=gURQ$>q306=8$0JVV:D0,`_?brdo)I"?l_Aq'8Uo
%KdbiDB'Hei`!&:R_O6TA#(NCcPHDhM4eI+36i6eadrQY1%J4q;`@/)%ULqf5#PM!rMrIk`T2e<>!!;P7qs9WpGE#C'2nEBUYa"j;
%UGlitT-(aTcWGQaF3`7g?P0iRGFKgP!;*lW8&(>XG3A*KU#3P-Q'<_efCNQLDiC0hm7-=lh*$B.AnCp5ULuc at I/sQ&euoK<6L*fL
%@cP"AA5PHX$:lV;WFI#q1XMON/%4;>VoM+TI(,17cd]31mI at G_&nACQr9P0:A\8e:T=mQlPK%@Bpt706L[l96(-d/bI?.OH),6i3
%krZB'X-c;1Ho:Y&Lr9$@n>3P1dP&>Mf9uB7&U$2cl_dLZ6/&kRaLVD"Yg%*&YDUakpK>_1'ULRnP[2U5VGpk^.bh"t^\S!/9Y,CQ
%9lEgGMisp-c4CA7b^@3HLC0WPNQejpO5I6d=jAXPEEP9?, at N>JlDmLElqQ at Ijl,72A6#!<kB/GJg9n6aFi%5,fU>ge1*R(Z.*IG-
%=E-g8QtpC''f9pp.6>gEic(JcQhG80iB\^j=kR at S\.M:4]b*hd8'nb;^c5IB6?VD:+bG$pOA0.,+/CYRpi<[%SIfFj+H-ghIKESK
%S_ZH&bK3u/%P-?=Yu37UE['jaEtf2HSCDKXdAu82fBjCf&I*cVdQIpUO.@*f6DY=@[2]VbEf;=!ff(/p+2LY4!PnFAoRU\OidqH_
%:)=C54]%"F.c&.sXb"t(i6hkiY!&5.3I^V#.!t,GgsJ*1meHNB"E<B%i81)T>jIEWhdZ!JUZ]\MJ4k8H5(A;$/j!/0\<VrK7$qd1
%GPJ$`mJ>!,+Di3*^UP_9I:r/s[Er-WEkh!&2"pc##(p0kH-EmkkP9H]X`Ie>15O1bES:!\,FUppqV\("V_<r:J4B.NO-I^qZ-hbD
%X*&5"]De38:#^(<-_k<bV0hBU8BkCeS@\D$5*)L^aLt9TmjLdro\h#[lgR*bq'Ct4c_'%@39%L%ZY/>B("`&$*3J6_,Ia(.MFQU[
%;T9?DOI=i`%9&k%cs,?S#mG\mmC'>8G(hQ=iKKND&9/[c]Fe?SM`?_EhMC2)(3(<i]Fe?SM`?_EhFMN%$Aga&-f2qjSd^K9N[N])
%r;FEej*9RCM0+!\EBNb\P/eFQE?%ce&U3u&73'>]De--q(i^Nk]FcAi at 1gPIn]";doOYITK'J0J07Jg"B[0b,"Di3iQ]09RYB9;o
%l`aOA<#Iu#fuf$9rmg*=\K;AH<aiGco5f$.7!7KgA#lf3Fhdb2fGf_o'`a<?^6r>4\ENEL>k9I&0`#t,FR+;NaP4VPSZq,!QedSj
%_TYN1N6C(Z\8fCNiBEpJH+V80X_jt1cI=1,5SWof)U_i7aOc*I'_[BfSg>&]RQs5d5TQ&kMT]5e):Lb]Q5qWjord9=qI,]/oqjWl
%=:qnV;2!r&h9M2*dsR?LX]tg</[:g:iu6ug\bR_X5:4fm-onF&IbImiJ)%-=f:2ZfIqkO-S>?1Ki.(Ni\!"%+-5BgA+$,_U5:84^
%DGm'#mR)>^\O*2qWk\2kX_,!4:N?c"Xq(0OG=ouR,d$qLFdJ:0k`,3?[GfLa/p]]J%j)H_Z2jo1r@@C?IuY.>P5ao++gI'C_ggUb
%/q!I(7K6!&;XtrUHS6[Pn\p]FWiB4P[#Cf\RTWdF:4GQ45&9AZP#O:bX"$S&8P17$K+][b/+=?];_6*cW]GS`XQ3#@<QqOUi^5l$
%eT?&5-s9-h=b1)b*''Y9)k''!P>*KeYK:N[Q`ub[mmATs;PK9d,qJ.YPItNHW_.Rd8IB/@SsbI0\mh\dEE0ihj_<mOPB>Q;ge4 at C
%Gb;cZ8^ODP)>HY/'Nrc"(J.JH`Caa&$\r at bLZP<=*A#J[&JK39ZCj4NTU%_8ru]efb8Q3iiOJt<q0.F3+eSh.2!fgS\/6P*;;p?Z
%Tj';:NLU/[82EE0.="r<am_aNTHSn&/Q1pZ<JA2V"fQ3_<m$oYE@%5W1^u.jA>$8H&8Fa=9suT.;Pp04WK"!E=0WO6V5P.YOUN'V
%/2:.qcsG#_QA-WTLK<nI+"Da at UZo(U<V!F*O#7:D$d)H,,jZ[:eFgJ:e7BqABeg*I,%jmb`_?^51>sJq/ONF08R7)=BVn?N=dkT\
%NKT(N5\rhTdW>jh!48mrhgpTHAKlktA["IS at E&dlVNk.-"fZ/IT$U.UWrf]&lNe at 6%<&f"E9sqon-oq`QK/d!$%'uPZ_iDo<gB`m
%XJc0[S+)LNaFZGkn7GunqJqb7><mQdDdk!m$"Q_E0RA[s0L-tXXau^5iK=28N$QdN91 at 0rUe''f,T>$1af at Zu+J<HL[q_',O#3,^
%,4l)sPAk&0:1PlEf2/P"TT,Y</-(TB)Dh\A1^tV-n3rN(Hb_Rc#q;cb%DYPf&MOoi0TRhp-_^LOTd0D'2Qn'Q,_2(-8LCF5jFLAh
%#quUE,*FJB.(Q2]CoA!WK3mSRC**-]72X_[#(oAS:b$`)>Ta>N*<jF'/,V?=!k9_[VNDK[!I7Wq'F)FG8etb3/"r=c:f"D'q%X4I
%$BbpONB.,1-nbZ<s+"2oq*@_(V?YbkJtACGL`-\k?1M%u=:W=f"Mue?JN"mlUaR?XZCh/P=2-G;!M51BK*%],pqP8M?g7EjFLe6K
%^MN+J=u7'00E<g$b((B!V30AKW^\m)1^++dVY1M*T5#6))$J&L3sQkh-.s_m+k(n3%i$Nl!*;fZC?NjCJqf:aU4KCJLmh6FW9H#-
%->c!TN%egihOIl';M0!?<74)!9gqr#5Yd0lRSs=n7G\0(e?LmJ!5L,\]M.r'8,uUD/CY(4Gn&C0Gn,b:;?MeAIOo#Q6O%\.-$:o<
%//<qG=/]]jPTTuU+M.pScHsCgd.3h8@*l[jaq?_>J9UUXO*C]%X9Hbl/lGMsE<,'Th#R6SjH]eLV#@#7!nIWR&6KJc<+W#,JEO`o
%KgDrY&ljcH`MQH`!b^Rk at A&VcT`P89'.XOrm>EAG&0&M>dYp:EkF_gn8,-p&46`PXV[U9N:$I0/Zn*?-dhF;t"`&^<AdO_@$.R0[
%Oa6gm97k!G$j!k:icN!cUYU%M0KblFBYd=`p5NKn4jT)]?`L]:g0ZV89;5Q3&MhWdL.5f&TJ=YtP(cfNbHM+LMJD?Xfh`-O!9QS/
%H\.rhW$)k+f:[ZN'-Mo=JK^-ig1M]kJHHja-c:iB''PRm.d=g.0S>k+Xp`%9&uSZVAIYo'A)fi;#hrY3m.n5R;IebXs,Oo$A)LEH
%W`7mj#1KbIFhEZV2Yu16@@-1kO\.S\k>h at I.+,"7L6J(8X<ElI=`E$`9cGumIX*X8K_AOTg1(+,O22E7epoN[:h<pTb#GSp%:Cdn
%\kll1X1t_ZQ8+=$kQGOl#NYVP+.Z4P^;hE2ruHZ!8"dVmlS(4l7UY:C1GYdU1V2qYL/Wih:P6==HkYdn,VBbT`30:PkA9_SE]AnS
%%,M!oCbQ60GaOc&`$/e>%AAHcEFP&&Mng59o*gUB%:'>D943XD25(.h5aXbFc.%DMH0CkGkl_VRjb4=dAb+n>V[-Qc%=s.4`Aj<\
%@B`F6*KYBE"78uZ*6&U6W)*V\]aA9.TW:`L/%S>\ZqOICYM!LFgh:)P+s:@1-t%1rkl)`K^iGlB6Eqc/7&LfB*;j at LaAR+2!)H3c
%.;1DeaD8R=P,)9W9NI9bH&UqKd4<VML((5O:nhQE?-BSK=;gneW_%F<\r\kYHpAR2(b"i*"(s9JQpD%(8D9jckSk*hYS'>YO.hNF
%=Gq/#!jX at G-r@75ap?.J!)m$s03L%GJGWlGZutl`9JTSIV&5^T3f]X5Y-rn;6A^_/5E<;b^6_q'?B\j`loeCH&-bIqK3&5kAK'`$
%beTQASJ''qi"?u</R(,DN5Jh.M+YF`Q[Ss%'s)p\OUR(%'aa/QM.JA8C.Ka$Z#jg0 at 2BIc<E!0s"g0o]qmoVI<,&.bYbrZ-`=hs/
%f*KWl1*C)`+JWfUC,-Z:^G9c4OOm`Ki%QB<`<=.hMTc*,eMP]SLH3_n,@]fb_K>ti>l\gO?!!^fi<G0<`WralQ7:=Q#2i$Z6$!%(
%(h=0ur;tdXMae:nfr/SoP*'sR^d'RWj-65f8paqZd'jEq#TOR\)1'mo_Bpa]*+>>%TWbq`@02#=@![tFU;H8#S4*F at -C\HF&;Kba
%Qa6t4RD;BRdijb`Ba0"gJ&WW%aNGJg)+[mOKF#aPkd>!%raisYi1r.\j\r$bKN$=SnGLE_1h[`o^A*sRn(P;IPrX8l,j'P`r[Yf9
%NiHBZj,5_2QWOA/&0iD:q\,AhPqXt_[mXiFae-ij:+ZpP<tPl at 9j>JY=:#Cs/sBt9;oBp"!8#^86*E>O42QYV,S$kOMdt^2Z:e;@
%0E()nr/0 at H>U[FuTYRkdK'Ok`N9_o at +`T2?!t"q6ob9lD8<@#R"_o"L'`]G`mhA$*;>]9UX9a,a;&OG4^e2i"E0;\dJt*+!j[^&0
%<O*t:GT./G9MPU)VEXVY)kG`RKX"iN2+:8\MAQ`BbTLto6jE.\m,B9na5CiAXCMlu%N,3"js47WE0=KPX>sB.,%pKQDd6Zq>bqVQ
%9WZ0pDueQ;%O68(Dtk&E7`#]o\:?2$'$;%9 at 2N.q#m5,^Z+K>kOc5DG=l_IY'YQ!^![B]O%O]q@!\69BN0aOS7f(G6aW<"&PH^B]
%D9-04NX92ATn'CG562TOiKB7:aBY"qFNI[`$bUXc6R]jT>,Fd3^`8G91SDrmLJAe;APO2)MUXm7&Au=mCo<)/,f%i>5p9\_f2,/M
%MF9O^q>kakcut:U$#o54S$hW-J[_1*cBC6,k#G8Qg-$"W)qWYP=VLlU'*j\+ic)An":`*i`ne.m6.ZhfG<9B+]:m0k9Ta=cr]9BT
%QE(E(RTKsiSRMo\D&51Uc&2_][Yku<j%=o<#T?MV0Sd2=:m6":GV'jHcJ2.qBC7t]3HKfh79j,\\TM.GP at PJN4(UZ.`?GBoYe]'n
%rQ?0b"Q+oVjFB#?FqEO'.rtj2m^$8gT<NjP?l3d._C8qfNp_fVlM!Cn9'0F!.9OUZQHPj":IP at -fn&/tfYV)6$,Y\dE>Af3q7NZd
%m1'E-JhEWGM6^S8 at KUXC**Mf0T]&tjAApg37[%,`ifnFc!WN\C:Jk/_r]7?J#Ob#<A[.Or[gkF8iflFN@[@D\ifl0C!T8jY.hp"I
%OV\G-)FBR=$PsVWJ;[&B$+RM+EHdYC\S1#fES>r<PLieXZ at K!`Rd-:f_$$'8<>B;c(Hnr^DP9m9]7iS>m/j:73\pe*[SuB(0qT!b
%<)XQ7$p.()4GcaEi[-!>'5IW>%7>3,6D;>@$Crrm.29q';[CX#A!%Se8_=4"n<dS0;;!OG*#J#W3X)rfkS2_<T0k`u1>=)hb*YhX
%_aS3:c:@*Lk:OrtCjFf<-i/f4GAqG@$95Nf0bn^JDF)?J/8DsXZ\=kr'UMB6PW;q"@a:*3Oe@?CpG9qTqj'6'fRDAKa>%JsIe]3h
%RbGd)YKTL`j"?BT/i7%YLj]#M17e"=.r.D<Rak)rFC[uPbcrp'2V_kMGlD8R)hQOmd8s$^#,cUA],GR4_4;#:>.E0Q;g$o%VITBt
%<,C3sMYdT_AJ,AP$<4>%co39>#3Y at pdo76'pqWFB at _Zo\LT)f,I\T&s2eY=l^c`pL9NNdq^J&kgGF+u2nLYD8.Haie;CmG$0f at 35
%10B:tl<>ULbAm,(o4&pYZj$tV4"R1:fU2lJ*B$_Om]eho^bQN`'[+/Yr6#ob_%VQh1DG#u!pMOumL0iX;Sc++h6mg-X(ci<^H``q
%_BSo$R7p9enQ"AO`=5EYS@<j8Khu:D]'S]@)S`/G]DE%,M()R[G(DEgqEAK-]=:kcPQK!\:241PRVl at 1;j0V at Kn7&q<V%dThrKUh
%Q20q\=K?^?FR?f`Ah/^SY&X*)AcVG_%KsBP95O. at P>)[5JH<W$dHsE99ZM"iZGJl31*BsGpX2?aS at A'L<nDF,-m2Yfac"MG8,)b%
%hnP,T.i9@=F^#i/5aHLc*%"$aZt;aqJ\03L\hYJo\0KBMOamgMZ7Km[+T]ZiQr&H?NSk2]<\.[0#dnZ/g+IX_3[tPJ?fsF*k>_jm
%`!VG8ZGB;SashDqQffkuIV$gcM=349oII7\:Z5To11uR4^A+!S8DCZMQ20r+=>s3o46k2"W/W.(1t1O5*_2_okd';!nj)du at a"ud
%FOTVq3_^""?r:nU0s]R9CIsmmi,TDd'<N)<s7USP]9;!ioaB&0S/24OKB:A&b9e;oJ-?cDO?deL@*fsSL%LcF7cWS(_mQMc.X(DO
%0*A=DZAW7u=KL8[/!`$-c1QdV>H\:uOg<N%L`hNm."WS]@aPaNbhI>LpQl:)F?+t^5j85=9ru_UJ=p[O7PLdUBlGO%XQMQePot_q
%QIA$SEh)qnkT81^JVl?l+hAilV0Jp^=I5a8d_c/+81EQ9U;t7RI>$B^%-gnufDF5JL*Xed<3?]P$oE`>=ZCNpQo`b09-*9QK>s'b
%XIL_3].?V*"0eR0!YgOjI&3oC;='P7EsNiGMQFilW8c#Af5TW-,T<hG'n35EaB1R3%QWcDOR6's9/uY$A!\`2&:Mi1?$nsk[Pn$`
%MKg0ZfWsE&^l4i@@1Q&(]:.G?>4-hB$9pFlfOR5M\M=_BMtsc5-0od\F+'%6*TdVt?tl]RdBjHkqfj>&AqIU4hN+Le[)[Q$`;A,0
%0K0XaDhh''mqCB_ep#DVL\XrC6Q9Lr4JP#Jhrsb%-Rp$XpK2'EBS?iFIjID_(Sn"giHlb(Kg,.S>R^nlJOk/Y7[1-blA2t#qab!^
%/-t+^B@;6d7IdW+h?%V'!*fU'52A#mhN7$eO0At_I/t7]8`lPT`&M^n-5$iG3PW+iM,C>g*!nV=rTHk.#N?S\$RVp*#aJKZ"C!BE
%<Yqi0+,N92Lfn-`1pYu`,2KgG'B*2MMTt&G8AY1t!spt,#/CL>iA[I:ohG[r&&2Hi/-J&9GGQQjYV&1NQK=@/C.C+2VJ=>l5U7\P
%+N)O5)LR't-lNO\7*JN8T5mU%Z/;J-Y<TT%3KqD-S4L<.<lsK0b[\S%B[GcX+>p"1?h>%,TMndmVO[kT_aR$<oG+ISL'*[u;rW)*
%#*D%[@2*=j\5n4c6L/Cj*\u:Q@[jrGNfXBt'FdXt95l)*rQShXG=<,NiZ:_.)f%2:E]eS?*D8[Mad6pF,jb[B,knqp5q["r)]1P#
%/olUu0G%rVF]-tZ*\cXdiJ_kALma10mhOPLCC>@96_em<WsdNU&[o at uY%JkiPE[H]fu.tSmiFR_L14C[Ee:'MO>!]$'/,0^3279C
%2X-m<Aj[-1OICpN-l1nZJ+lUG_fYkcG%f/m71:'P^uQj//>N%]ch76T!?<gu9ca?0?B@("S<E;egMiJ^L*5$5I#dQtMt)3)l4FFo
%"1pW'=fbJQJ4AE:Apo/;(eD7-^)JZ](d-3+CLE8?AA_.s-/Ig<cPNIh_tp>;G>$QC?l7T`>mlN#*B+P*E,H%(43XnNR+DhS<V_Kf
%%nu;[ZPEML"LGTQ#[Ku4S8Lk*`2F!.:5\3Dk53#_PMa386?1GkN8UoB8Im<=4&Z=%!b3s/R.!-![_n&iT-Ut8p1ok2%T<[hN5sFC
%-bSC7^;?#FKL:q!78rbn`Bc/@E!Au:2^+Arbeg6"G__]7F-t+ZILl0'+X`IYbU76+5.jJd36`l&$Jq'nWdI0Er'X5m3GchsLT,Yg
%l5nEHVW]35a-"#b"/S$.kZc;7X+594'Q=PO_T\<b"&8;tO at m"')]S<n6Z.J%JeV34h6?ViU7#;f_&l%U3FkakB?h^95r#*XcCMP"
%Ug%M]mZ\PHAIMHt&#@Hg0bZ>3`'einGL-mVY2]^A))LO0 at IA6^H0m;8ieE at PpPTA-a&%@C%?,Cke%_[i]\K'!EllLUa7Ho+5S&Ka
%+nbP at kca0[m(iO1[f[p1?cl.Mk/V_KU8E.2b72"Db'S*d?f3Gq_;'%5&hY?$"ZiG$mZG*>Lb23kAtp9jP$1n#bs::$8nOlo*i86Y
%h_udOAICL*YFs%#_ofr_:qn;fMZ+(I]B[$ed#MrmDZ(K4+5c;Tm*[:64A*ND)%E?n1R)ERY="IX+mNhYN.D5_2+jrG7DraX6#>R,
%d]jcr1?@S2Fm&FSr]R-k$L_`A_QrJBRej:,;f*E\4>7n:m_B]. at d4*m-,hS1gP\@3=GdMJ,S:*<8ks/<%t7jQPC_L/R@[+o8KWoH
%qJ.7VSD::U[>.srLX"@:1,Q>u\![+R*K5r`hI1:\N0YLH#Z"6b&\O#rEuuCPL)G]dalba&LJ8p$LLWREE=WL%m5f-XaZi88%We[+
%kI&3n'gQI=,T&O9a^M1u-,f;DhO'CLd3nZL]J2"B"P'lU<Q(HshLYr*9kcqk'u at T((\Itf4ingHP>YcH'"n>L._C;:W(H6,8Q>F^
%>=#Yg:/*L^e0KfD29B:,-D_B43i>o?5_D2l9hb\cibGi$A'1et)).=$K;LtGMmn87Nb"7:84]\T/iT":&=Mb%2AHOfc8[0&C,!Y(
%OW6,VUh>u;UW!h_mZ(I=nC=N_).r%X*TEjI6*=ie37&93QobS[mgc\qB7rB7Y32>,%U4rs\g1h'/O7<-]&*+!rQ/*m]acUZSj#KT
%BC.JGBR at sc`t5kgP+3&&ZJ3&&Ldb+JQsVqGf*9sap$e,&<'UK-,ZOeio2tcB^p9J&?Z]Q&G!]T4X358\\biY337LDgGs)$b"4/.=
%AGRhqI(\[-0rWDTTtF#?3FaZg,f\.l8HPY;'7$\,R"l,-&cK,lAd.U,9KcS`3FAm@'&'Q5TaT`2fur5DYR+tkGof;O*V$<+ECB at 8
%E_Hd&1"1LjG"?H]%$%GJBe]m4,,O3=^g#M2NL<J&@Yfl*V_sk0nGZgVlbb5Y<KlM!0pn??3,;EMgCA;K4F^jrm5Va:FcSKl2f*GF
%lTCZ;ZN[3A,SIq53,=L)*0/H/LZe.5(l&XCEVP1k at l>oZAB[,ahJmd%,RDd9c$@Na$o&6A>(QPdHZZ,H%QA3CGeGp9F`QprfJpO#
%XEJGM1 at F4B6]Ao1juD/#_;VLYgmWiqa5Ib!O:-iiR7n)L`&R[/%AjC%lKS_AA!jH8Tjuhc.[_:m`35:6<-n,)#B(hmJo6M2&0GYg
%[_fp4b=E&DG)4RcHSNaQdp\qG22hK;_N>'&)@a^JTTga!>cUN2&4!HP2SY7d"Cp<DS=-^(MYfDlX*t;=&JpA*B6q7-YgDHEL`a)G
%;(sI4pe?1(kQZ*QH=2[@)"tboAZZFOlPsa!ON@]])&kOd9(7q%51lC+Re*86KD*gtBJY<_03so7VF'])h<k)o$cPmN(S?38_7O%'
%IlIUA%W,n$;O^7OU'<6(TPg(,=DK\!l*f;%i)FU"C^=CM$Y0kg5%TSEfjWJ)BaUs'JtUYsAp&Y?=<"A\7N_Xs%>2A%YZ(KZF31VE
%kb+]-'E?<e7>_B+4U/6Z\>#%A[qIuHNKJmmUB46^7,Y]+2nClHqJa81$lUffIndL'VGrC:<D!C1Yqi=0(mOY4,Fa at XU/C;D>cbop
%M,<YOKD3Sn+aa`F/L+.qV-kK<R+GmHM&BGlM`T;=-!(D at Y_X<Ko9c#sV,=iGX2;.)JatMR;G:?&O>Gms7BT"?N>'M0e^V1aQ^b.*
%E<UOU'F^21qU7`V9#MF*#gZ0d4\J!37&lLOP8n_aN7JkX\&EIWnse7I^(.bW4:n=9?Qi6.Z7J%42k4sVJA;,OPme!t=Hb=t\F<V:
%A6H4p/ej_<6pUo`oE+:[VWr_+5b3H-3C4fHF(C=*Jb$+crDK_n?;#4Sg_.lG4)FVEK<XZ?kP?G%&slE8f=@FbGILsW/P*AP1^h&A
%G*M#%FV;)1EJ:>%anUj]Uei<PL#iu0mYasZ4B@?qM8c-NK6B=!@[".77l:C1J2l+!h1/cs$nJ<DWnAH2 at H3s5>!B*DGS!_B;$f6o
%NSp"bk_XlH4dN&_h:YfPe2q at CL*W"]r!kVVNg+V:HWZR(,7>eZXIm=kI6M;P_rf1e/00>.:V^[1]UIneLHJ<C0QD2,29(1jeQMP<
%6XIV>R.[C at Pba6q[*M)d_GF.]f4;_AJOitK$CoeLX*c>o9S<LB_Q,*@\'8IO>KlZ:O"8C.UTm_paF,[80Ia^SjP>2sBsE2MaX^%M
%ApKp#8_P:42N$:m0[@MT*3LDY(f#1Jh`3J#R?;T[TRErKFpMTjUmkgab\WGD/_+6hU7TRoXqRVL<0^(nN\!3F^#rPZE2PK!%1E`a
%&Oer0W=5$/nAgif,`"L;EiaKmYTRY4rt2D^g$!lK_W=1YOMFbgr`#QY/BVM/V^.cWrj0`1[!e$M=r+prE.pm'r$<PB:BCC.b_)a,
%a[%dc6PfAlCgdiEdU\:WVT^g.!`\bjAVla!j7anb&;]j_FK$U#Zd<gP",T^c3MRbWYZ:5Z=u?lqF!QO"mI1t[l#*<"[t$M9d$Te'
%+WqMh88$E-B>kQ-Tj;]9ku_ss7F$;/IYqhF-q:,f(98]5nXt'#JOjd,NQITj:,+nQ;-B!I6!R.6\C+hakPYu&3<W$^Q]1elTdU3M
%$g[,rLs.&9O9a^+33:"2Oen3`4)8tPD@/jBkuEcIYdsPI'iY&L,Fq3)B]-_+(T3L54^eUWA1adO!Du"U8?A"BZCFMNVcZ0/W+_7&
%<k[(O\&?PP$Y1AH@;"-K>4latcR?>V.]Q3_j0CGrE.L1CY6:1k%;[gH!^R(iMI')4@<R'%h]:i9("?lneUa&*A-Gm0WCp4.mN/\H
%=b/Z2G;.YCdRn.Vb[t=km',1;-PfKcm9m[eL7.VJguh*l6*pRc=G]dUZYCM3aET:6'iqtFJ7Or at N-Y_J0dm165S:IRYZRr71/uMb
%gtNWS7Y!>+^oF2!YtP3LF:AkYF@(iO>Y2o,cNakb'tftiF*0khAo%4LC.m.X.JAet&4DIBe3'UZ!GS7L at GsL0TSSZfp>W<*:f5u+
%"/RfQk('X+i9+5<CEPP?:"5Q9D\\#X3CfNohQtW``p/DL"&6AiccqgFo8N-BCukE0DU;qa[$kDSYRqoDh248(R3B;"g4^N at l?3,<
%_^[fD(l4%iUp?4#71o#6)01q^#0KYUeKrd(`^+F46ct?R1+_ZQNP_Nl-j\Ln*,R\/gjYjabj%][[$*Fe/6i`-cI at M@=h]K$@XG1L
%m811Q_8r5h<$W90l++]jlR04^a?BN4L$cuXiltu"pm`YQiF6s+/S5C;=R,@&#;]hjmg__01bO?AZ at Q9,Jn2ai*R#pWR]Vn[D><s9
%n.C'U.5ImeZa<a_!3N7Y&>t_aPj(_q7BUKV$3H#CnFb%F at lMNY;+O0>>Z]f9MQZ$[Q:HH<E+?8/A48#>pLhp`O<3Y`>/O<RhhZjH
%r:2]^?<?^uR]R)iU`)OqEu9Ku,g"baChcmS0aTHMFPJg^%9F5kZ'Z:<`7"3ki^#A$2dW^],I<AN'8qnTdDm3C/:fKuM<ClGd,/YS
%=A4,(&S!ri^gsBk#3j3,SG^0Ua at DLb5VAoHi_NIS6=P(H=\3HCn*cogBPobX-YadJ0eOlf%=mr/,Qa_r+GJbu+LP)N,o28qZZ:2>
%8PoTI;p(S=D-3Gq5_Hi269`-6&QY(s5+3XtDia/G2r)\gRUXHE0fAWW<3d]_gF8:+SnN1 at qOiRk%>uV`)"Z]^LflM at 8Q_3&StI0r
%6o]fNpn@"-r[7e&;SR>-9'-3tHI!iX2:7G\6p'M+V at ++\^mM\i:3^7 at ZJ8+\!0R+-;gK"L at qSCE$Vg3jkR"JelSp(eH2oJ4G=*uF
%'#$`_R>=0 at oZrok!63_II[NNJdW=):T'jT=kFkbu*]q@!l+3TlDNBlYa>?KY9\kdOB/,BWLl_NhL_'2>LH0Beh]:i#'r[7f_ at WEG
%Q1a6KeC#;gV#E"I'd6:ddK!\cgS&=c2jTZSaC'Z6*W40BjWPVNA('p(F6qBo<jco#]P\[_,[RFU'9/T$5nKlV<bo"YD"?/$LUdSV
%Kb6)SCQeY4a=;`<_-i3WH"O96.ND`?AI=4U4G;iZ)1]kM0Tb-E at UaLR=tIOF<i+08$rei?UH\sDP]*6m&L#hU0ocHQ.-7fC5Lf.Y
%f?2;cWZ5*HHU>Or&c<+XnX[D_k, at AcnHeQ!4HVSJ7Xq4)g\DIo=c"pe04BVR3MgE%dM?nP28OVE):=Y0%HLj3$"]]q%!Q5jc8WQV
%S-X\+b2G``Q2/(C*273"NVt,XG$pL-haAfj^6&+-V6d\t!i<IF.1^:SBG-i.JQt$Xj=gp&83ra\P:@<B0-X`VcngS^Ne!@&@:rO_
%C(#rk at H7O>obl7d_tQ7:n3l?_)J]F#*,Ypk-qWTGbE(Z,%/B<oeT/ZIcf%8*hHDU^/do$@AlGpZ%#),.o^EWQpdqRZ-!].\hPQ=U
%7g$@:92/b#Z_QUF at b5#+idNQi'GM8XhQUoQX_pj$-&E^``TlJ,X\f^o+0_"H]fsfg at GdMoYFSjg`Q:7gjjhPf-P6(tnWHh$+Vs4O
%]\!<AKYP[C2Y&DI[rV<-"H]^ffcg(Y3b,,&$+WRK\'V&_&[]K9PC)[.MpJ\.%Grd at YEsEkLT<"TdsCQmf!ba*f?uSf[GG>iQu9Uq
%H_PEa^:(QSg[j6UG`XQQ*jAQmE&\plY[!F).?T2&f*d>f)_jH`&?'Jb?o6Y![l<'H"Oh=:"-I=7_sQiQl1T:fUGWL]mLG_E#APQp
%b%"kMip$1AV at ob.m1Lj@1\>]UeQi$LJGHm8`A=W3f!40jUu.XIK2U4fm==0iG*(JTB+8CC7!u%4L"<X%nb\;da:q"K8s6B"LdB8d
%e&pi-[EW]a4J)E.,bVU6C#hWqMo`*i=fXo"8o:5X9HtXaS39SfTLnikVKFce4\tje`T.<b0.MP>P9m/L>cL(@\e2T7cQUcWk:j12
%@2r=PRcZ][_<PE?jNDXC[`c/&&qN'&Hk)Q65)6+$Q\2V;Eam:C:Z]$Qlrq8]O]!BQL=?F'goW=N8BAb5[=H=g&Vff"r8_KKK+G[?
%'2W/ojS59B*UeX.9u>Y%kV-<^;eQ8si9VnQT*X=@]&Vt`GGi[19X7d\"qX<P'egV^FqWV at iWK`=`aa6%1"WIQPO3C=^eQK%D"@CY
%]HOTHLipTaJ;AX6h2qEVQ%@aSG+.tVqsL]ApQq6Hg4)=M8!o?Es7Go\O*>t0]tOF<mC0:V^;#-lqQDRPq#0mK?U+S^]6lsDbcoX1
%ht1iZIMj_?lKG28\,GghqtI:4d[HJugA[_,s8M[MC&/'`8uM^`Dm+ZecgTb?rUTdW%j+"5q0)YegWs6AJ&K:\kMF8"L&Ud3^-;R`
%0E9rhirAeoQQL\OO,ontrVbKk?gjW$]mThXj8XLQrV5I^`q]11s3'`kDkDLYrq5$DfAHW(om_Pb/u/4Q5Q'X#IsUoTqW01i~>
%AI9_PrivateDataEnd
%%EndDocument
PSL_eps_end
%%EndObject
0 A
@@ -11161,8 +7372,8 @@ O0
0 0 TM
% PostScript produced by:
-%%GMT: psxy -R0/2/0/1 -JX5i/1.6i -O -T
-%%PROJ: xy 0.00000000 2.00000000 0.00000000 1.00000000 0.000 2.000 0.000 1.000 +xy +a=6378137.000 +b=6356752.314245 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
+%@GMT: psxy -R0/2/0/1 -JX5i/1.6i -O -T
+%@PROJ: xy 0.00000000 2.00000000 0.00000000 1.00000000 0.000 2.000 0.000 1.000 +xy
%%BeginObject PSL_Layer_3
0 setlinecap
0 setlinejoin
diff --git a/doc/scripts/ml/GMT_grinten.jl b/doc/scripts/ml/GMT_grinten.jl
index 5ec7648..e5d0fa3 100644
--- a/doc/scripts/ml/GMT_grinten.jl
+++ b/doc/scripts/ml/GMT_grinten.jl
@@ -1,9 +1,9 @@
function GMT_grinten(out_path::ASCIIString="")
# OUT_PATH -> Path to where the PS file will be written. If not in input must be set via the "outPath" global var
# PS -> Full name of the created postscript file (built from OUT_PATH)
-# PATH -> Path to where this file lives (usefull for gmtest.m)
+# PATH -> Path to where this file lives (useful for gmtest.m)
#
-# $Id: GMT_grinten.jl 15039 2015-10-22 23:28:45Z jluis $
+# $Id: GMT_grinten.jl 17326 2016-11-08 20:28:56Z pwessel $
global outPath
if (isempty(out_path)) out_path = outPath; end
diff --git a/doc/scripts/ml/GMT_grinten.m b/doc/scripts/ml/GMT_grinten.m
index 47dfa9c..7d1f971 100644
--- a/doc/scripts/ml/GMT_grinten.m
+++ b/doc/scripts/ml/GMT_grinten.m
@@ -1,9 +1,9 @@
function [ps, path] = GMT_grinten(out_path)
% OUT_PATH -> Path to where the PS file will be written
% PS -> Full name of the created postscript file (built from OUT_PATH)
-% PATH -> Path to where this file lives (usefull for gmtest.m)
+% PATH -> Path to where this file lives (useful for gmtest.m)
%
-% $Id: GMT_grinten.m 14912 2015-09-24 15:55:02Z jluis $
+% $Id: GMT_grinten.m 17326 2016-11-08 20:28:56Z pwessel $
full = mfilename('fullpath');
[pato, fname] = fileparts(full);
diff --git a/doc/scripts/ml/GMT_insert.jl b/doc/scripts/ml/GMT_insert.jl
index 7afcd59..0168977 100644
--- a/doc/scripts/ml/GMT_insert.jl
+++ b/doc/scripts/ml/GMT_insert.jl
@@ -1,9 +1,9 @@
function GMT_insert(out_path::ASCIIString="")
# OUT_PATH -> Path to where the PS file will be written. If not in input must be set via the "outPath" global var
# PS -> Full name of the created postscript file (built from OUT_PATH)
-# PATH -> Path to where this file lives (usefull for gmtest.m)
+# PATH -> Path to where this file lives (useful for gmtest.m)
#
-# $Id: GMT_insert.jl 15039 2015-10-22 23:28:45Z jluis $
+# $Id: GMT_insert.jl 17326 2016-11-08 20:28:56Z pwessel $
global outPath
if (isempty(out_path)) out_path = outPath; end
diff --git a/doc/scripts/ml/GMT_insert.m b/doc/scripts/ml/GMT_insert.m
index a57d996..0379c9d 100644
--- a/doc/scripts/ml/GMT_insert.m
+++ b/doc/scripts/ml/GMT_insert.m
@@ -1,9 +1,9 @@
function [ps, path] = GMT_insert(out_path)
% OUT_PATH -> Path to where the PS file will be written
% PS -> Full name of the created postscript file (built from OUT_PATH)
-% PATH -> Path to where this file lives (usefull for gmtest.m)
+% PATH -> Path to where this file lives (useful for gmtest.m)
%
-% $Id: GMT_insert.m 14912 2015-09-24 15:55:02Z jluis $
+% $Id: GMT_insert.m 17326 2016-11-08 20:28:56Z pwessel $
full = mfilename('fullpath');
[pato, fname] = fileparts(full);
diff --git a/doc/scripts/soest.eps b/doc/scripts/soest.eps
index ebec31c..8c008ea 100644
--- a/doc/scripts/soest.eps
+++ b/doc/scripts/soest.eps
@@ -1,9906 +1,6121 @@
-%!PS-Adobe-3.0 EPSF-3.0
+%!PS-Adobe-3.1 EPSF-3.0
+%ADO_DSC_Encoding: MacOS Roman
+%%Title: soest2.eps
+%%Creator: Adobe Illustrator(R) 16.0
+%%For: Paul Wessel
+%%CreationDate: 12/26/16
%%BoundingBox: 0 0 277 204
-%%HiResBoundingBox: 0 0 276.9400 203.3785
-%%Creator: GPL Ghostscript 916 (ps2write)
-%%CropBox: 0 0 276.9400 203.3785
+%%HiResBoundingBox: 0 0 276.9395 203.3790
+%%CropBox: 0 0 276.9395 203.3790
%%LanguageLevel: 2
-%%CreationDate: D:20150709190154+02'00'
+%%DocumentData: Clean7Bit
+%ADOBeginClientInjection: DocumentHeader "AI11EPS"
+%%AI8_CreatorVersion: 16.0.4
%AI9_PrintingDataBegin
%ADO_BuildNumber: Adobe Illustrator(R) 16.0.4 x691 R agm 4.6676 ct 5.2594
%ADO_ContainsXMP: MainFirst
%AI7_Thumbnail: 128 96 8
%%BeginData: 11106 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD2FFFA8A97E84595A2F360D2FFD0F0D362F5A597E7E8484FD58FF
%A8A97E5A2F35FD070D352F5A595A597E5A845A7E5A5A595A535A2F2FFD04
%0D060D0D0D0C0D2F5A5984A8FD4DFFA95A5A2F0D0D352F5A598484A9A9FD
%19FFA9A97E845A5AFD070D365984A8FD44FF845A2F0D0D2F2F7E7EA9A8FD
%27FFA8A97E5A2F0D0D0D060D0D5959A9FD3DFF7E5A0D352F7E84FD34FFAF
%7E5A2FFD040D3559A9FD36FFAF595A0D3559A9AFFD3BFFA8842F0D0D0D06
%0D2F84A8FD30FF7E5A2F5A7EFD44FFA95A35FD040D59A9FD2BFFA87E2F35
%5AFD4AFFA82F0D060D06355AFD27FFA9595A5AAFFD4FFF842FFD040D7EA9
%FD22FF845A2F7EA9FD53FF845A0D0D060D59AFFD1FFF5A5A7EFD58FFAF59
%FD040D7EFD1CFF7E2F84FD5CFFA85A060D060D5AFD18FFA85A5AFD60FFAF
%2F0D0D0D2FFD16FF5A5AA8FD08FFA97E847E847E847E847E847E847E847E
%847E847E847E847E847E847E847E847E847E847E847E847E847E847E847E
%847E847E847E847E847E847E847E847E847E847E847E847E847E847E847E
%847E847E847E847E847E847E847E842FFD040D7E7E847E847E847E8484FD
%0AFF5984FD09FF84FD6A0D59FD07FFA92FA9FD0AFF590D060D060D0C0D06
%0D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C
%0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D06
%0D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D0C0D060D06
%0D060D0C0D060D065AFD06FFA959FD0DFF84847EA984847EA984847EA984
%847EA984847EA984847EA984847EA984847EA984847EA984847EA984847E
%A984847EA984847EA984847EA984847EA984A97EA984A97EA984A97EA984
%A97EA984A97EA984A97EA984A97EA984A97EA984847E8584A984A9A8A97E
%A984A9FD06FFA92FFD6EFFAF2F5A535AA8FD09FFAF2FFD49FF7E362F5A2F
%362F5A2F362F5A2F362F5A2F362F5A2F362F5A2F362F5A2F362F5A2FA9FD
%05FF5A0D0D0D35AFFD08FF2FA9FD49FF35060D060D060D060D060D060D06
%0D060D060D060D060D060D060D060D060D060D59FD06FF35060D0635FD07
%FF5984FD4AFFA9847E857E847E857E847E857E847E857E847EA984847EA9
%84847EA984847E8584FD08FF2F0D0D0D5AFD05FF7E5AFD74FF7EFD040D84
%FD04FF36A8FD5DFF2FFD0A0DFD0DFF2FFD040DFFFFFF7E53FD1AFFA9595A
%5384FD3FFF5AFD090D2FA8FD0CFF840D0D060D5AFFFF2FA9FD19FF7EFD05
%0D36A8FD56FF350D0D0D36FF7E2FFD19FF5A06FD060D2FA8FD3EFFA97EA8
%7E847EA8FD10FF59FD040DA85A2FFD18FFA9FD070D7E5A36FD3EFFFD070D
%84FD0FFF84FD040D5A0D5AFD18FF2F0D0D0D060D0D0D2FFF0DA9FD3CFFA8
%0D0D0D060D0D0D2FFD0FFF7E0D0D0D06350D7EFD18FF36FD070D84FF5A7E
%FD3CFF84FD070D36FD0FFFA9FD060D7EFD18FF2FFD070DA8FF2F84FD1AFF
%A8847EFD1FFF2FFD070D0684FD0EFF7EFD060D5AFD18FF5AFD060D84FFA9
%36A9FD17FF845AFD050D367EFD1BFF84FD090D2FFD0EFF84FD050D0635FD
%18FF840D0D2F2F5AA8FFFF5A2FFD16FF840D0D060D060D0D0D060D2FA9FD
%19FF350C0D060D0D0D060D0D0D7EFD0DFF590D060D0D0D2F0DFD19FF5936
%A8FD04FF5A0DFD16FF5AFD0D0DA9FD17FFA9FD0B0D36FD0DFF36FD050D2F
%0D5AFD19FF592F2F5A592F2FAFFD14FFA836FD0B0D5A7E7E84FD17FFFD0C
%0D0684FD0BFFA9FD050D2F5A0D36FD1AFFA8845A7E84FD15FFA92FFD0A0D
%5AFD1BFF59FD0E0DFD0BFF2FFD050D5A840D067EFD32FF840D0C0D060D0D
%0D060D0D0D2FFD1BFF590D0D0D060D0D0D060D0D0D060D0D0D2FFD09FF84
%0D060D0D0D06A8FF0D0D0DFD31FF7EFD0C0D84FD1AFF84FD110D5AFD08FF
%36FD050D36FFFF7E060D2FFD2FFF590D0CFD0B0D59FD19FFA80D06FD110D
%5AFD06FF5AFD060D5AFFFFFF2F0D0D59FD2DFF2FFD0E0D84FD18FF84FD15
%0D7EFD04FF84FD070DFD04FF7E0D060D59FD2AFF840D0D060D0D0D060D0D
%0D060D0D0D060D2FFD17FF7E0D060D0D0D060D0D0D060D0D0D060D0D0D06
%0D0D0D060D59FFA97E0D0D060D0D0D0684FD05FF590D0D0D59FD27FFA85A
%FD120DA9FD15FF7EFD190D2F36FD070D5AFD07FFFD040D2FFD25FF590D06
%FD120D35FD14FF2FFD1B0D06FD060D2FFD09FFFD050D84AFFD1FFFA95AFD
%170D5AA9FD10FFA9FD230D35AFFD09FFA9FD040D060D2F84A8FD19FFA87E
%2F0D060D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0C0D59FD
%0DFFA85A060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D
%0D0D060D0D0D060D0C0D84FD0CFFFD070D2F2F5A5AA9A8FFA9FD0DFFA9A9
%5A5A2FFD200D5AA8FD08FFAF5AFD240D35A8FD0EFF2FFD090D0CFD040D2F
%0D2F2F5A2F5A2F2F0D2FFD040D06FD240D5A597E5A7E592FFD240D0635A8
%FD10FF59FD6C0D5AFD13FF7E0D060D0D0D060D0D0D060D0D0D060D0D0D06
%0D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D
%0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D06
%0D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D06FD040D84FD15
%FFA85AFD660D2FFD19FF840D0D0CFD5F0D060D7EFD1CFF5AFD600D7EFD1F
%FFA85AFD040D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D
%060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D
%0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D
%060D060D53AFFD23FF5AFD580D5AA8FD26FFA97EFD500D0C0D0D2F5AFD2C
%FF845AFD4E0D59A9FD31FF7E590D0D0C0D060D0D0D060D0D0D060D0D0D06
%0D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D
%0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D2F84A8FD36
%FF845AFD410D365AA9AFFD3CFF84842F2FFD040D0CFD2F0D06FD040D5A5A
%A9AFFD43FFA97E5A2FFD300D365984A8FD4CFFA8A97E5A2F2FFD040D060D
%0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D060D0D0D
%2F5A598484FD58FFA9A97E845A5A2F5A2F360D360D2F0D2F0D0D0D360D2F
%0D360D362F5A5A7E5AA9A8AFAFFD66FFAFFFA8AFA8AFA8A984A9A8AFA8AF
%A8FDFCFFFDFCFFFDFCFFFDFCFFFD70FFA9FD17FFA9FD33FFA9FD0FFF7E0D
%0D2FFF842F0D2FA85A2FFF2F5AFF5A0D0D2FFFA8350D0D7EFF0D5AFD05FF
%A92F2F0DA8FF2F0D0D59FFFFFF842F0D2F84FF530D0D7EA82F0D0D7EFFA8
%0D53FFFF5A06A97E2FA8FD04FF350DFFFF840D5AA82FA87E0D2F0D84FFFF
%FFA90D2F0D7EFFFF0D5AFFFF5A0D0D2F7E2F0D0D0D842F5AFF352FFD06FF
%0D5A840DA95A0DAF0DA95936FF3635FF0D84840DA8840DFF2F36FF0D59FD
%05FF590DA9362FFF0D7EA9FD04FF5A0DFF0D5AA80D845A0DAF0D84A8FFFF
%840D36FFFF350D5A840DFD04FFAF0D0DA8FF7E0D2FAF0DFF5A0DA8352FFF
%FFFFA80D5AAFA9FF7E0D0DFFFF5A0DA90D5AFF5A0DA9FF3635FF0D5AFD06
%FF2F0DFFA8FF0D5AFFA9A95A0DFF0D5AA80D84FF0DA9590DFF5A0DFF0D5A
%FD05FF5A2FFF2F35AF0D5AFD05FF0D5AFF352FA80DAFFFA9840D7EFFFFFF
%2F350DA9FF5A0D5A5A0DAFFFFFFF59350D5AFF840D2F7E0DA85A0DFF590D
%FFFFFFA90DA8FFFFFF5A2F0D7EFF590DFF0D59FF590DFFFF0D5AFF2F2FFD
%06FFAF0D0DFFFF352FFFFFFF2F0D2F0D59FF0DA9A80DA87E0DFF5A0DFF2F
%5AFD05FF2F36FF5A2FFF0D0D0D84FFFFFF3635FF2F5A840DA8FFFFA90D35
%2FA9FF2FA8355AFF35362F5A0DFD04FF355A842FFF5A362F5A0DFF5A0DFF
%7E0DFFFFFFA80D0D3684FF0DA92F5AFF7E0D350DA9FF5A0DFFFF360D360D
%5AFD07FFAF2F0DFF2F59FFFFFF590DAF0D5AA80D84AF06A9590DFF5A0DFF
%0D5AFD05FF350DFF2F2FA80D59AFA8FFFFFF0D5AFF2F2FA80DA9FFFFA80D
%59FFFF84065A0D35FF5A2F5A0D2FFD04FF0D352F0DFF7E0D5A0D0DA85A0D
%FF590DFFFFFFA90D7EA8FF840D2F0D0DFF590D590D59FF590DFFFF0D35A8
%2F2FFD06FF2FA9FF0D84362FFF2FA95936FF3659FF0DA9A90DA87E0DFF5A
%0DFF355AFD05FF2F36FF5A2FFF0D84FD05FF362FFF2F5AA80DA9852FA90D
%A9FFFF592F59360DFF355A5A0D2FFFFFFF840D2F5A0DAF7E36840D0DFF5A
%0DFF5A0DFFFFFFA80D84FFFF7E0D5A2F0DFF7E0DFF0D5AFF5A0DFFFF362F
%FF2F5AFD06FF350D590DFF590D2F0D845A0DFF0D35FF2F0D350DFF7E0D2F
%0D2FFF0D0D2F7EFFFFFF7E0D5A0D5AFF0D5AFD05FF590D2F0D5AFF0D350D
%35A80D0D5A7E0D53FFA80D845A2FA9060DFFFFFF5A0DFFFF0D59840DFF0D
%0DA87E0D350D5AFFFFFFA90D2F2F842F35FFFF0D84590DFF0D53FF590DFF
%FF0D35FF2F2FFD06FFA9845AAFFFFF7E7E84FF8484FFA984FFA9845AAFFF
%FFA87E7EFFFF845A7E84FD04FFA95985FFFF7EAFFD06FF7E7E84FFFFFF5A
%84A9FF7E7E5AA97EAFFFFF7EAF84A9FF847EFFFFFF7EA9FFFF7EA9A984FF
%A97EFFA8845AA9FD04FFA9845A7E8485A8FFFF84A8A97EFF84A9FFA97EFF
%FFA984FF7EA9FDFCFFFD0BFF5A5A5AFFFFFF5A5A5AFFA87EA8FF5A5A5984
%A87E5AFF847EFFFF7E5A59AFFF7E595A59FD05FFA85A84FFFFA95984FFA8
%5AFF7E7E597E84FFFFFFA97E597E597EA97E595A59FFA87E5984FFA95AFF
%FF7E84FF5A7EA9AF59FFFFA9595A7EFFFF7E7EFFFFFFA97E597EA8FFFF84
%595A7EFF845AA8FFA85AA8FD06FF2F0D590D59FF2F0D5A0D59A90DA9840D
%2F5A5AA90D0DA97E0DFF5A0D5A0D0DFF0D0D2F5AFD05FF5A065AFFFF5A0D
%0DFF2F0DFF5A0D5A0D0DA8FFFFFF59360D3559FF0D0D2F5AAF2F0D5A0D84
%7E0DA8FF0D7EFF0D0CA9A80DA8AF0D362F0D7EFF0D5AFFFFFF5A0D5A0D36
%FF840D5A2F0D84FF0D7EFF362FFD07FF0D0DFF5A7EA90D2FFF59847E0D84
%A806A9FFFF7E0D0D7E590DAF2F0DFF7E5AA80D53FD07FF0D2F0DAFFF7E06
%0D7E5A0DFF2F0DFF840684FD04FF7E0D84FFA80D59FFFFA9067EFF5A7E84
%06FFFF0D59FF0D0D2FA80DAF590DA8FF065AFF0D2FFFFFFF065AFF5A06FF
%590DFFFF2FA8FF5A0D8406A9FD07FF840D2FFFFFFF0D5AFFFFFFA90DA984
%0D5984A8A90D5A35840DFF2F36FD04FF0D365A85FD04FF840D840D7EFF7E
%35355A5936FF5A0DFF840D84FD04FF840DA9FFFF0D367EA9A80D7EFFFFFF
%7E0D5A840D84FF0D2F367E0DA9850DAFFF0D59FF0D5AFFFFAF0D59FF5A0D
%FF7E0DFFAFFFFFFFA80D0D5AFD09FFA80D0DA9FF0D2FFFFFFF7E0D84A80C
%362F847E0D5A2F2F0DFF350DFFFFFFA80D0D5A59FD04FF5A0DAF0D5AFF7E
%0D840D350DFF2F0DFFA90D84FD04FF5A0D7EFFA80D0D5A59A90D7EFFFFFF
%7E065A590D59FF0D7E0D5A0DAF7E0DA8FF0D5AFF0D2FFFFFFF0D5AFF5A06
%FF590DA8360D84FFFF2F0D7EFD08FF7EAFFF0D0DFF0D5AFFA9A8A90DA9A8
%0DA8FFFF840DA92F0D0DFF2F0DFFAF84FF0D5AFD06FF0D2F2F0D0DFF7E0D
%A8360D2FFF5A0DFF840D84FD04FF840DA9FFFF0D84FFFFA80D7EFF7EFF7E
%0DA9FF0D7EFF0D7E5A0D2FA9840DFFFF0D2FFF0D5AFFFFFF0D59FF5A0DFF
%7E0DFFA80D7EFFFF7E0DAFFD08FF0D0DAF0D0DA80D0DA9065A840D7EA806
%5A84AF7E0DA85A060DFF360DA90D0DA80D2FA984FFFFFF7E0D5AFF5A0D84
%840DFF2F0D0DFF2F0D843506A9FD04FF5A0D7EFFA80D2FA984A9065A840D
%598406A9A90D59FF06847E0D06FF7E0D59A8065AFF0D2FA884FF0D0DA835
%0DFF590D7E84067EFFFF530DA8FD08FF7E360D3684FF84360D36A8A90DAF
%A8350D355AA90DFF840D2FFFA8360D367EFF2F360D36FFFFFF7E0DFFFFFF
%0D858435FF850D5AFF840D352F84FD05FF840DA9FFFF2F360D36FF842F35
%2FFF8435A8FF0D84FF3684FF0D36A9FF59360D5AAFFF2F350D36FFA90D36
%2FA9FFFF59352F3684FFFF840DAFFDFCFFFD75FFA8FD28FFA8FFFFFFA8FD
%0BFFA8FD0FFFA8FD0BFFAFFD1DFFA9FD0BFFA8A8A8FD15FFA87D84A8FF7D
%7D7DFFA87DFFFF7D7E7DFF7D7DA8FF7D597DFFA87D7DFFA87DFFAF537DFF
%FF7D7DA8FD04FFA8527DA8FF7D7DA8FD04FFA87D7DA8FFA87DA8FFFD047D
%A8FF7D7DFFFF7DA8FF7EA8FF7DA8FD04FFA87DA8FF7D7D7DFD05FF538459
%A8FFFF53A8FFFF537D7DFFA87D52FFFFA852A9FD07FF7D847DA8FF84597D
%FFFF7DFFFF7D7DFFFFA859FFFFA852A8FFFF7D84FFA87DFFFFA8A8FFFF7E
%7DFD05FF7DA87DA8FF7E7DFD05FF7E7D7DFFFFA852A8FFA8537D7DFFFF7D
%53FFFF84A8FFA8FFFF7DA8FD04FFA852A8FFFF7DFD06FF7D537DA8FF7E7D
%7DFFA87D53A8FFA87D7E7DFF7E597DFD07FFAF527DA8FF7D8459FFA87DFF
%FF7D7DFFFF7D7D84FF7D7D7DFFA87D7DFF847DFFFF7DA8FFFF7DA8FD05FF
%A8527DA8FF7DA8FD05FFA87D7EA8FF597D7DFFA87D7D7DFFA87D7D7DFF7D
%A8FD04FF53AFFD04FF7D7D53FFFF7DA8FD05FF597D7DA8FF7D7D7DFFA87D
%7D7DFFA87D59AFFF7D7D7DFFFFFFFF
%%EndData
+%ADOEndClientInjection: DocumentHeader "AI11EPS"
%%Pages: 1
+%%DocumentNeededResources:
+%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0
+%%+ procset Adobe_CoolType_Utility_T42 1.0 0
+%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%+ procset Adobe_CoolType_Core 2.31 0
+%%+ procset Adobe_AGM_Core 2.0 0
+%%+ procset Adobe_AGM_Utils 1.0 0
+%%DocumentFonts:
+%%DocumentNeededFonts:
+%%DocumentNeededFeatures:
+%%DocumentSuppliedFeatures:
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentCustomColors: (PANTONE 307 C)
+%%CMYKCustomColor: 1 0.5020 0.1922 0.0236 (PANTONE 307 C)
+%%RGBCustomColor:
%%EndComments
+
+
+
+
+
+
+%%BeginDefaults
+%%ViewingOrientation: 1 0 0 1
+%%EndDefaults
%%BeginProlog
-/DSC_OPDFREAD true def
-/SetPageSize true def
-/EPS2Write false def
-currentdict/DSC_OPDFREAD known{
-currentdict/DSC_OPDFREAD get
-}{
-false
-}ifelse
-10 dict begin
-/DSC_OPDFREAD exch def
-/this currentdict def
-/y 720 def
-/ebuf 200 string def
-/prnt{
-36//this/y get moveto//ebuf cvs show
-//this/y 2 copy get 12 sub put
-}bind def
-/newline{
-36//this/y get moveto
-//this/y 2 copy get 12 sub put
-}bind def
-errordict/handleerror
-{systemdict begin
-$error begin
-newerror
-{(%%[ Error handled by opdfread.ps : )print errorname//ebuf cvs print(; OffendingCommand: )
-print/command load//ebuf cvs print( ]%%)= flush
-/newerror false store vmstatus pop pop 0 ne
-{grestoreall
-}if
-errorname(VMerror)ne
-{showpage
-}if
-initgraphics
-0 720 moveto
-errorname(VMerror)eq
-{//this/ehsave known
-{clear//this/ehsave get restore 2 vmreclaim
-}if
-vmstatus exch pop exch pop
-}
-/Courier 12 selectfont
+%%BeginResource: procset Adobe_AGM_Utils 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{currentpacking true setpacking}if
+userdict/Adobe_AGM_Utils 75 dict dup begin put
+/bdf
+{bind def}bind def
+/nd{null def}bdf
+/xdf
+{exch def}bdf
+/ldf
+{load def}bdf
+/ddf
+{put}bdf
+/xddf
+{3 -1 roll put}bdf
+/xpt
+{exch put}bdf
+/ndf
{
-(ERROR: )//prnt exec errorname//prnt exec
-(OFFENDING COMMAND: )//prnt exec
-/command load//prnt exec
-$error/ostack known{
-(%%[STACK:)=
-(STACK:)//prnt exec
-$error/ostack get aload length{
-//newline exec
-dup mark eq{
-(-mark-)dup = show
-}{
-dup type/nametype eq{
-dup xcheck not{
-(/)show
-(/)print
-}if
-}if
-dup =//ebuf cvs show
-}ifelse
-}repeat
-}if
-}ifelse
-(%%]%)=
-//systemdict/showpage get exec
-quit
-}if
-end
-end
-}bind readonly put
-end
-50 dict begin
-/DefaultSwitch
+ exch dup where{
+ pop pop pop
+ }{
+ xdf
+ }ifelse
+}def
+/cdndf
{
-dup where{
-pop pop
-}{
-false def
-}ifelse
-}bind def
-/=string 256 string def
-/=only{
-//=string cvs print
-}bind def
-/HexDigits(0123456789ABCDEF)readonly def
-/PrintHex
-{8{
-dup -28 bitshift 15 and//HexDigits exch 1 getinterval//=only exec
-4 bitshift
-}repeat
-pop
-}bind def
-/PDFR_DEBUG DefaultSwitch
-/PDFR_DUMP DefaultSwitch
-/PDFR_STREAM DefaultSwitch
-/TTFDEBUG DefaultSwitch
-/RotatePages DefaultSwitch
-/FitPages DefaultSwitch
-/CenterPages DefaultSwitch
-/SetPageSize DefaultSwitch
-/error
+ exch dup currentdict exch known{
+ pop pop
+ }{
+ exch def
+ }ifelse
+}def
+/gx
+{get exec}bdf
+/ps_level
+ /languagelevel where{
+ pop systemdict/languagelevel gx
+ }{
+ 1
+ }ifelse
+def
+/level2
+ ps_level 2 ge
+def
+/level3
+ ps_level 3 ge
+def
+/ps_version
+ {version cvr}stopped{-1}if
+def
+/set_gvm
+{currentglobal exch setglobal}bdf
+/reset_gvm
+{setglobal}bdf
+/makereadonlyarray
{
-counttomark 1 sub -1 0{
-index dup type/arraytype eq{==}{=only}ifelse
-}for
-()=
-cleartomark
-....Undefined
-}bind def
-//SetPageSize{
-//RotatePages//FitPages or//CenterPages or{
-mark(/RotatePages, /FitPages and CenterPages are not allowed with /SetPageSize)//error exec
-}if
-}
+ /packedarray where{pop packedarray
+ }{
+ array astore readonly}ifelse
+}bdf
+/map_reserved_ink_name
{
-//FitPages//CenterPages and{
-mark(CenterPages is not allowed with /FitPages)//error exec
-}if
-}
-ifelse
-/knownget
+ dup type/stringtype eq{
+ dup/Red eq{
+ pop(_Red_)
+ }{
+ dup/Green eq{
+ pop(_Green_)
+ }{
+ dup/Blue eq{
+ pop(_Blue_)
+ }{
+ dup()cvn eq{
+ pop(Process)
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+}bdf
+/AGMUTIL_GSTATE 22 dict def
+/get_gstate
{
-2 copy known{
-get true
-}{
-pop pop false
-}ifelse
-}bind def
-/IsUpper
-{dup(A)0 get ge exch(Z)0 get le and
-}bind def
-/cpa2g{
-dup length array
-0 1 2 index length 1 sub{
-dup 3 index exch get cp2g
-3 copy put pop pop
-}for
-exch pop
-}bind def
-/cpd2g{
-dup length dict exch{
-cp2g 2 index 3 1 roll put
-}forall
-}bind def
-/cps2g{
-dup length string copy
-}bind def
-/cp2gprocs
-<</arraytype//cpa2g/dicttype//cpd2g/packedarraytype//cpa2g/stringtype//cps2g >>
-def
-/cp2g{
-dup gcheck not{
-dup//cp2gprocs 1 index type
-2 copy known{
-get currentglobal 3 1 roll true setglobal exec exch setglobal
-1 index wcheck not{readonly}if
-1 index xcheck{cvx}if
-exch pop
-}{
-pop pop
-}ifelse
-}if
-}bind def
-/BlockBuffer 65535 string def
-/PDFReader currentdict def
-/ObjectRegistryMaxLength 50000 def
-/ObjectRegistry 10 dict def
-ObjectRegistry
-begin 0 ObjectRegistryMaxLength dict def end
-/CurrentObject null def
-/DoneDocumentStructure false def
-/GraphicState 20 dict begin
-/InitialTextMatrix matrix def
-/InitialMatrix matrix currentmatrix def
-currentdict end def
-/TempMatrix matrix def
-/GraphicStateStack 20 array def
-/GraphicStateStackPointer 0 def
-/InitialTextMatrixStack 20 array def
-/InitialTextMatrixStackPointer 0 def
-/PDFColorSpaces 50 dict def
-/InstalledFonts 50 dict def
-/MacRomanEncodingInverse null def
-currentglobal false setglobal
-userdict/PDFR_InitialGS gstate put
-userdict/PDFR_Patterns 50 dict put
-userdict/FuncDataReader 10 dict put
-setglobal
-/InitialExtGState 20 dict begin
-/BG2 currentblackgeneration cp2g def
-/UCR2 currentundercolorremoval cp2g def
-/TR2 currentglobal false setglobal[currentcolortransfer]exch setglobal cp2g def
-/HT currenthalftone cp2g def
-currentdict end readonly def
-/InitialGraphicState 20 dict begin
-/FontSize 0 def
-/CharacterSpacing 0 def
-/TextLeading 0 def
-/TextRenderingMode 0 def
-/WordSpacing 0 def
-currentdict end readonly def
-/SimpleColorSpaceNames 15 dict begin
-/DeviceGray true def
-/DeviceRGB true def
-/DeviceCMYK true def
-currentdict end readonly def
-/1_24_bitshift_1_sub 1 24 bitshift 1 sub def
-/ReadFontProcs 10 dict def
-/GetObject{
-dup ObjectRegistryMaxLength idiv
-//PDFReader /ObjectRegistry get exch knownget
-{exch knownget}{pop false}ifelse
-}bind def
-/PutObject
-{1 index ObjectRegistryMaxLength idiv
-//PDFReader /ObjectRegistry get 1 index knownget{
-exch pop 3 1 roll put}{
-//PDFReader /ObjectRegistry get dup begin
-1 index ObjectRegistryMaxLength dict def
-end exch get 3 1 roll put
-}ifelse
-}bind def
-/Register
-{1 index GetObject{
-dup xcheck{
-4 3 roll pop
-//PDFR_DEBUG{
-(Have a daemon for ) print 2 index ==
-}if
-exec
-}{
-dup null ne{
-mark (The object ) 4 index (is already defined : ) 4 index //error exec
-}{
-pop
-}ifelse
-3 2 roll
-exec
-}ifelse
-}{
-3 2 roll
-exec
-}ifelse
-PutObject
-} bind def
-/IsRegistered{
-GetObject{
-null ne
-}{
-false
-}ifelse
-}bind def
-/GetRegistered{
-dup GetObject not{
-exch mark exch (Object ) exch ( isn't defined before needed (1).) //error exec
-}if
-dup xcheck{
-exch mark exch (Object ) exch ( isn't defined before needed (2).) //error exec
-}{
-dup null eq{
-exch mark exch (Object ) exch ( isn't defined before needed (3).) //error exec
-}if
-exch pop
-}ifelse
-}bind def
-/StandardFontNames<<
-/Times-Roman true
-/Helvetica true
-/Courier true
-/Symbol true
-/Times-Bold true
-/Helvetica-Bold true
-/Courier-Bold true
-/ZapfDingbats true
-/Times-Italic true
-/Helvetica-Oblique true
-/Courier-Oblique true
-/Times-BoldItalic true
-/Helvetica-BoldOblique true
-/Courier-BoldOblique true
->>def
-/CleanAllResources
-{//PDFR_DEBUG{
-(CleanAllResources beg)=
-}if
-//PDFReader/ObjectRegistry get{
-dup length 0 exch 1 exch 1 sub{
-2 copy get dup xcheck{
-pop pop
-}{
-dup null eq{
-pop pop
-}{
-dup type/dicttype eq{/.Global known}{pop false}ifelse{
-pop
-}{
-//PDFR_DEBUG{
-(Dropping )print dup =
-}if
-1 index exch/DroppedObject put
-}ifelse
-}ifelse
-}ifelse
-}for
-pop
-}forall
-FontDirectory length dict begin
-FontDirectory{
-pop
-dup//StandardFontNames exch known not{
-dup null def
-}if
-pop
-}forall
-currentdict
-end{
-pop
-//PDFR_DEBUG{
-(Undefining font )print dup =
-}if
-undefinefont
-}forall
-//PDFR_DEBUG{
-(CleanAllResources end)=
-}if
-}bind def
-/PrintReference
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_clr_spc currentcolorspace def
+ /AGMUTIL_GSTATE_clr_indx 0 def
+ /AGMUTIL_GSTATE_clr_comps 12 array def
+ mark currentcolor counttomark
+ {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop
+ /AGMUTIL_GSTATE_fnt rootfont def
+ /AGMUTIL_GSTATE_lw currentlinewidth def
+ /AGMUTIL_GSTATE_lc currentlinecap def
+ /AGMUTIL_GSTATE_lj currentlinejoin def
+ /AGMUTIL_GSTATE_ml currentmiterlimit def
+ currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf
+ /AGMUTIL_GSTATE_sa currentstrokeadjust def
+ /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def
+ /AGMUTIL_GSTATE_op currentoverprint def
+ /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def
+ /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def
+ currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf
+ cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf
+ /AGMUTIL_GSTATE_ht currenthalftone def
+ /AGMUTIL_GSTATE_flt currentflat def
+ end
+}def
+/set_gstate
{
-//PDFR_DEBUG{
-({ )print
-dup{
-=only( )print
-}forall
-( })=
-}if
-}bind def
-/R
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_clr_spc setcolorspace
+ AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor
+ AGMUTIL_GSTATE_fnt setfont
+ AGMUTIL_GSTATE_lw setlinewidth
+ AGMUTIL_GSTATE_lc setlinecap
+ AGMUTIL_GSTATE_lj setlinejoin
+ AGMUTIL_GSTATE_ml setmiterlimit
+ AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash
+ AGMUTIL_GSTATE_sa setstrokeadjust
+ AGMUTIL_GSTATE_clr_rnd setcolorrendering
+ AGMUTIL_GSTATE_op setoverprint
+ AGMUTIL_GSTATE_bg cvx setblackgeneration
+ AGMUTIL_GSTATE_ucr cvx setundercolorremoval
+ AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx
+ AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer
+ AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or
+ {
+ currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne
+ {
+ mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark
+ }if
+ }{
+ AGMUTIL_GSTATE_ht sethalftone
+ }ifelse
+ AGMUTIL_GSTATE_flt setflat
+ end
+}def
+/get_gstate_and_matrix
{
-0 ne{
-exch mark exch(A referred object generation )exch( isn't 0.)//error exec
-}if
-[
-exch//GetRegistered/exec load
-]cvx
-//PrintReference exec
-}bind def
-/IsObjRef
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_ctm matrix currentmatrix def
+ end
+ get_gstate
+}def
+/set_gstate_and_matrix
{
-dup type/arraytype eq{
-dup length 3 eq{
-dup xcheck exch
-dup 0 get type/integertype eq 3 2 roll and exch
-dup 1 get//GetRegistered eq 3 2 roll and exch
-2 get/exec load eq and
-}{
-pop false
-}ifelse
-}{
-pop false
-}ifelse
-}bind def
-/DoNothing
+ set_gstate
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_ctm setmatrix
+ end
+}def
+/AGMUTIL_str256 256 string def
+/AGMUTIL_src256 256 string def
+/AGMUTIL_dst64 64 string def
+/AGMUTIL_srcLen nd
+/AGMUTIL_ndx nd
+/AGMUTIL_cpd nd
+/capture_cpd{
+ //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf
+}def
+/thold_halftone
+{
+ level3
+ {sethalftone currenthalftone}
+ {
+ dup/HalftoneType get 3 eq
+ {
+ sethalftone currenthalftone
+ }{
+ begin
+ Width Height mul{
+ Thresholds read{pop}if
+ }repeat
+ end
+ currenthalftone
+ }ifelse
+ }ifelse
+}def
+/rdcmntline
+{
+ currentfile AGMUTIL_str256 readline pop
+ (%)anchorsearch{pop}if
+}bdf
+/filter_cmyk
+{
+ dup type/filetype ne{
+ exch()/SubFileDecode filter
+ }{
+ exch pop
+ }
+ ifelse
+ [
+ exch
+ {
+ AGMUTIL_src256 readstring pop
+ dup length/AGMUTIL_srcLen exch def
+ /AGMUTIL_ndx 0 def
+ AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{
+ 1 index exch get
+ AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put
+ /AGMUTIL_ndx AGMUTIL_ndx 1 add def
+ }for
+ pop
+ AGMUTIL_dst64 0 AGMUTIL_ndx getinterval
+ }
+ bind
+ /exec cvx
+ ]cvx
+}bdf
+/filter_indexed_devn
+{
+ cvi Names length mul names_index add Lookup exch get
+}bdf
+/filter_devn
+{
+ 4 dict begin
+ /srcStr xdf
+ /dstStr xdf
+ dup type/filetype ne{
+ 0()/SubFileDecode filter
+ }if
+ [
+ exch
+ [
+ /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx
+ currentdict/srcStr get/readstring cvx/pop cvx
+ /dup cvx/length cvx 0/gt cvx[
+ Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx
+ names_index Names length currentdict/srcStr get length 1 sub{
+ 1/index cvx/exch cvx/get cvx
+ currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx
+ Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx
+ }for
+ currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx
+ ]cvx/if cvx
+ /end cvx
+ ]cvx
+ bind
+ /exec cvx
+ ]cvx
+ end
+}bdf
+/AGMUTIL_imagefile nd
+/read_image_file
{
+ AGMUTIL_imagefile 0 setfileposition
+ 10 dict begin
+ /imageDict xdf
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ /imbufIdx 0 def
+ /origDataSource imageDict/DataSource get def
+ /origMultipleDataSources imageDict/MultipleDataSources get def
+ /origDecode imageDict/Decode get def
+ /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def
+ imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ {
+ /imbufCnt imageDict/DataSource get length def
+ /imbufs imbufCnt array def
+ 0 1 imbufCnt 1 sub{
+ /imbufIdx xdf
+ imbufs imbufIdx imbufLen string put
+ imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put
+ }for
+ DeviceN_PS2{
+ imageDict begin
+ /DataSource[DataSource/devn_sep_datasource cvx]cvx def
+ /MultipleDataSources false def
+ /Decode[0 1]def
+ end
+ }if
+ }{
+ /imbuf imbufLen string def
+ Indexed_DeviceN level3 not and DeviceN_NoneName or{
+ /srcDataStrs[imageDict begin
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi string
+ }repeat
+ end]def
+ imageDict begin
+ /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def
+ /Decode[0 1]def
+ end
+ }{
+ imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put
+ imageDict/Decode[0 1]put
+ }ifelse
+ }ifelse
+ imageDict exch
+ load exec
+ imageDict/DataSource origDataSource put
+ imageDict/MultipleDataSources origMultipleDataSources put
+ imageDict/Decode origDecode put
+ end
+}bdf
+/write_image_file
+{
+ begin
+ {(AGMUTIL_imagefile)(w+)file}stopped{
+ false
+ }{
+ Adobe_AGM_Utils/AGMUTIL_imagefile xddf
+ 2 dict begin
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{
+ /imbuf imbufLen string def
+ }if
+ 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{
+ pop
+ MultipleDataSources{
+ 0 1 DataSource length 1 sub{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exch gx
+ }{
+ /filetype eq{
+ DataSource exch get imbuf readstring pop
+ }{
+ DataSource exch get
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }for
+ }{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exec
+ }{
+ /filetype eq{
+ DataSource imbuf readstring pop
+ }{
+ DataSource
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }ifelse
+ }for
+ end
+ true
+ }ifelse
+ end
+}bdf
+/close_image_file
+{
+ AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile
}def
-/RunTypeDaemon
+statusdict/product known userdict/AGMP_current_show known not and{
+ /pstr statusdict/product get def
+ pstr(HP LaserJet 2200)eq
+ pstr(HP LaserJet 4000 Series)eq or
+ pstr(HP LaserJet 4050 Series )eq or
+ pstr(HP LaserJet 8000 Series)eq or
+ pstr(HP LaserJet 8100 Series)eq or
+ pstr(HP LaserJet 8150 Series)eq or
+ pstr(HP LaserJet 5000 Series)eq or
+ pstr(HP LaserJet 5100 Series)eq or
+ pstr(HP Color LaserJet 4500)eq or
+ pstr(HP Color LaserJet 4600)eq or
+ pstr(HP LaserJet 5Si)eq or
+ pstr(HP LaserJet 1200 Series)eq or
+ pstr(HP LaserJet 1300 Series)eq or
+ pstr(HP LaserJet 4100 Series)eq or
+ {
+ userdict/AGMP_current_show/show load put
+ userdict/show{
+ currentcolorspace 0 get
+ /Pattern eq
+ {false charpath f}
+ {AGMP_current_show}ifelse
+ }put
+ }if
+ currentdict/pstr undef
+}if
+/consumeimagedata
{
-dup type/dicttype eq{
-dup/Type//knownget exec{
-//PDFReader/TypeDaemons get exch
-//knownget exec{
-exec
-}if
-}if
-}if
-}bind def
-/obj
+ begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known not
+ {/MultipleDataSources false def}if
+ MultipleDataSources
+ {
+ DataSource 0 get type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width cvi string def
+ 1 1 Height cvi
+ {
+ pop
+ 0 1 DataSource length 1 sub
+ {
+ DataSource exch get
+ flushbuffer readstring pop pop
+ }for
+ }for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and
+ {
+ Width Height mul cvi
+ {
+ 0 1 DataSource length 1 sub
+ {dup DataSource exch gx length exch 0 ne{pop}if}for
+ dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }
+ {
+ /DataSource load type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width Decode length 2 idiv mul cvi string def
+ 1 1 Height{pop DataSource flushbuffer readstring pop pop}for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and
+ {
+ Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul
+ {
+ DataSource length dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }ifelse
+ end
+}bdf
+/addprocs
{
-//PDFR_DEBUG{
-(Defining )print 1 index =only( )print dup =only( obj)=
-}if
-0 ne{
-exch mark exch(An object generation )exch( isn't 0.)//error exec
-}if
-}bind def
-/endobj
+ 2{/exec load}repeat
+ 3 1 roll
+ [5 1 roll]bind cvx
+}def
+/modify_halftone_xfer
{
-//PDFR_DEBUG{
-(endobj )=
-}if
-count 1 eq {pop} {dup type/dicttype eq{
-dup/.endobj_daemon//knownget exec{
-//PDFR_DEBUG{(.endobj_daemon for )print 2 index =}if
-exec
-}if
-}if
-dup type/dicttype eq{dup/ImmediateExec known}{false}ifelse{
-pop pop
-}{
-//PDFR_DEBUG{
-(Storing )print 1 index =
-}if
-//RunTypeDaemon exec
-//DoNothing 3 1 roll//Register exec
-}ifelse
-}ifelse}bind def
-/StoreBlock
+ currenthalftone dup length dict copy begin
+ currentdict 2 index known{
+ 1 index load dup length dict copy begin
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end def
+ currentdict end sethalftone
+ }{
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end sethalftone
+ pop
+ }ifelse
+}def
+/clonearray
{
-//PDFR_DEBUG{
-(StoreBlock )print//PDFReader/BlockCount get =only(, Length = )print dup length =
-}if
-dup length string copy
-//PDFReader/BlockCount get exch
-//PDFReader/CurrentObject get 3 1 roll
-put
-//PDFReader/BlockCount get 1 add
-//PDFReader exch/BlockCount exch put
-}bind def
-/CheckLength
-{dup type/integertype ne{
-mark(Object length isn't an integer.)//error exec
-}if
-}bind def
-/ResolveD
+ dup xcheck exch
+ dup length array exch
+ Adobe_AGM_Core/AGMCORE_tmp -1 ddf
+ {
+ Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf
+ dup type/dicttype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get
+ exch
+ clonedict
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ dup type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get exch
+ clonearray
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ exch dup
+ Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put
+ }forall
+ exch{cvx}if
+}bdf
+/clonedict
{
-3 copy pop get
-dup//IsObjRef exec{
-//PDFR_DEBUG{
-(Resolving )print//PrintReference exec
-}if
-exec
-exch exec
-}{
-exch pop
-}ifelse
-dup 4 1 roll
-put
-}bind def
-/ResolveA
-{2 index 2 index get
-dup//IsObjRef exec{
-exec
-exch exec
-3 copy put
-}{
-exch pop
-}ifelse
-exch pop exch pop
-}bind def
-/StoreStream
+ dup length dict
+ begin
+ {
+ dup type/dicttype eq
+ {clonedict}if
+ dup type/arraytype eq
+ {clonearray}if
+ def
+ }forall
+ currentdict
+ end
+}bdf
+/DeviceN_PS2
{
-dup//PDFReader exch/CurrentObject exch put
-//PDFReader/BlockCount 0 put
-dup/Length//CheckLength//ResolveD exec
-//PDFR_DEBUG{
-(StoreStream Length = )print dup =
-}if
-currentfile exch()/SubFileDecode filter
-{dup//BlockBuffer readstring{
-//StoreBlock exec
-}{
-//StoreBlock exec
-exit
-}ifelse
-}loop
-pop
-//PDFReader/CurrentObject null put
-//PDFR_DEBUG{
-(StoreStream end.)=
-}if
-}bind def
-/MakeStreamDumper
+ /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and
+}bdf
+/Indexed_DeviceN
{
-//PDFR_DEBUG{
-(MakeStreamDumper beg.)=
-}if
-currentglobal exch dup gcheck setglobal
-[exch
-1 dict dup/c 0 put exch
-1024 string
-{readstring pop
-(StreamDumper )print 1 index/c get =string cvs print( )print
-dup length =string cvs print( <)print dup print(>\n)print
-dup length
-3 2 roll
-dup/c get
-3 2 roll
-add/c exch put
-}/exec load
-]
-cvx 0()/SubFileDecode filter
-exch setglobal
-//PDFR_DEBUG{
-(MakeStreamDumper end.)=
-}if
-}bind def
-/ShortFilterNames 15 dict begin
-/AHx/ASCIIHexDecode def
-/A85/ASCII85Decode def
-/LZW/LZWDecode def
-/Fl/FlateDecode def
-/RL/RunLengthDecode def
-/CCF/CCITTFaxDecode def
-/DCT/DCTDecode def
-currentdict end readonly def
-/AppendFilters
+ /indexed_colorspace_dict AGMCORE_gget dup null ne{
+ dup/CSDBase known{
+ /CSDBase get/CSD get_res/Names known
+ }{
+ pop false
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}bdf
+/DeviceN_NoneName
+{
+ /Names where{
+ pop
+ false Names
+ {
+ (None)eq or
+ }forall
+ }{
+ false
+ }ifelse
+}bdf
+/DeviceN_PS2_inRip_seps
{
-//PDFR_DEBUG{
-(AppendFilters beg.)=
-}if
-dup 3 1 roll
-/Filter//knownget exec{
-dup type/nametype eq{
-dup//ShortFilterNames exch//knownget exec{
-exch pop
-}if
-2 index/DecodeParms//knownget exec{
-exch
-}if
-filter
-}{
-dup 0 exch 1 exch length 1 sub{
-2 copy get
-dup//ShortFilterNames exch//knownget exec{
-exch pop
-}if
-3 1 roll
-4 index/DecodeParms//knownget exec{
-exch get
-}{
-pop null
-}ifelse
-dup null eq{
-pop 3 1 roll filter exch
-}{
-3 1 roll
-4 1 roll filter exch
-}ifelse
-}for
-pop
-}ifelse
-//PDFR_DEBUG//PDFR_DUMP and{
-//MakeStreamDumper exec
-}if
-}if
-exch pop
-//PDFR_DEBUG{
-(AppendFilters end.)=
-}if
-}bind def
-/ExecuteStream
+ /AGMCORE_in_rip_sep where
+ {
+ pop dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and
+ {
+ /currentcolorspace exch AGMCORE_gput
+ false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+}bdf
+/base_colorspace_type
{
-dup//PDFReader exch/CurrentObject exch put
-dup/Length//CheckLength//ResolveD exec
-//PDFR_DEBUG{
-(ExecuteStream id = )print 2 index =only( Length = )print dup =
-}if
-//PDFReader/InitialGraphicState get
-//PDFReader/GraphicState get copy pop
-//PDFReader/Operators get begin
-currentfile exch ()/SubFileDecode filter
-1 index//AppendFilters exec
-cvx mark exch
-exec
-counttomark 0 ne{
-mark(Data left on ostack after an immediate stream execution.)//error exec
-}if
-cleartomark
-end
-//PDFR_DEBUG{
-(ExecuteStream end.)=
-}if
-//PDFReader/CurrentObject null put
-dup/IsPage known{
-dup/Context get/NumCopies//knownget exec{
-1 sub{
-copypage
-}repeat
-}if
-EPS2Write not {showpage} if
-}if
-}bind def
-/stream
+ dup type/arraytype eq{0 get}if
+}bdf
+/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
{
-//PDFR_DEBUG{
-1 index =only( stream)=
-}if
-1 index GetObject{
-dup xcheck{
-exec
-1 index null PutObject
-}{
-pop
-}ifelse
-}if
-dup/ImmediateExec known{
-dup/GlobalExec//knownget exec{
-currentglobal 4 1 roll
-setglobal
-//ExecuteStream exec
-3 2 roll setglobal
-}{
-//ExecuteStream exec
-}ifelse
+ /pdfmark_5{cleartomark}bind def
}{
-//StoreStream exec
+ /pdfmark_5{pdfmark}bind def
}ifelse
-dup/.CleanResources//knownget exec{
-/All eq{
-//CleanAllResources exec
-}if
-}if
-}bind def
-/HookFont
+/ReadBypdfmark_5
{
-//PDFR_DEBUG{
-(Loaded the font )print dup/FontName get =
-}if
+ currentfile exch 0 exch/SubFileDecode filter
+ /currentdistillerparams where
+ {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+ {flushfile cleartomark}
+ {/PUT pdfmark}ifelse
+}bdf
+/ReadBypdfmark_5_string
{
-dup/FontFileType get dup/Type1 eq exch/MMType1 eq or{
-dup/FontName get
-//PDFReader/RemoveFontNamePrefix get exec
-findfont
-exit
-}if
-dup/FontFileType get/TrueType eq{
-//PDFReader/MakeType42 get exec
-//PDFR_DEBUG{
-(Font dict <<)=
-dup{
-1 index/sfnts eq{
-exch pop
-(/sfnts [)print
+ 2 dict begin
+ /makerString exch def string/tmpString exch def
+ {
+ currentfile tmpString readline not{pop exit}if
+ makerString anchorsearch
+ {
+ pop pop cleartomark exit
+ }{
+ 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5
+ }ifelse
+ }loop
+ end
+}bdf
+/xpdfm
{
-(-string\()print length//=only exec(\)- )=
-}forall
-(])=
-}{
-exch//=only exec( )print ==
-}ifelse
-}forall
-(>>)=
-}if
-dup/FontName get exch definefont
-exit
-}if
-mark(FontHook has no proc for )2 index/FontFileType get//error exec
-}loop
-/Font exch put
-}bind def
-/endstream
+ {
+ dup 0 get/Label eq
+ {
+ aload length[exch 1 add 1 roll/PAGELABEL
+ }{
+ aload pop
+ [{ThisPage}<<5 -2 roll>>/PUT
+ }ifelse
+ pdfmark_5
+ }forall
+}bdf
+/lmt{
+ dup 2 index le{exch}if pop dup 2 index ge{exch}if pop
+}bdf
+/int{
+ dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop
+}bdf
+/ds{
+ Adobe_AGM_Utils begin
+}bdf
+/dt{
+ currentdict Adobe_AGM_Utils eq{
+ end
+ }if
+}bdf
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_AGM_Core 2.0 0
+%%Version: 2.0 0
+%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
{
-}bind def
-/xref
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Core 209 dict dup begin put
+/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def
+/AGMCORE_str256 256 string def
+/AGMCORE_save nd
+/AGMCORE_graphicsave nd
+/AGMCORE_c 0 def
+/AGMCORE_m 0 def
+/AGMCORE_y 0 def
+/AGMCORE_k 0 def
+/AGMCORE_cmykbuf 4 array def
+/AGMCORE_screen[currentscreen]cvx def
+/AGMCORE_tmp 0 def
+/AGMCORE_&setgray nd
+/AGMCORE_&setcolor nd
+/AGMCORE_&setcolorspace nd
+/AGMCORE_&setcmykcolor nd
+/AGMCORE_cyan_plate nd
+/AGMCORE_magenta_plate nd
+/AGMCORE_yellow_plate nd
+/AGMCORE_black_plate nd
+/AGMCORE_plate_ndx nd
+/AGMCORE_get_ink_data nd
+/AGMCORE_is_cmyk_sep nd
+/AGMCORE_host_sep nd
+/AGMCORE_avoid_L2_sep_space nd
+/AGMCORE_distilling nd
+/AGMCORE_composite_job nd
+/AGMCORE_producing_seps nd
+/AGMCORE_ps_level -1 def
+/AGMCORE_ps_version -1 def
+/AGMCORE_environ_ok nd
+/AGMCORE_CSD_cache 0 dict def
+/AGMCORE_currentoverprint false def
+/AGMCORE_deltaX nd
+/AGMCORE_deltaY nd
+/AGMCORE_name nd
+/AGMCORE_sep_special nd
+/AGMCORE_err_strings 4 dict def
+/AGMCORE_cur_err nd
+/AGMCORE_current_spot_alias false def
+/AGMCORE_inverting false def
+/AGMCORE_feature_dictCount nd
+/AGMCORE_feature_opCount nd
+/AGMCORE_feature_ctm nd
+/AGMCORE_ConvertToProcess false def
+/AGMCORE_Default_CTM matrix def
+/AGMCORE_Default_PageSize nd
+/AGMCORE_Default_flatness nd
+/AGMCORE_currentbg nd
+/AGMCORE_currentucr nd
+/AGMCORE_pattern_paint_type 0 def
+/knockout_unitsq nd
+currentglobal true setglobal
+[/CSA/Gradient/Procedure]
{
-//PDFR_DEBUG{
-(xref)=
-//PDFR_DUMP{
-//PDFReader/ObjectRegistry get ==
-}if
-}if
-end
-count 0 ne{
-mark(Excessive data on estack at the end of the interpretation.)//error exec
-}if
-currentfile 1(%%EOF)/SubFileDecode filter
-flushfile
-cleardictstack
-}bind def
-/ResolveDict
-{dup{
-pop 1 index exch
-//DoNothing//ResolveD exec
-pop
+ /Generic/Category findresource dup length dict copy/Category defineresource pop
}forall
-pop
-}bind def
-/SetupPageView
+setglobal
+/AGMCORE_key_known
{
-//PDFR_DEBUG{
-(SetupPageView beg)=
-}if
-//DSC_OPDFREAD not{
-//GraphicState/InitialMatrix get setmatrix
-}if
-/MediaBox get aload pop
-3 index neg 3 index neg translate
-3 -1 roll sub 3 1 roll exch sub exch
-userdict/.HWMargins//knownget exec{
-aload pop
-}{
-currentpagedevice/.HWMargins//knownget exec{
-aload pop
-}{
-0 0 0 0
-}ifelse
-}ifelse
-currentpagedevice/PageSize get aload pop
-3 -1 roll sub 3 1 roll exch sub exch
-exch 3 index sub exch 3 index sub
-//SetPageSize{
-//PDFR_DEBUG{
-(Setting page size to )print 1 index//=only exec( )print dup =
-}if
-pop pop 3 index 3 index 2 copy
-currentglobal false setglobal 3 1 roll
-currentpagedevice dup /PageSize known{
-/PageSize get aload pop}{
-0 0}ifelse
-round cvi 2 index round cvi eq
-exch round cvi 3 index round cvi eq and{
-//PDFR_DEBUG{(PageSize matches request) == flush}if
-pop pop}{
-/MediaRequested where {
-//PDFR_DEBUG{(MediaRequested is true, check against new request) == flush}if
-/MediaRequested get aload pop
-round cvi 2 index round cvi eq
-exch round cvi 3 index round cvi eq and
-{//PDFR_DEBUG{(MediaRequested same as current request, ignore) == flush}if pop pop false}
-{//PDFR_DEBUG{(MediaRequested different to current request) == flush}if true}ifelse
-}{
-//PDFR_DEBUG{(No MediaRequested yet) == flush}if
-true
-}ifelse
+ where{
+ /Adobe_AGM_Core_Id known
+ }{
+ false
+ }ifelse
+}ndf
+/flushinput
{
-//PDFR_DEBUG{(Setting pagesize) == flush}if
-2 array astore
-dup /MediaRequested exch def
-<< exch /PageSize exch >> setpagedevice
-/pagesave save def
-}if
-}ifelse
-userdict/PDFR_InitialGS gstate put
-setglobal
-}if
-//RotatePages{
-2 copy gt 6 index 6 index gt ne{
-1 index 5 index le 1 index 5 index le and not
-}{
-false
-}ifelse
-}{
-false
-}ifelse
-{//CenterPages{
-//PDFR_DEBUG{
-(Rotating page, and then centering it)==
-}if
-90 rotate
-0 5 index neg translate
-5 index 1 index exch sub 2 div
-2 index 6 index sub 2 div neg
-translate
-}{
-//FitPages{
-1 index 5 index div 1 index 7 index div
-2 copy gt{
-exch
-}if
-pop dup scale
-}if
-90 rotate
-0 5 index neg translate
-}ifelse
-}{
-//CenterPages{
-//PDFR_DEBUG{
-(Ccentering page)==
-}if
-1 index 6 index sub 2 div
-1 index 6 index sub 2 div
-translate
-}{
-//FitPages{
-1 index 6 index div 1 index 6 index div
-2 copy gt{
-exch
-}if
-pop dup scale
-}if
-}ifelse
-}ifelse
-pop pop
-translate
-pop pop
-//PDFR_DEBUG{
-(SetupPageView end)=
-}if
-}bind def
-/PageContentsDaemon
+ save
+ 2 dict begin
+ /CompareBuffer 3 -1 roll def
+ /readbuffer 256 string def
+ mark
+ {
+ currentfile readbuffer{readline}stopped
+ {cleartomark mark}
+ {
+ not
+ {pop exit}
+ if
+ CompareBuffer eq
+ {exit}
+ if
+ }ifelse
+ }loop
+ cleartomark
+ end
+ restore
+}bdf
+/getspotfunction
{
-//PDFR_DEBUG{
-(Executing PageContentsDaemon for )print 2 index =
-}if
-1 index exch/Context exch put
-dup/ImmediateExec true put
-dup/IsPage true put
-SetPageSize {dup/Context get//SetupPageView exec}if
-}bind def
-/FontFileDaemon
+ AGMCORE_screen exch pop exch pop
+ dup type/dicttype eq{
+ dup/HalftoneType get 1 eq{
+ /SpotFunction get
+ }{
+ dup/HalftoneType get 2 eq{
+ /GraySpotFunction get
+ }{
+ pop
+ {
+ abs exch abs 2 copy add 1 gt{
+ 1 sub dup mul exch 1 sub dup mul add 1 sub
+ }{
+ dup mul exch dup mul add 1 exch sub
+ }ifelse
+ }bind
+ }ifelse
+ }ifelse
+ }if
+}def
+/np
+{newpath}bdf
+/clp_npth
+{clip np}def
+/eoclp_npth
+{eoclip np}def
+/npth_clp
+{np clip}def
+/graphic_setup
{
-//PDFR_DEBUG{
-(Executing FontFileDaemon for )print 2 index =
-}if
-dup/FontFileType get
-2 index exch
-dup//ReadFontProcs exch//knownget exec{
-exch pop exec
-}{
-mark(FontFile reader for )2 index( isn't implemented yet.)//error exec
-}ifelse
-//PDFR_DEBUG{
-(FontFileDaemon end)=
-}if
-pop
-}bind def
-/FontDescriptorDaemon
+ /AGMCORE_graphicsave save store
+ concat
+ 0 setgray
+ 0 setlinecap
+ 0 setlinejoin
+ 1 setlinewidth
+ []0 setdash
+ 10 setmiterlimit
+ np
+ false setoverprint
+ false setstrokeadjust
+ //Adobe_AGM_Core/spot_alias gx
+ /Adobe_AGM_Image where{
+ pop
+ Adobe_AGM_Image/spot_alias 2 copy known{
+ gx
+ }{
+ pop pop
+ }ifelse
+ }if
+ /sep_colorspace_dict null AGMCORE_gput
+ 100 dict begin
+ /dictstackcount countdictstack def
+ /showpage{}def
+ mark
+}def
+/graphic_cleanup
{
-//PDFR_DEBUG{
-(Executing FontDescriptorDaemon for )print 2 index =
-}if
-2 copy/FontResource exch put
-/Subtype get 1 index exch/FontFileType exch put
-}bind def
-/UnPDFEscape{
-dup dup length string cvs
-dup(#)search{
+ cleartomark
+ dictstackcount 1 countdictstack 1 sub{end}for
+ end
+ AGMCORE_graphicsave restore
+}def
+/compose_error_msg
{
-pop
-(16#--)2 index 0 2 getinterval
-1 index 3 2 getinterval copy pop
-cvi
-0 exch put
-0
-1 index 2 1 index length 2 sub getinterval
-3 copy putinterval
-length
-3 copy exch put
-getinterval
-(#)search not{
-pop exit
-}if
-}loop
-(\0)search pop exch pop exch pop
-cvn
-exch pop
-}{
-pop pop
-}ifelse
-}bind def
-/TypeDaemons<<
-/Page
-{//PDFR_DEBUG{
-(Recognized a page.)=
-}if
-dup/Contents//knownget exec{
-0 get//DoNothing exch
-[
-3 index//PageContentsDaemon/exec load
-]cvx
-//Register exec
-}{
-(fixme: page with no Contents won't be printed.)=
-}ifelse
-}bind
-/FontDescriptor
-{//PDFR_DEBUG{
-(Recognized a font descriptor.)=
-}if
-dup/FontName//knownget exec{
-1 index/FontName 3 -1 roll//UnPDFEscape exec put
-}if
-dup dup/FontFile known{/FontFile}{/FontFile2}ifelse
-//knownget exec{
-0 get//DoNothing exch
-[
-3 index//FontFileDaemon/exec load
-]cvx
-//Register exec
-}{
-(Font descriptor )print 1 index =only( has no FontFile.)=
-}ifelse
-}bind
-/Font
-{//PDFR_DEBUG{
-(Recognized a font resource.)=
-}if
-dup/BaseFont//knownget exec{
-//UnPDFEscape exec 2 copy/BaseFont exch put
-//PDFReader/RemoveFontNamePrefix get exec
-currentglobal exch
-dup/Font resourcestatus{
-pop pop
-//PDFReader/GetInstalledFont get exec pop
-}{
-pop
-}ifelse
-setglobal
+ grestoreall initgraphics
+ /Helvetica findfont 10 scalefont setfont
+ /AGMCORE_deltaY 100 def
+ /AGMCORE_deltaX 310 def
+ clippath pathbbox np pop pop 36 add exch 36 add exch moveto
+ 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto
+ 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath
+ 0 AGMCORE_&setgray
+ gsave 1 AGMCORE_&setgray fill grestore
+ 1 setlinewidth gsave stroke grestore
+ currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto
+ /AGMCORE_deltaY 12 def
+ /AGMCORE_tmp 0 def
+ AGMCORE_err_strings exch get
+ {
+ dup 32 eq
+ {
+ pop
+ AGMCORE_str256 0 AGMCORE_tmp getinterval
+ stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt
+ {
+ currentpoint AGMCORE_deltaY sub exch pop
+ clippath pathbbox pop pop pop 44 add exch moveto
+ }if
+ AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show
+ 0 1 AGMCORE_str256 length 1 sub
+ {
+ AGMCORE_str256 exch 0 put
+ }for
+ /AGMCORE_tmp 0 def
+ }{
+ AGMCORE_str256 exch AGMCORE_tmp xpt
+ /AGMCORE_tmp AGMCORE_tmp 1 add def
+ }ifelse
+ }forall
+}bdf
+/AGMCORE_CMYKDeviceNColorspaces[
+ [/Separation/None/DeviceCMYK{0 0 0}]
+ [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind]
+ [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind]
+ [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind]
+ [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind]
+ [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind]
+ [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind]
+ [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind]
+ [/Separation(Cyan)/DeviceCMYK{0 0 0}]
+ [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind]
+ [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind]
+ [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind]
+ [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}]
+ [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind]
+ [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}]
+ [/DeviceCMYK]
+]def
+/ds{
+ Adobe_AGM_Core begin
+ /currentdistillerparams where
+ {
+ pop currentdistillerparams/CoreDistVersion get 5000 lt
+ {<</DetectBlends false>>setdistillerparams}if
+ }if
+ /AGMCORE_ps_version xdf
+ /AGMCORE_ps_level xdf
+ errordict/AGM_handleerror known not{
+ errordict/AGM_handleerror errordict/handleerror get put
+ errordict/handleerror{
+ Adobe_AGM_Core begin
+ $error/newerror get AGMCORE_cur_err null ne and{
+ $error/newerror false put
+ AGMCORE_cur_err compose_error_msg
+ }if
+ $error/newerror true put
+ end
+ errordict/AGM_handleerror get exec
+ }bind put
+ }if
+ /AGMCORE_environ_ok
+ ps_level AGMCORE_ps_level ge
+ ps_version AGMCORE_ps_version ge and
+ AGMCORE_ps_level -1 eq or
+ def
+ AGMCORE_environ_ok not
+ {/AGMCORE_cur_err/AGMCORE_bad_environ def}if
+ /AGMCORE_&setgray systemdict/setgray get def
+ level2{
+ /AGMCORE_&setcolor systemdict/setcolor get def
+ /AGMCORE_&setcolorspace systemdict/setcolorspace get def
+ }if
+ /AGMCORE_currentbg currentblackgeneration def
+ /AGMCORE_currentucr currentundercolorremoval def
+ /AGMCORE_Default_flatness currentflat def
+ /AGMCORE_distilling
+ /product where{
+ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and
+ }{
+ false
+ }ifelse
+ def
+ /AGMCORE_GSTATE AGMCORE_key_known not{
+ /AGMCORE_GSTATE 21 dict def
+ /AGMCORE_tmpmatrix matrix def
+ /AGMCORE_gstack 32 array def
+ /AGMCORE_gstackptr 0 def
+ /AGMCORE_gstacksaveptr 0 def
+ /AGMCORE_gstackframekeys 14 def
+ /AGMCORE_&gsave/gsave ldf
+ /AGMCORE_&grestore/grestore ldf
+ /AGMCORE_&grestoreall/grestoreall ldf
+ /AGMCORE_&save/save ldf
+ /AGMCORE_&setoverprint/setoverprint ldf
+ /AGMCORE_gdictcopy{
+ begin
+ {def}forall
+ end
+ }def
+ /AGMCORE_gput{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ 3 1 roll
+ put
+ }def
+ /AGMCORE_gget{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ exch
+ get
+ }def
+ /gsave{
+ AGMCORE_&gsave
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /grestore{
+ AGMCORE_&grestore
+ AGMCORE_gstackptr 1 sub
+ dup AGMCORE_gstacksaveptr lt{1 add}if
+ dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known
+ {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse
+ /AGMCORE_gstackptr exch store
+ }def
+ /grestoreall{
+ AGMCORE_&grestoreall
+ /AGMCORE_gstackptr AGMCORE_gstacksaveptr store
+ }def
+ /save{
+ AGMCORE_&save
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ /AGMCORE_gstacksaveptr AGMCORE_gstackptr store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /setoverprint{
+ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint
+ }def
+ 0 1 AGMCORE_gstack length 1 sub{
+ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put
+ }for
+ }if
+ level3/AGMCORE_&sysshfill AGMCORE_key_known not and
+ {
+ /AGMCORE_&sysshfill systemdict/shfill get def
+ /AGMCORE_&sysmakepattern systemdict/makepattern get def
+ /AGMCORE_&usrmakepattern/makepattern load def
+ }if
+ /currentcmykcolor[0 0 0 0]AGMCORE_gput
+ /currentstrokeadjust false AGMCORE_gput
+ /currentcolorspace[/DeviceGray]AGMCORE_gput
+ /sep_tint 0 AGMCORE_gput
+ /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput
+ /sep_colorspace_dict null AGMCORE_gput
+ /devicen_colorspace_dict null AGMCORE_gput
+ /indexed_colorspace_dict null AGMCORE_gput
+ /currentcolor_intent()AGMCORE_gput
+ /customcolor_tint 1 AGMCORE_gput
+ /absolute_colorimetric_crd null AGMCORE_gput
+ /relative_colorimetric_crd null AGMCORE_gput
+ /saturation_crd null AGMCORE_gput
+ /perceptual_crd null AGMCORE_gput
+ currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf
+ cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf
+ <<
+ /MaxPatternItem currentsystemparams/MaxPatternCache get
+ >>
+ setuserparams
+ end
+}def
+/ps
+{
+ /setcmykcolor where{
+ pop
+ Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put
+ }if
+ Adobe_AGM_Core begin
+ /setcmykcolor
+ {
+ 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput
+ 1 sub 4 1 roll
+ 3{
+ 3 index add neg dup 0 lt{
+ pop 0
+ }if
+ 3 1 roll
+ }repeat
+ setrgbcolor pop
+ }ndf
+ /currentcmykcolor
+ {
+ /currentcmykcolor AGMCORE_gget aload pop
+ }ndf
+ /setoverprint
+ {pop}ndf
+ /currentoverprint
+ {false}ndf
+ /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def
+ /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def
+ /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def
+ /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def
+ /AGMCORE_plate_ndx
+ AGMCORE_cyan_plate{
+ 0
+ }{
+ AGMCORE_magenta_plate{
+ 1
+ }{
+ AGMCORE_yellow_plate{
+ 2
+ }{
+ AGMCORE_black_plate{
+ 3
+ }{
+ 4
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_have_reported_unsupported_color_space false def
+ /AGMCORE_report_unsupported_color_space
+ {
+ AGMCORE_have_reported_unsupported_color_space false eq
+ {
+ (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)==
+ Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf
+ }if
+ }def
+ /AGMCORE_composite_job
+ AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def
+ /AGMCORE_in_rip_sep
+ /AGMCORE_in_rip_sep where{
+ pop AGMCORE_in_rip_sep
+ }{
+ AGMCORE_distilling
+ {
+ false
+ }{
+ userdict/Adobe_AGM_OnHost_Seps known{
+ false
+ }{
+ level2{
+ currentpagedevice/Separations 2 copy known{
+ get
+ }{
+ pop pop false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def
+ /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def
+ /AGM_preserve_spots
+ /AGM_preserve_spots where{
+ pop AGM_preserve_spots
+ }{
+ AGMCORE_distilling AGMCORE_producing_seps or
+ }ifelse
+ def
+ /AGM_is_distiller_preserving_spotimages
+ {
+ currentdistillerparams/PreserveOverprintSettings known
+ {
+ currentdistillerparams/PreserveOverprintSettings get
+ {
+ currentdistillerparams/ColorConversionStrategy known
+ {
+ currentdistillerparams/ColorConversionStrategy get
+ /sRGB ne
+ }{
+ true
+ }ifelse
+ }{
+ false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }def
+ /convert_spot_to_process where{pop}{
+ /convert_spot_to_process
+ {
+ //Adobe_AGM_Core begin
+ dup map_alias{
+ /Name get exch pop
+ }if
+ dup dup(None)eq exch(All)eq or
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ gsave
+ 1 0 0 0 setcmykcolor currentgray 1 exch sub
+ 0 1 0 0 setcmykcolor currentgray 1 exch sub
+ 0 0 1 0 setcmykcolor currentgray 1 exch sub
+ 0 0 0 1 setcmykcolor currentgray 1 exch sub
+ add add add 0 eq
+ {
+ pop false
+ }{
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ }ifelse
+ grestore
+ }{
+ AGMCORE_distilling
+ {
+ pop AGM_is_distiller_preserving_spotimages not
+ }{
+ //Adobe_AGM_Core/AGMCORE_name xddf
+ false
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq
+ AGMUTIL_cpd/OverrideSeparations known and
+ {
+ AGMUTIL_cpd/OverrideSeparations get
+ {
+ /HqnSpots/ProcSet resourcestatus
+ {
+ pop pop pop true
+ }if
+ }if
+ }if
+ {
+ AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not
+ }{
+ gsave
+ [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace
+ false
+ AGMUTIL_cpd/SeparationColorNames 2 copy known
+ {
+ get
+ {AGMCORE_name eq or}forall
+ not
+ }{
+ pop pop pop true
+ }ifelse
+ grestore
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ }ifelse
+ /convert_to_process where{pop}{
+ /convert_to_process
+ {
+ dup length 0 eq
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ dup true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process and}ifelse
+ }
+ forall
+ {
+ true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ (Black)eq or and
+ }forall
+ not
+ }{pop false}ifelse
+ }{
+ false exch
+ {
+ /PhotoshopDuotoneList where{pop false}{true}ifelse
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process or}ifelse
+ }
+ {
+ convert_spot_to_process or
+ }
+ ifelse
+ }
+ forall
+ }ifelse
+ }ifelse
+ }def
+ }ifelse
+ /AGMCORE_avoid_L2_sep_space
+ version cvr 2012 lt
+ level2 and
+ AGMCORE_producing_seps not and
+ def
+ /AGMCORE_is_cmyk_sep
+ AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or
+ def
+ /AGM_avoid_0_cmyk where{
+ pop AGM_avoid_0_cmyk
+ }{
+ AGM_preserve_spots
+ userdict/Adobe_AGM_OnHost_Seps known
+ userdict/Adobe_AGM_InRip_Seps known or
+ not and
+ }ifelse
+ {
+ /setcmykcolor[
+ {
+ 4 copy add add add 0 eq currentoverprint and{
+ pop 0.0005
+ }if
+ }/exec cvx
+ /AGMCORE_&setcmykcolor load dup type/operatortype ne{
+ /exec cvx
+ }if
+ ]cvx def
+ }if
+ /AGMCORE_IsSeparationAProcessColor
+ {
+ dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or
+ }def
+ AGMCORE_host_sep{
+ /setcolortransfer
+ {
+ AGMCORE_cyan_plate{
+ pop pop pop
+ }{
+ AGMCORE_magenta_plate{
+ 4 3 roll pop pop pop
+ }{
+ AGMCORE_yellow_plate{
+ 4 2 roll pop pop pop
+ }{
+ 4 1 roll pop pop pop
+ }ifelse
+ }ifelse
+ }ifelse
+ settransfer
+ }
+ def
+ /AGMCORE_get_ink_data
+ AGMCORE_cyan_plate{
+ {pop pop pop}
+ }{
+ AGMCORE_magenta_plate{
+ {4 3 roll pop pop pop}
+ }{
+ AGMCORE_yellow_plate{
+ {4 2 roll pop pop pop}
+ }{
+ {4 1 roll pop pop pop}
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_RemoveProcessColorNames
+ {
+ 1 dict begin
+ /filtername
+ {
+ dup/Cyan eq 1 index(Cyan)eq or
+ {pop(_cyan_)}if
+ dup/Magenta eq 1 index(Magenta)eq or
+ {pop(_magenta_)}if
+ dup/Yellow eq 1 index(Yellow)eq or
+ {pop(_yellow_)}if
+ dup/Black eq 1 index(Black)eq or
+ {pop(_black_)}if
+ }def
+ dup type/arraytype eq
+ {[exch{filtername}forall]}
+ {filtername}ifelse
+ end
+ }def
+ level3{
+ /AGMCORE_IsCurrentColor
+ {
+ dup AGMCORE_IsSeparationAProcessColor
+ {
+ AGMCORE_plate_ndx 0 eq
+ {dup(Cyan)eq exch/Cyan eq or}if
+ AGMCORE_plate_ndx 1 eq
+ {dup(Magenta)eq exch/Magenta eq or}if
+ AGMCORE_plate_ndx 2 eq
+ {dup(Yellow)eq exch/Yellow eq or}if
+ AGMCORE_plate_ndx 3 eq
+ {dup(Black)eq exch/Black eq or}if
+ AGMCORE_plate_ndx 4 eq
+ {pop false}if
+ }{
+ gsave
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ grestore
+ }ifelse
+ }def
+ /AGMCORE_filter_functiondatasource
+ {
+ 5 dict begin
+ /data_in xdf
+ data_in type/stringtype eq
+ {
+ /ncomp xdf
+ /comp xdf
+ /string_out data_in length ncomp idiv string def
+ 0 ncomp data_in length 1 sub
+ {
+ string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put
+ }for
+ string_out
+ }{
+ string/string_in xdf
+ /string_out 1 string def
+ /component xdf
+ [
+ data_in string_in/readstring cvx
+ [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx
+ [/pop cvx()]cvx/ifelse cvx
+ ]cvx/ReusableStreamDecode filter
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingFunction
+ {
+ 2 dict begin
+ /paint? xdf
+ /channel xdf
+ dup type/dicttype eq
+ {
+ begin
+ FunctionType 0 eq
+ {
+ /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def
+ currentdict/Decode known
+ {/Decode Decode channel 2 mul 2 getinterval def}if
+ paint? not
+ {/Decode[1 1]def}if
+ }if
+ FunctionType 2 eq
+ {
+ paint?
+ {
+ /C0[C0 channel get 1 exch sub]def
+ /C1[C1 channel get 1 exch sub]def
+ }{
+ /C0[1]def
+ /C1[1]def
+ }ifelse
+ }if
+ FunctionType 3 eq
+ {
+ /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def
+ }if
+ currentdict/Range known
+ {/Range[0 1]def}if
+ currentdict
+ end}{
+ channel get 0 paint? AGMCORE_separateShadingFunction
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShading
+ {
+ 3 -1 roll begin
+ currentdict/Function known
+ {
+ currentdict/Background known
+ {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if
+ Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf
+ /ColorSpace[/DeviceGray]def
+ }{
+ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }{
+ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put
+ }ifelse
+ ColorSpace 0 get/Separation eq
+ {
+ {
+ [1/exch cvx/sub cvx]cvx
+ }{
+ [/pop cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll put
+ pop
+ }{
+ {
+ [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx
+ }{
+ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll bind put
+ }ifelse
+ ColorSpace 2/DeviceGray put
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingDict
+ {
+ dup/ColorSpace get
+ dup type/arraytype ne
+ {[exch]}if
+ dup 0 get/DeviceCMYK eq
+ {
+ exch begin
+ currentdict
+ AGMCORE_cyan_plate
+ {0 true}if
+ AGMCORE_magenta_plate
+ {1 true}if
+ AGMCORE_yellow_plate
+ {2 true}if
+ AGMCORE_black_plate
+ {3 true}if
+ AGMCORE_plate_ndx 4 eq
+ {0 false}if
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ currentdict
+ end exch
+ }if
+ dup 0 get/Separation eq
+ {
+ exch begin
+ ColorSpace 1 get dup/None ne exch/All ne and
+ {
+ ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /Separation
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }ifelse
+ }{
+ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor
+ 0 exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ }if
+ currentdict
+ end exch
+ }if
+ dup 0 get/DeviceN eq
+ {
+ exch begin
+ ColorSpace 1 get convert_to_process
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /DeviceN
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ /ColorSpace[/DeviceGray]def
+ }if
+ }ifelse
+ }{
+ currentdict
+ false -1 ColorSpace 1 get
+ {
+ AGMCORE_IsCurrentColor
+ {
+ 1 add
+ exch pop true exch exit
+ }if
+ 1 add
+ }forall
+ exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ currentdict
+ end exch
+ }if
+ dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not
+ {
+ exch begin
+ ColorSpace dup type/arraytype eq
+ {0 get}if
+ /DeviceGray ne
+ {
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ ColorSpace 0 get/CIEBasedA eq
+ {
+ /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def
+ }if
+ ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or
+ {
+ /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def
+ }if
+ ColorSpace 0 get/CIEBasedDEFG eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }if
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }if
+ currentdict
+ end exch
+ }if
+ pop
+ dup/AGMCORE_ignoreshade known
+ {
+ begin
+ /ColorSpace[/Separation(None)/DeviceGray{}]def
+ currentdict end
+ }if
+ }def
+ /shfill
+ {
+ AGMCORE_separateShadingDict
+ dup/AGMCORE_ignoreshade known
+ {pop}
+ {AGMCORE_&sysshfill}ifelse
+ }def
+ /makepattern
+ {
+ exch
+ dup/PatternType get 2 eq
+ {
+ clonedict
+ begin
+ /Shading Shading AGMCORE_separateShadingDict def
+ Shading/AGMCORE_ignoreshade known
+ currentdict end exch
+ {pop<</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if
+ exch AGMCORE_&sysmakepattern
+ }{
+ exch AGMCORE_&usrmakepattern
+ }ifelse
+ }def
+ }if
+ }if
+ AGMCORE_in_rip_sep{
+ /setcustomcolor
+ {
+ exch aload pop
+ dup 7 1 roll inRip_spot_has_ink not {
+ 4{4 index mul 4 1 roll}
+ repeat
+ /DeviceCMYK setcolorspace
+ 6 -2 roll pop pop
+ }{
+ //Adobe_AGM_Core begin
+ /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf
+ end
+ [/Separation 4 -1 roll/DeviceCMYK
+ {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul}
+ ]
+ setcolorspace
+ }ifelse
+ setcolor
+ }ndf
+ /setseparationgray
+ {
+ [/Separation(All)/DeviceGray{}]setcolorspace_opt
+ 1 exch sub setcolor
+ }ndf
+ }{
+ /setseparationgray
+ {
+ AGMCORE_&setgray
+ }ndf
+ }ifelse
+ /findcmykcustomcolor
+ {
+ 5 makereadonlyarray
+ }ndf
+ /setcustomcolor
+ {
+ exch aload pop pop
+ 4{4 index mul 4 1 roll}repeat
+ setcmykcolor pop
+ }ndf
+ /has_color
+ /colorimage where{
+ AGMCORE_producing_seps{
+ pop true
+ }{
+ systemdict eq
+ }ifelse
+ }{
+ false
+ }ifelse
+ def
+ /map_index
+ {
+ 1 index mul exch getinterval{255 div}forall
+ }bdf
+ /map_indexed_devn
+ {
+ Lookup Names length 3 -1 roll cvi map_index
+ }bdf
+ /n_color_components
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop 1
+ }{
+ /DeviceCMYK eq{
+ 4
+ }{
+ 3
+ }ifelse
+ }ifelse
+ }bdf
+ level2{
+ /mo/moveto ldf
+ /li/lineto ldf
+ /cv/curveto ldf
+ /knockout_unitsq
+ {
+ 1 setgray
+ 0 0 1 1 rectfill
+ }def
+ level2/setcolorspace AGMCORE_key_known not and{
+ /AGMCORE_&&&setcolorspace/setcolorspace ldf
+ /AGMCORE_ReplaceMappedColor
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ dup 0 get dup/Separation eq
+ {
+ pop
+ dup length array copy
+ dup dup 1 get
+ current_spot_alias
+ {
+ dup map_alias
+ {
+ false set_spot_alias
+ dup 1 exch setsepcolorspace
+ true set_spot_alias
+ begin
+ /sep_colorspace_dict currentdict AGMCORE_gput
+ pop pop pop
+ [
+ /Separation Name
+ CSA map_csa
+ MappedCSA
+ /sep_colorspace_proc load
+ ]
+ dup Name
+ end
+ }if
+ }if
+ map_reserved_ink_name 1 xpt
+ }{
+ /DeviceN eq
+ {
+ dup length array copy
+ dup dup 1 get[
+ exch{
+ current_spot_alias{
+ dup map_alias{
+ /Name get exch pop
+ }if
+ }if
+ map_reserved_ink_name
+ }forall
+ ]1 xpt
+ }if
+ }ifelse
+ end
+ }if
+ }if
+ }def
+ /setcolorspace
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/Indexed eq
+ {
+ AGMCORE_distilling
+ {
+ /PhotoshopDuotoneList where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ {
+ aload pop 3 -1 roll
+ AGMCORE_ReplaceMappedColor
+ 3 1 roll 4 array astore
+ }if
+ }{
+ AGMCORE_ReplaceMappedColor
+ }ifelse
+ }if
+ DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if
+ }def
+ }if
+ }{
+ /adj
+ {
+ currentstrokeadjust{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ }if
+ }def
+ /mo{
+ adj moveto
+ }def
+ /li{
+ adj lineto
+ }def
+ /cv{
+ 6 2 roll adj
+ 6 2 roll adj
+ 6 2 roll adj curveto
+ }def
+ /knockout_unitsq
+ {
+ 1 setgray
+ 8 8 1[8 0 0 8 0 0]{<ffffffffffffffff>}image
+ }def
+ /currentstrokeadjust{
+ /currentstrokeadjust AGMCORE_gget
+ }def
+ /setstrokeadjust{
+ /currentstrokeadjust exch AGMCORE_gput
+ }def
+ /setcolorspace
+ {
+ /currentcolorspace exch AGMCORE_gput
+ }def
+ /currentcolorspace
+ {
+ /currentcolorspace AGMCORE_gget
+ }def
+ /setcolor_devicecolor
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop setgray
+ }{
+ /DeviceCMYK eq{
+ setcmykcolor
+ }{
+ setrgbcolor
+ }ifelse
+ }ifelse
+ }def
+ /setcolor
+ {
+ currentcolorspace 0 get
+ dup/DeviceGray ne{
+ dup/DeviceCMYK ne{
+ dup/DeviceRGB ne{
+ dup/Separation eq{
+ pop
+ currentcolorspace 3 gx
+ currentcolorspace 2 get
+ }{
+ dup/Indexed eq{
+ pop
+ currentcolorspace 3 get dup type/stringtype eq{
+ currentcolorspace 1 get n_color_components
+ 3 -1 roll map_index
+ }{
+ exec
+ }ifelse
+ currentcolorspace 1 get
+ }{
+ /AGMCORE_cur_err/AGMCORE_invalid_color_space def
+ AGMCORE_invalid_color_space
+ }ifelse
+ }ifelse
+ }if
+ }if
+ }if
+ setcolor_devicecolor
+ }def
+ }ifelse
+ /sop/setoverprint ldf
+ /lw/setlinewidth ldf
+ /lc/setlinecap ldf
+ /lj/setlinejoin ldf
+ /ml/setmiterlimit ldf
+ /dsh/setdash ldf
+ /sadj/setstrokeadjust ldf
+ /gry/setgray ldf
+ /rgb/setrgbcolor ldf
+ /cmyk[
+ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx
+ /setcmykcolor load dup type/operatortype ne{/exec cvx}if
+ ]cvx bdf
+ level3 AGMCORE_host_sep not and{
+ /nzopmsc{
+ 6 dict begin
+ /kk exch def
+ /yy exch def
+ /mm exch def
+ /cc exch def
+ /sum 0 def
+ cc 0 ne{/sum sum 2#1000 or def cc}if
+ mm 0 ne{/sum sum 2#0100 or def mm}if
+ yy 0 ne{/sum sum 2#0010 or def yy}if
+ kk 0 ne{/sum sum 2#0001 or def kk}if
+ AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace
+ sum 0 eq{0}if
+ end
+ setcolor
+ }bdf
+ }{
+ /nzopmsc/cmyk ldf
+ }ifelse
+ /sep/setsepcolor ldf
+ /devn/setdevicencolor ldf
+ /idx/setindexedcolor ldf
+ /colr/setcolor ldf
+ /csacrd/set_csa_crd ldf
+ /sepcs/setsepcolorspace ldf
+ /devncs/setdevicencolorspace ldf
+ /idxcs/setindexedcolorspace ldf
+ /cp/closepath ldf
+ /clp/clp_npth ldf
+ /eclp/eoclp_npth ldf
+ /f/fill ldf
+ /ef/eofill ldf
+ /@/stroke ldf
+ /nclp/npth_clp ldf
+ /gset/graphic_setup ldf
+ /gcln/graphic_cleanup ldf
+ /ct/concat ldf
+ /cf/currentfile ldf
+ /fl/filter ldf
+ /rs/readstring ldf
+ /AGMCORE_def_ht currenthalftone def
+ /clonedict Adobe_AGM_Utils begin/clonedict load end def
+ /clonearray Adobe_AGM_Utils begin/clonearray load end def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+ /getrampcolor
+ {
+ /indx exch def
+ 0 1 NumComp 1 sub
+ {
+ dup
+ Samples exch get
+ dup type/stringtype eq{indx get}if
+ exch
+ Scaling exch get aload pop
+ 3 1 roll
+ mul add
+ }for
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }bdf
+ /sssetbackground{
+ aload pop
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }bdf
+ /RadialShade
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /r2 xdf
+ /c2y xdf
+ /c2x xdf
+ /r1 xdf
+ /c1y xdf
+ /c1x xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ c1x c2x eq
+ {
+ c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope c2y c1y sub c2x c1x sub div def
+ /theta slope 1 atan def
+ c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if
+ c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if
+ }ifelse
+ gsave
+ clippath
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax xdf
+ /xMax xdf
+ /yMin xdf
+ /xMin xdf
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ /max{2 copy gt{pop}{exch pop}ifelse}bdf
+ /min{2 copy lt{pop}{exch pop}ifelse}bdf
+ rampdict begin
+ 40 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def
+ /c1y 0 def
+ /c1x 0 def
+ /c2x 0 def
+ ext0
+ {
+ 0 getrampcolor
+ c2y r2 add r1 sub 0.0001 lt
+ {
+ c1x c1y r1 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2y r1 add r2 le
+ {
+ c1x c1y r1 0 360 arc
+ fill
+ }
+ {
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r1 neg def
+ /p1y c1y def
+ /p2x r1 def
+ /p2y c1y def
+ p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y p1x SS1 div neg def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y p2x SS2 div neg def
+ r1 r2 gt
+ {
+ /L1maxX p1x yMin p1y sub SS1 div add def
+ /L2maxX p2x yMin p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ c1x c2x sub dup mul
+ c1y c2y sub dup mul
+ add 0.5 exp
+ 0 dtransform
+ dup mul exch dup mul add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ /hires xdf
+ hires mul
+ /numpix xdf
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ /xInc c2x c1x sub numsteps div def
+ /yInc c2y c1y sub numsteps div def
+ /rInc r2 r1 sub numsteps div def
+ /cx c1x def
+ /cy c1y def
+ /radius r1 def
+ np
+ xInc 0 eq yInc 0 eq rInc 0 eq and and
+ {
+ 0 getrampcolor
+ cx cy radius 0 360 arc
+ stroke
+ NumSamples 1 sub getrampcolor
+ cx cy radius 72 hires div add 0 360 arc
+ 0 setlinewidth
+ stroke
+ }{
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ cx cy radius 0 360 arc
+ /cx cx xInc add def
+ /cy cy yInc add def
+ /radius radius rInc add def
+ cx cy radius 360 0 arcn
+ eofill
+ rampIndxInc add
+ }repeat
+ pop
+ }ifelse
+ ext1
+ {
+ c2y r2 add r1 lt
+ {
+ c2x c2y r2 0 360 arc
+ fill
+ }{
+ c2y r1 add r2 sub 0.0001 le
+ {
+ c2x c2y r2 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r2 neg def
+ /p1y c2y def
+ /p2x r2 def
+ /p2y c2y def
+ p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y c2y p1x SS1 div sub def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y c2y p2x SS2 div sub def
+ r1 r2 lt
+ {
+ /L1maxX p1x yMax p1y sub SS1 div add def
+ /L2maxX p2x yMax p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+ /GenStrips
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /y2 xdf
+ /x2 xdf
+ /y1 xdf
+ /x1 xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ x1 x2 eq
+ {
+ y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope y2 y1 sub x2 x1 sub div def
+ /theta slope 1 atan def
+ x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if
+ x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if
+ }
+ ifelse
+ gsave
+ clippath
+ x1 y1 translate
+ theta rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax exch def
+ /xMax exch def
+ /yMin exch def
+ /xMin exch def
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ rampdict begin
+ 20 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ x1 y1 translate
+ theta rotate
+ /xStart 0 def
+ /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def
+ /ySpan yMax yMin sub def
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ xStart 0 transform
+ xEnd 0 transform
+ 3 -1 roll
+ sub dup mul
+ 3 1 roll
+ sub dup mul
+ add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ mul
+ /numpix xdf
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ ext0
+ {
+ 0 getrampcolor
+ xMin xStart lt
+ {
+ xMin yMin xMin neg ySpan rectfill
+ }if
+ }if
+ /xInc xEnd xStart sub numsteps div def
+ /x xStart def
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ x yMin xInc ySpan rectfill
+ /x x xInc add def
+ rampIndxInc add
+ }repeat
+ pop
+ ext1{
+ xMax xEnd gt
+ {
+ xEnd yMin xMax xEnd sub ySpan rectfill
+ }if
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+}def
+/pt
+{
+ end
+}def
+/dt{
+}def
+/pgsv{
+ //Adobe_AGM_Core/AGMCORE_save save put
+}def
+/pgrs{
+ //Adobe_AGM_Core/AGMCORE_save get restore
+}def
+systemdict/findcolorrendering known{
+ /findcolorrendering systemdict/findcolorrendering get def
}if
-dup/FontDescriptor//knownget exec{
-0 get
-dup//IsRegistered exec{
-//PDFR_DEBUG{
-(already registered )print dup =
+systemdict/setcolorrendering known{
+ /setcolorrendering systemdict/setcolorrendering get def
}if
-pop
-}{
-//DoNothing exch
-[
-3 index//FontDescriptorDaemon/exec load
-]cvx
-//Register exec
-}ifelse
-}if
-}bind
->>def
-/MakeStreamReader
-{dup
-[
-exch
-//PDFR_DEBUG{
-(Stream proc )
-/print load
-//PDFR_STREAM{
-(<)
-/print load
-}if
-}if
-1 dict dup/i -1 put
-/dup load
-/i
-/get load
-1
-/add load
-/dup load
-3
-1
-/roll load
-/i
-/exch load
-/put load
-//knownget
-/exec load
-/not load
-{()}
-/if load
-//PDFR_DEBUG{
-//PDFR_STREAM{
-/dup load
-/print load
-(>)
-/print load
-}if
-( end of stream proc.\n)
-/print load
-}if
-]cvx
-//PDFR_DEBUG{
-(Stream reader )print dup ==
-}if
-0()/SubFileDecode filter
-exch//AppendFilters exec
-}bind def
-/RunDelayedStream
+/test_cmyk_color_plate
{
-//GraphicState/InitialTextMatrix get
-//InitialTextMatrixStack//PDFReader/InitialTextMatrixStackPointer get
-2 copy get null eq{
-2 copy currentglobal true setglobal matrix exch setglobal put
-}if
-get copy pop
-//PDFReader/InitialTextMatrixStackPointer 2 copy get 1 add put
-//MakeStreamReader exec
-mark exch
-cvx exec
-counttomark 0 ne{
-mark(Data left on ostack after a delayed stream execution.)//error exec
-}if
-cleartomark
-//PDFReader/InitialTextMatrixStackPointer 2 copy get 1 sub put
-//InitialTextMatrixStack//PDFReader/InitialTextMatrixStackPointer get get
-//GraphicState/InitialTextMatrix get
-copy pop
-}bind def
-//ReadFontProcs begin
-/Type1
-{//PDFR_DEBUG{
-(ReadFontProcs.Type1)=
-}if
-dup/.endobj_daemon[4 index//HookFont/exec load]cvx put
-dup/ImmediateExec true put
-/GlobalExec true put
-}bind def
-/MMType1//Type1 def
-/TrueType
-{//PDFR_DEBUG{
-(ReadFontProcs.TrueType)=
-}if
-dup/.endobj_daemon[4 index//HookFont/exec load]cvx put
-pop
-}bind def
-end
-/.opdloadttfontdict 50 dict def
-.opdloadttfontdict begin
-/maxstring 65400 def
-end
-/.InsertionSort
+ gsave
+ setcmykcolor currentgray 1 ne
+ grestore
+}def
+/inRip_spot_has_ink
{
-/CompareProc exch def
-/Array exch def
-1 1 Array length 1 sub
+ dup//Adobe_AGM_Core/AGMCORE_name xddf
+ convert_spot_to_process not
+}def
+/map255_to_range
{
-/Ix exch def
-/Value1 Array Ix get def
-/Jx Ix 1 sub def
+ 1 index sub
+ 3 -1 roll 255 div mul add
+}def
+/set_csa_crd
{
-Jx 0 lt{
-exit
-}if
-/Value2 Array Jx get def
-Value1 Value2 CompareProc{
-exit
-}if
-Array Jx 1 add Value2 put
-/Jx Jx 1 sub def
-}loop
-Array Jx 1 add Value1 put
-}for
-Array
-}bind def
-/putu16{
-3 copy -8 bitshift put
-exch 1 add exch 16#ff and put
-}bind def
-/putu32{
-3 copy -16 bitshift putu16
-exch 2 add exch 16#ffff and putu16
-}bind def
-/.readtable{
-dup dup 1 and add string
-dup 0 4 -1 roll getinterval
-3 -1 roll exch
-dup()ne{readstring}if pop pop
-}bind def
-/.readbigtable{
-dup maxstring lt{
-.readtable
-}{
-currentuserparams/VMReclaim get -2 vmreclaim
-[4 2 roll{
-dup maxstring le{exit}if
-1 index maxstring string readstring pop 3 1 roll maxstring sub
-}loop .readtable]
-exch vmreclaim
-}ifelse
-}bind def
-/ReadTTF
+ /sep_colorspace_dict null AGMCORE_gput
+ begin
+ CSA get_csa_by_name setcolorspace_opt
+ set_crd
+ end
+}
+def
+/map_csa
{
-.opdloadttfontdict begin
-/TTFontFile exch def
-/TableDir TTFontFile 12 string readstring pop def
-/tables TTFontFile TableDir 4 getu16 16 mul string readstring pop def
-/tabarray tables length 16 idiv array def
-TableDir 0 4 getinterval(ttcf)eq{
-QUIET not{(Can't handle TrueType font Collections.)=}if
-/.loadttfonttables cvx/invalidfont signalerror
-}{
-0 16 tables length 1 sub{
-dup
-tables exch 16 getinterval
-exch 16 div cvi exch
-tabarray 3 1 roll put
-}for
-}ifelse
-tabarray{exch 8 getu32 exch 8 getu32 gt}.InsertionSort pop
-/Read TableDir length tables length add def
-/tabs[
-tabarray{
-dup 8 getu32
-Read sub
-dup 0 gt{
-dup string TTFontFile exch readstring pop pop
-Read add/Read exch def
-}{
-pop
-}ifelse
-12 getu32
-dup Read add
-/Read exch def
-TTFontFile exch .readbigtable
-}forall
-]def
-end
-}bind def
-/GetLocaType
+ currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse
+ {pop}{get_csa_by_name/MappedCSA xdf}ifelse
+}def
+/setsepcolor
{
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(head)eq{
-tabs exch get
-50 gets16
-/LocaType exch def
-exit
-}{
-pop
-}ifelse
-}for
-}bind def
-/GetNumGlyphs
+ /sep_colorspace_dict AGMCORE_gget begin
+ dup/sep_tint exch AGMCORE_gput
+ TintProc
+ end
+}def
+/setdevicencolor
{
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(maxp)eq{
-tabs exch get
-4 getu16
-/NumGlyphs exch def
-exit
-}{
-pop
-}ifelse
-}for
-}bind def
-/StringToLoca
+ /devicen_colorspace_dict AGMCORE_gget begin
+ Names length copy
+ Names length 1 sub -1 0
+ {
+ /devicen_tints AGMCORE_gget 3 1 roll xpt
+ }for
+ TintProc
+ end
+}def
+/sep_colorspace_proc
{
-/LocaIndex exch def
-/StringOffset 0 def
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ currentdict/Components known{
+ Components aload pop
+ TintMethod/Lab eq{
+ 2{AGMCORE_tmp mul NComponents 1 roll}repeat
+ LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll
+ }{
+ TintMethod/Subtractive eq{
+ NComponents{
+ AGMCORE_tmp mul NComponents 1 roll
+ }repeat
+ }{
+ NComponents{
+ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll
+ }repeat
+ }ifelse
+ }ifelse
+ }{
+ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get
+ aload pop
+ }ifelse
+ end
+}def
+/sep_colorspace_gray_proc
{
-dup length StringOffset gt{
-dup
-LocaType 1 eq{
-StringOffset getu32
-LocaArray LocaIndex 3 -1 roll put
-/LocaIndex LocaIndex 1 add def
-/StringOffset StringOffset 4 add
-def
-}{
-StringOffset getu16 2 mul
-LocaArray length LocaIndex gt {LocaArray LocaIndex 3 -1 roll put}{pop}ifelse/LocaIndex LocaIndex 1 add def
-/StringOffset StringOffset 2 add
-def
-}ifelse
-}{
-pop
-LocaIndex
-exit
-}ifelse
-}loop
-}bind def
-/GetSortedLoca
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get
+ end
+}def
+/sep_proc_name
{
-NumGlyphs 1 add array/LocaArray exch def
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-0 4 getinterval(loca)eq{
-tabs exch get
-exit
-}{
-pop
-}ifelse
-}for
-dup type/stringtype eq{
-0 StringToLoca pop
-}{
-0 exch
+ dup 0 get
+ dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{
+ pop[/DeviceGray]
+ /sep_colorspace_gray_proc
+ }{
+ /sep_colorspace_proc
+ }ifelse
+}def
+/setsepcolorspace
{
-exch StringToLoca
-}forall
-pop
-}ifelse
-LocaArray{gt}.InsertionSort pop
-}bind def
-/GetWorkingString
+ current_spot_alias{
+ dup begin
+ Name map_alias{
+ exch pop
+ }if
+ end
+ }if
+ dup/sep_colorspace_dict exch AGMCORE_gput
+ begin
+ CSA map_csa
+ /AGMCORE_sep_special Name dup()eq exch(All)eq or store
+ AGMCORE_avoid_L2_sep_space{
+ [/Indexed MappedCSA sep_proc_name 255 exch
+ {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx
+ ]setcolorspace_opt
+ /TintProc{
+ 255 mul round cvi setcolor
+ }bdf
+ }{
+ MappedCSA 0 get/DeviceCMYK eq
+ currentdict/Components known and
+ AGMCORE_sep_special not and{
+ /TintProc[
+ Components aload pop Name findcmykcustomcolor
+ /exch cvx/setcustomcolor cvx
+ ]cvx bdf
+ }{
+ AGMCORE_host_sep Name(All)eq and{
+ /TintProc{
+ 1 exch sub setseparationgray
+ }bdf
+ }{
+ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and
+ AGMCORE_host_sep or
+ Name()eq and{
+ /TintProc[
+ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{
+ cvx/setcmykcolor cvx
+ }{
+ cvx/setgray cvx
+ }ifelse
+ ]cvx bdf
+ }{
+ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{
+ /TintProc[
+ /dup cvx
+ MappedCSA sep_proc_name cvx exch
+ 0 get/DeviceGray eq{
+ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx
+ }if
+ /Name cvx/findcmykcustomcolor cvx/exch cvx
+ AGMCORE_host_sep{
+ AGMCORE_is_cmyk_sep
+ /Name cvx
+ /AGMCORE_IsSeparationAProcessColor load/exec cvx
+ /not cvx/and cvx
+ }{
+ Name inRip_spot_has_ink not
+ }ifelse
+ [
+ /pop cvx 1
+ ]cvx/if cvx
+ /setcustomcolor cvx
+ ]cvx bdf
+ }{
+ /TintProc{setcolor}bdf
+ [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ set_crd
+ setsepcolor
+ end
+}def
+/additive_blend
{
-WorkString 0
-GlyfArray GlyfStringIndex get
-putinterval
-/WorkBytes GlyfArray GlyfStringIndex get length def
-/GlyfStringIndex GlyfStringIndex 1 add def
-}bind def
-/GetWorkingBytes
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1
+ 0 1 numarrays 1 sub
+ {
+ 1 exch add/index cvx
+ c1/get cvx/mul cvx
+ }for
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/subtractive_blend
{
-/BytesToRead exch def
-WorkString 0 BytesToRead getinterval
-dup length string copy
-WorkString BytesToRead WorkBytes BytesToRead sub getinterval
-dup length string copy
-WorkString 0 3 -1 roll putinterval
-/WorkBytes WorkBytes BytesToRead sub def
-}bind def
-/GetGlyfBytes
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1 1
+ 0 1 numarrays 1 sub
+ {
+ 1 3 3 -1 roll add/index cvx
+ c1/get cvx/sub cvx/mul cvx
+ }for
+ /sub cvx
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/exec_tint_transform
{
-/ToRead exch def
-WorkBytes 0 eq{
-GetWorkingString
-}if
-WorkBytes ToRead ge{
-ToRead string dup 0
-ToRead GetWorkingBytes putinterval
-}{
-ToRead string
-dup
-0
-WorkString 0 WorkBytes getinterval
-putinterval
-dup
-WorkBytes
-ToRead WorkBytes sub
-GetWorkingString
-GetWorkingBytes
-putinterval
-}ifelse
-}bind def
-/SplitGlyf
+ /TintProc[
+ /TintTransform cvx/setcolor cvx
+ ]cvx bdf
+ MappedCSA setcolorspace_opt
+}bdf
+/devn_makecustomcolor
{
-/GlyfArray exch def
-/DestArray GlyfArray length 2 mul array def
-/DestArrayIndex 0 def
-/LastLoca 0 def
-/NextLocaIndex 0 def
-/LastLocaIndex 0 def
-/GlyfStringIndex 0 def
-/WorkString maxstring string def
-/WorkBytes 0 def
+ 2 dict begin
+ /names_index xdf
+ /Names xdf
+ 1 1 1 1 Names names_index get findcmykcustomcolor
+ /devicen_tints AGMCORE_gget names_index get setcustomcolor
+ Names length{pop}repeat
+ end
+}bdf
+/setdevicencolorspace
{
-LocaArray NextLocaIndex get
-LastLoca sub maxstring gt
+ dup/AliasedColorants known{false}{true}ifelse
+ current_spot_alias and{
+ 7 dict begin
+ /names_index 0 def
+ dup/names_len exch/Names get length def
+ /new_names names_len array def
+ /new_LookupTables names_len array def
+ /alias_cnt 0 def
+ dup/Names get
+ {
+ dup map_alias{
+ exch pop
+ dup/ColorLookup known{
+ dup begin
+ new_LookupTables names_index ColorLookup put
+ end
+ }{
+ dup/Components known{
+ dup begin
+ new_LookupTables names_index Components put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ new_names names_index 3 -1 roll/Name get put
+ /alias_cnt alias_cnt 1 add def
+ }{
+ /name xdf
+ new_names names_index name put
+ dup/LookupTables known{
+ dup begin
+ new_LookupTables names_index LookupTables names_index get put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ alias_cnt 0 gt{
+ /AliasedColorants true def
+ /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def
+ 0 1 names_len 1 sub{
+ /names_index xdf
+ new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{
+ /AliasedColorants false def
+ exit
+ }{
+ new_LookupTables names_index get 0 get null eq{
+ dup/Names get names_index get/name xdf
+ name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq
+ or or or not{
+ /AliasedColorants false def
+ exit
+ }if
+ }if
+ }ifelse
+ }for
+ lut_entry_len 1 eq{
+ /AliasedColorants false def
+ }if
+ AliasedColorants{
+ dup begin
+ /Names new_names def
+ /LookupTables new_LookupTables def
+ /AliasedColorants true def
+ /NComponents lut_entry_len def
+ /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def
+ /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def
+ currentdict/TTTablesIdx known not{
+ /TTTablesIdx -1 def
+ }if
+ end
+ }if
+ }if
+ end
+ }if
+ dup/devicen_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/AliasedColorants known{
+ AliasedColorants
+ }{
+ false
+ }ifelse
+ dup not{
+ CSA map_csa
+ }if
+ /TintTransform load type/nulltype eq or{
+ /TintTransform[
+ 0 1 Names length 1 sub
+ {
+ /TTTablesIdx TTTablesIdx 1 add def
+ dup LookupTables exch get dup 0 get null eq
+ {
+ 1 index
+ Names exch get
+ dup(Cyan)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0
+ }
+ {
+ dup(Magenta)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0/exch cvx 0 0
+ }{
+ (Yellow)eq
+ {
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 3 -1/roll cvx 0
+ }{
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0 4 -1/roll cvx
+ }ifelse
+ }ifelse
+ }ifelse
+ 5 -1/roll cvx/astore cvx
+ }{
+ dup length 1 sub
+ LookupTables length 4 -1 roll sub 1 add
+ /index cvx/mul cvx/round cvx/cvi cvx/get cvx
+ }ifelse
+ Names length TTTablesIdx add 1 add 1/roll cvx
+ }for
+ Names length[/pop cvx]cvx/repeat cvx
+ NComponents Names length
+ TintMethod/Subtractive eq
+ {
+ subtractive_blend
+ }{
+ additive_blend
+ }ifelse
+ ]cvx bdf
+ }if
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ exec_tint_transform
+ }
+ {
+ currentdict/AliasedColorants known{
+ AliasedColorants not
+ }{
+ false
+ }ifelse
+ 5 dict begin
+ /AvoidAliasedColorants xdf
+ /painted? false def
+ /names_index 0 def
+ /names_len Names length def
+ AvoidAliasedColorants{
+ /currentspotalias current_spot_alias def
+ false set_spot_alias
+ }if
+ Names{
+ AGMCORE_is_cmyk_sep{
+ dup(Cyan)eq AGMCORE_cyan_plate and exch
+ dup(Magenta)eq AGMCORE_magenta_plate and exch
+ dup(Yellow)eq AGMCORE_yellow_plate and exch
+ (Black)eq AGMCORE_black_plate and or or or{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ }if
+ painted?{exit}if
+ }{
+ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ exit
+ }if
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ AvoidAliasedColorants{
+ currentspotalias set_spot_alias
+ }if
+ painted?{
+ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put
+ }{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx
+ 0 0 0 0/setcmykcolor cvx
+ ]cvx ddf
+ }ifelse
+ end
+ }ifelse
+ }
+ {
+ AGMCORE_in_rip_sep{
+ Names convert_to_process not
+ }{
+ level3
+ }ifelse
+ {
+ [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt
+ /TintProc level3 not AGMCORE_in_rip_sep and{
+ [
+ Names/length cvx[/pop cvx]cvx/repeat cvx
+ ]cvx bdf
+ }{
+ {setcolor}bdf
+ }ifelse
+ }{
+ exec_tint_transform
+ }ifelse
+ }ifelse
+ set_crd
+ /AliasedColorants false def
+ end
+}def
+/setindexedcolorspace
{
-LocaArray LastLocaIndex get LastLoca sub
-GetGlyfBytes
-DestArray DestArrayIndex 3 -1 roll put
-/DestArrayIndex DestArrayIndex 1 add def
-LocaArray LastLocaIndex get/LastLoca exch def
-}{
-/LastLocaIndex NextLocaIndex def
-/NextLocaIndex NextLocaIndex 1 add def
-NextLocaIndex NumGlyphs gt
+ dup/indexed_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ currentdict devncs
+ }{
+ 1 currentdict sepcs
+ }ifelse
+ AGMCORE_host_sep{
+ 4 dict begin
+ /compCnt/Names where{pop Names length}{1}ifelse def
+ /NewLookup HiVal 1 add string def
+ 0 1 HiVal{
+ /tableIndex xdf
+ Lookup dup type/stringtype eq{
+ compCnt tableIndex map_index
+ }{
+ exec
+ }ifelse
+ /Names where{
+ pop setdevicencolor
+ }{
+ setsepcolor
+ }ifelse
+ currentgray
+ tableIndex exch
+ 255 mul cvi
+ NewLookup 3 1 roll put
+ }for
+ [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt
+ end
+ }{
+ level3
+ {
+ currentdict/Names known{
+ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt
+ }{
+ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt
+ }ifelse
+ }{
+ [/Indexed MappedCSA HiVal
+ [
+ currentdict/Names known{
+ Lookup dup type/stringtype eq
+ {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx}
+ {/exec cvx}ifelse
+ /TintTransform load/exec cvx
+ }{
+ Lookup dup type/stringtype eq
+ {/exch cvx/get cvx 255/div cvx}
+ {/exec cvx}ifelse
+ CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx
+ }ifelse
+ ]cvx
+ ]setcolorspace_opt
+ }ifelse
+ }ifelse
+ end
+ set_crd
+ }
+ {
+ CSA map_csa
+ AGMCORE_host_sep level2 not and{
+ 0 0 0 0 setcmykcolor
+ }{
+ [/Indexed MappedCSA
+ level2 not has_color not and{
+ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{
+ pop[/DeviceGray]
+ }if
+ HiVal GrayLookup
+ }{
+ HiVal
+ currentdict/RangeArray known{
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ Lookup exch
+ dup HiVal gt{
+ pop HiVal
+ }if
+ NComponents mul NComponents getinterval{}forall
+ NComponents 1 sub -1 0{
+ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range
+ NComponents 1 roll
+ }for
+ end
+ }bind
+ }{
+ Lookup
+ }ifelse
+ }ifelse
+ ]setcolorspace_opt
+ set_crd
+ }ifelse
+ }ifelse
+ end
+}def
+/setindexedcolor
{
-WorkBytes
-GlyfStringIndex GlyfArray length lt{
-GlyfArray GlyfStringIndex get length
-add string dup
-0
-WorkString 0 WorkBytes getinterval
-putinterval
-dup
-WorkBytes
-GetWorkingString
-WorkString 0 WorkBytes getinterval
-putinterval
-}{
-pop
-WorkString 0 WorkBytes getinterval
-}ifelse
-dup length string copy
-DestArray DestArrayIndex 3 -1 roll put
-exit
-}if
-}ifelse
-}loop
-DestArray
-}bind def
-/ProcessTTData
+ AGMCORE_host_sep{
+ /indexed_colorspace_dict AGMCORE_gget
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ map_indexed_devn
+ devn
+ }
+ {
+ Lookup 1 3 -1 roll map_index
+ sep
+ }ifelse
+ end
+ }{
+ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll
+ map_index
+ MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse
+ }ifelse
+ end
+ }{
+ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{
+ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin
+ map_indexed_devn
+ devn
+ end
+ }
+ {
+ setcolor
+ }ifelse
+ }ifelse
+}def
+/ignoreimagedata
{
-.opdloadttfontdict begin
-0 1 tabarray length 1 sub{
-/ix exch def
-tabarray ix get
-12 getu32 dup maxstring le{
-dup 4 mod 0 ne{
-4 div cvi 1 add 4 mul string/newstring exch def
-/oldstring tabs ix get def
-newstring 0 oldstring putinterval
-0 1 newstring length oldstring length sub 1 sub{
-newstring exch oldstring length add 0 put
-}for
-tabs ix newstring put
-}{
-pop
-}ifelse
-}{
-dup 4 mod 0 ne{
-dup maxstring idiv maxstring mul sub
-4 idiv 1 add 4 mul string/newstring exch def
-tabs ix get
-dup length 1 sub dup/iy exch def get/oldstring exch def
-newstring 0 oldstring putinterval
-0 1 newstring length oldstring length sub 1 sub{
-newstring exch oldstring length add 0 put
-}for
-tabs ix get iy newstring put
-}{
-pop
-}ifelse
-}ifelse
-}for
-0 1 tabarray length 1 sub{
-dup tabarray exch get
-dup 12 getu32 maxstring gt{
-0 4 getinterval dup(glyf)eq{
-pop
-GetLocaType
-GetNumGlyphs
-GetSortedLoca
-dup tabs exch get
-SplitGlyf
-tabs 3 1 roll put
-}{
-(Warning, table )print print( > 64Kb\n)print
-pop
-}ifelse
-}{
-pop
-pop
-}ifelse
-}for
-end
-}bind def
-/Makesfnts
+ currentoverprint not{
+ gsave
+ dup clonedict begin
+ 1 setgray
+ /Decode[0 1]def
+ /DataSource<FF>def
+ /MultipleDataSources false def
+ /BitsPerComponent 8 def
+ currentdict end
+ systemdict/image gx
+ grestore
+ }if
+ consumeimagedata
+}def
+/add_res
{
-.opdloadttfontdict begin
-0
-tabs{
-dup type/stringtype eq{
-pop
-1 add
-}{
+ dup/CSD eq{
+ pop
+ //Adobe_AGM_Core begin
+ /AGMCORE_CSD_cache load 3 1 roll put
+ end
+ }{
+ defineresource pop
+ }ifelse
+}def
+/del_res
{
-type/stringtype eq{
-1 add
-}if
-}forall
-}ifelse
-}forall
-1 add
-/TTOffset
-TableDir length
-tabarray length 16 mul add
-def
-0
-tabarray{
-exch dup 1 add
-3 1 roll
-dup
-tabs exch get
-dup type/stringtype eq{
-length
-2 index exch
-TTOffset
-dup 3 1 roll add
-/TTOffset exch def
-8 exch putu32
-exch tabarray 3 1 roll
-put
-}{
-0 exch
+ {
+ aload pop exch
+ dup/CSD eq{
+ pop
+ {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall
+ }{
+ exch
+ {1 index undefineresource}forall
+ pop
+ }ifelse
+ }forall
+}def
+/get_res
{
-dup type/stringtype eq{
-length add
-}{
-pop
-}ifelse
-}forall
-2 index exch
-TTOffset
-dup 3 1 roll add
-/TTOffset exch def
-8 exch putu32
-exch tabarray 3 1 roll
-put
-}ifelse
-}forall
-pop
-array
-dup 0
-TableDir length
-tables length add
-string
-dup 0 TableDir putinterval
-dup 12 tables putinterval
-put
-dup
-/ix 1 def
-tabs{
-dup type/stringtype eq{
-ix exch
-put dup
-/ix ix 1 add def
-}{
+ dup/CSD eq{
+ pop
+ dup type dup/nametype eq exch/stringtype eq or{
+ AGMCORE_CSD_cache exch get
+ }if
+ }{
+ findresource
+ }ifelse
+}def
+/get_csa_by_name
{
-dup type/stringtype eq{
-ix exch put dup
-/ix ix 1 add def
-}{
-pop
-}ifelse
-}forall
-}ifelse
-}forall
-pop
-end
-}bind def
-/MakeType42
+ dup type dup/nametype eq exch/stringtype eq or{
+ /CSA get_res
+ }if
+}def
+/paintproc_buf_init
{
-//PDFR_DEBUG{
-(MakeType42 beg)=
-}if
-10 dict begin
-/FontName 1 index/FontName get def
-/FontType 42 def
-/FontMatrix[1 0 0 1 0 0]def
-/FontBBox 1 index/FontBBox get def
-dup/FontResource get
-dup/Encoding known{
-//PDFReader/ObtainEncoding get exec
-/Encoding get
-}{
-pop null
-}ifelse
-/PDFEncoding exch def
-/CharStrings 2 index//PDFReader/MakeTTCharStrings get exec def
-/sfnts 2 index//MakeStreamReader exec
-ReadTTF
-ProcessTTData
-Makesfnts
-def
-/Encoding StandardEncoding def
-/PaintType 0 def
-currentdict end
-//PDFR_DEBUG{
-(MakeType42 end)=
-}if
-}bind def
-/GetInstalledFont
+ /count get 0 0 put
+}def
+/paintproc_buf_next
{
-dup//InstalledFonts exch knownget{
-exch pop
-}{
-dup findfont dup 3 1 roll
-//InstalledFonts 3 1 roll put
-}ifelse
-}bind def
-/RemoveFontNamePrefix
-{//=string cvs true
-0 1 5{
-2 index exch get//IsUpper exec not{
-pop false exit
-}if
-}for
-{(+)search{
-pop pop
-}if
-}if
-cvn
-}bind def
-/CheckFont
-{dup/Type get/Font ne{
-mark(Resource )3 index( must have /Type/Font .)//error exec
-}if
-}bind def
-/CheckEncoding
-{dup type/nametype ne{
-dup/Type get/Encoding ne{
-mark(Resource )3 index( must have /Type/Encoding .)//error exec
-}if
-}if
-}bind def
-/ObtainEncoding
-{dup/Encoding known{
-dup dup/Encoding//CheckEncoding//ResolveD exec
-dup type dup/arraytype eq exch/packedarraytype eq or{
-pop pop
-}{
-dup type/nametype eq{
-/Encoding findresource
-}{
-dup/BaseEncoding//knownget exec not{
-/StandardEncoding
-}if
-/Encoding findresource
-exch
-/Differences//knownget exec{
-exch dup length array copy exch
-0 exch
+ dup/count get dup 0 get
+ dup 3 1 roll
+ 1 add 0 xpt
+ get
+}def
+/cachepaintproc_compress
{
-dup type/integertype eq{
-exch pop
-}{
-3 copy put pop
-1 add
-}ifelse
-}forall
-pop
-}if
-}ifelse
-/Encoding exch put
-}ifelse
-}{
-dup/Encoding/StandardEncoding/Encoding findresource put
-}ifelse
-}bind def
-/ObtainMetrics
-{dup/Widths//knownget exec{
-1 index/Encoding get
-256 dict
-3 index/Subtype get/TrueType eq{
-1000
-}{
-1
-}ifelse
-4 index/MissingWidth//knownget exec not{
-0
-}if
-5 index/FirstChar//knownget exec not{
-0
-}if
-6 5 roll
-dup 0 exch 1 exch length 1 sub{
-2 copy get
-exch 3 index add
-7 index exch get
-dup dup null ne exch/.notdef ne and{
-6 index 3 1 roll exch
-6 index div
-3 copy pop//knownget exec{
-0 eq
-}{
-true
-}ifelse
-{put
-}{
-pop pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}for
-pop pop pop pop exch pop
-1 index exch/Metrics exch put
-}{
-dup/MissingWidth//knownget exec{
-256 dict
-2 index/Encoding get{
-dup null ne{
-3 copy 3 2 roll put
-}if
-pop
-}forall
-exch pop
-1 index exch/Metrics exch put
-}if
-}ifelse
-}bind def
-/NotDef
+ 5 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ /string_size 16000 def
+ /readbuffer string_size string def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ /LZWFilter
+ {
+ exch
+ dup length 0 eq{
+ pop
+ }{
+ ppdict dup length 1 sub 3 -1 roll put
+ }ifelse
+ {string_size}{0}ifelse string
+ }/LZWEncode filter def
+ {
+ ReadFilter readbuffer readstring
+ exch LZWFilter exch writestring
+ not{exit}if
+ }loop
+ LZWFilter closefile
+ ppdict
+ end
+}def
+/cachepaintproc
{
-FontMatrix aload pop pop pop exch pop exch pop
-1 exch div exch
-1 exch div exch
-1 index 0 setcharwidth
-0 setlinewidth
-0 0 moveto
-2 copy rlineto
-1 index 0 rlineto
-neg exch neg exch rlineto
-closepath stroke
-}bind def
-/SaveResourcesToStack{[//PDFReader/OldResources known{//PDFReader/OldResources get}{null}ifelse
-//PDFReader/CurrentObject get/Context get/Resources get]//PDFReader/OldResources 3 -1 roll put}bind def
-/RestoreResourcesFromStack{//PDFReader/OldResources get dup
-0 get//PDFReader/OldResources 3 -1 roll put
-1 get//PDFReader/CurrentObject get/Context get/Resources 3 -1 roll put} bind def
-/BuildChar
-{//PDFR_DEBUG{
-(BuildChar )print dup//=only exec( )print
-}if
-exch begin
-Encoding exch get
-//PDFR_DEBUG{
-dup =
-}if
-dup null eq{
-pop//NotDef exec
-}{
-CharProcs exch//knownget exec{currentfont/Font get/Resources//knownget exec{exec SaveResourcesToStack//PDFReader/CurrentObject get/Context get/Resources 3 -1 roll put//RunDelayedStream exec RestoreResourcesFromStack}{//RunDelayedStream exec}ifelse}{
-//NotDef exec
-}ifelse
-}ifelse
-end
-}bind def
-/printdict
-{(<<)=
-{exch = ==}forall
-(>>)=
-}bind def
-/printfont
+ 2 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ {
+ ReadFilter 16000 string readstring exch
+ ppdict dup length 1 sub 3 -1 roll put
+ not{exit}if
+ }loop
+ ppdict dup dup length 1 sub()put
+ end
+}def
+/make_pattern
{
-dup{
-exch dup =
-dup/Encoding eq{
-pop =
-}{
-dup/FontInfo eq exch/Private eq or{
-//printdict exec
-}{
-==
-}ifelse
-}ifelse
-}forall
-}bind def
-/ScaleMetrics
-{1 index{
-2 index div
-3 index
-3 1 roll put
-}forall
-pop
-}bind def
-/ResolveAndSetFontAux
-{exch dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/Font//DoNothing//ResolveD exec
-exch//CheckFont//ResolveD exec
-dup/Font//knownget exec{
-exch pop exch pop
-}{
+ exch clonedict exch
+ dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform
+ exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub
+ exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub
+ matrix translate exch matrix concatmatrix
+ 1 index begin
+ BBox 0 get XStep div cvi XStep mul/xshift exch neg def
+ BBox 1 get YStep div cvi YStep mul/yshift exch neg def
+ BBox 0 get xshift add
+ BBox 1 get yshift add
+ BBox 2 get xshift add
+ BBox 3 get yshift add
+ 4 array astore
+ /BBox exch def
+ [xshift yshift/translate load null/exec load]dup
+ 3/PaintProc load put cvx/PaintProc exch def
+ end
+ gsave 0 setgray
+ makepattern
+ grestore
+}def
+/set_pattern
{
-dup/Subtype get dup dup/Type1 eq exch/TrueType eq or exch/MMType1 eq or{
-exch pop
-dup/BaseFont get
-//RemoveFontNamePrefix exec
-//PDFR_DEBUG{
-(Font )print dup =
-}if
-1 index/FontDescriptor known{
-//PDFR_DEBUG{
-(Font from a font descriptor.)=
-}if
-1 index
-/FontDescriptor//DoNothing//ResolveD exec
-/Font//knownget exec{
-exch pop
-}{
-//PDFR_DEBUG{
-(Font descriptor has no Font resolved.)=
-}if
-//GetInstalledFont exec
-}ifelse
-}{
-//GetInstalledFont exec
-}ifelse
-exch
-dup/Encoding known not{
-1 index/Encoding get 1 index exch/Encoding exch put
-}if
-//ObtainEncoding exec
-//ObtainMetrics exec
-exch
-dup length dict copy
-dup 2 index/Encoding get
-/Encoding exch put
-1 index/Metrics//knownget exec{
-2 index/Subtype get/TrueType ne{
-1 index/FontMatrix get 0 get
-dup 0 eq{
-pop
-1 index/FontMatrix get 1 get
-dup 0 eq{pop 1}if
-}if
-0.001 div
-//ScaleMetrics exec
-}{
-1 index/sfnts known not{
-1 index/FontMatrix get 0 get
-dup 0 eq{
-pop
-1 index/FontMatrix get 1 get
-dup 0 eq{pop 1}if
-}if
-//ScaleMetrics exec
-}if
-}ifelse
-1 index exch/Metrics exch put
-}if
-1 index/BaseFont get
-exch
-dup/FID undef
-dup/UniqueID undef
-definefont
-dup 3 1 roll
-/Font exch put
-exit
-}if
-dup/Subtype get/Type3 eq{
-//ObtainEncoding exec
-2 copy exch/FontName exch put
-dup/CharProcs get//ResolveDict exec
-dup/FontType 3 put
-dup/BuildChar//BuildChar put
-dup dup/Font exch put
-dup 3 1 roll
-definefont
-2 copy ne{
-2 copy/Font exch put
-}if
-exch pop
-exit
-}if
-dup/Subtype get/Type0 eq{
-}if
-dup/Subtype get/CIDFontType0 eq{
-}if
-dup/Subtype get/CIDFontType2 eq{
-}if
-mark(Unknown font type )2 index/Subtype get//error exec
-}loop
-}ifelse
-exch scalefont setfont
-}bind def
-/ResolveAndSetFont
+ dup/PatternType get 1 eq{
+ dup/PaintType get 1 eq{
+ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray
+ }if
+ }if
+ setpattern
+}def
+/setcolorspace_opt
{
-//ResolveAndSetFontAux exec
-}bind def
-/.knownget
-{2 copy known{
-get true
-}{
-pop pop false
-}ifelse
-}bind def
-/.min
-{2 copy lt{
-exch
-}if
-pop
-}bind def
-/.max
-{2 copy gt{
-exch
-}if
-pop
-}bind def
-/.dicttomark
-{>>
-}bind def
-/getu16{
-2 copy get 8 bitshift 3 1 roll 1 add get add
-}bind def
-/gets16{
-getu16 16#8000 xor 16#8000 sub
-}bind def
-/getu32{
-2 copy getu16 16 bitshift 3 1 roll 2 add getu16 add
-}bind def
-/gets32{
-2 copy gets16 16 bitshift 3 1 roll 2 add getu16 add
-}bind def
-/cmapformats mark
-0{
-6 256 getinterval{}forall 256 packedarray
-}bind
-2{
-/sHK_sz 2 def
-/sH_sz 8 def
-dup 2 getu16/cmapf2_tblen exch def
-dup 4 getu16/cmapf2_lang exch def
-dup 6 256 sHK_sz mul getinterval/sHKs exch def
-0
-0 1 255{
-sHKs exch
-2 mul getu16
-1 index
-1 index
-lt{exch}if pop
-}for
-/sH_len exch def
-dup 6 256 sHK_sz mul add
-cmapf2_tblen 1 index sub getinterval
-/sH_gIA exch def
-/cmapf2_glyph_array 65535 array def
-/.cmapf2_putGID{
-/cmapf2_ch cmapf2_ch_hi 8 bitshift cmapf2_ch_lo add def
-firstCode cmapf2_ch_lo le
-cmapf2_ch_lo firstCode entryCount add lt
-and{
-sH_offset idRangeOffset add
-cmapf2_ch_lo firstCode sub 2 mul
-add 6 add
-sH_gIA exch getu16
-dup 0 gt{
-idDelta add
-cmapf2_glyph_array exch cmapf2_ch exch put
-}{
-pop
-}ifelse
-}{
-}ifelse
+ dup currentcolorspace eq{pop}{setcolorspace}ifelse
}def
-16#00 1 16#ff{
-/cmapf2_ch_hi exch def
-sHKs cmapf2_ch_hi sHK_sz mul getu16
-/sH_offset exch def
-sH_gIA sH_offset sH_sz getinterval
-dup 0 getu16/firstCode exch def
-dup 2 getu16/entryCount exch def
-dup 4 gets16/idDelta exch def
-dup 6 getu16/idRangeOffset exch def
-pop
-sH_offset 0 eq{
-/cmapf2_ch_lo cmapf2_ch_hi def
-/cmapf2_ch_hi 0 def
-.cmapf2_putGID
-}{
-16#00 1 16#ff{
-/cmapf2_ch_lo exch def
-.cmapf2_putGID
-}for
-}ifelse
-}for
-pop
-0 1 cmapf2_glyph_array length 1 sub{
-dup cmapf2_glyph_array exch get
-null eq{cmapf2_glyph_array exch 0 put}{pop}ifelse
-}for
-cmapf2_glyph_array
-}bind
-4{
-/etab exch def
-/nseg2 etab 6 getu16 def
-14/endc etab 2 index nseg2 getinterval def
-2 add
-nseg2 add/startc etab 2 index nseg2 getinterval def
-nseg2 add/iddelta etab 2 index nseg2 getinterval def
-nseg2 add/idroff etab 2 index nseg2 getinterval def
-pop
-/firstcode startc 0 getu16 16#ff00 and dup 16#f000 ne{pop 0}if def
-/lastcode firstcode def
-/striptopbyte false def
-/putglyph{
-glyphs code 3 -1 roll put/code code 1 add def
-}bind def
-/numcodes 0 def/glyphs 0 0 2 nseg2 3 sub{
-/i2 exch def
-/scode startc i2 getu16 def
-/ecode endc i2 getu16 def
-ecode lastcode gt {
-/lastcode ecode def
-}if
-}for pop
-firstcode 16#f000 ge lastcode firstcode sub 255 le and {
-lastcode 255 and
-/striptopbyte true def
-} {
-lastcode
-}ifelse
-1 add
-array def
-glyphs length 1024 ge{
-.array1024z 0 1024 glyphs length 1023 sub{glyphs exch 2 index putinterval}for
-glyphs dup length 1024 sub 3 -1 roll
-putinterval
-}{
-0 1 glyphs length 1 sub{glyphs exch 0 put}for
-}ifelse
-/numcodes 0 def/code 0 def
-0 2 nseg2 3 sub{
-/i2 exch def
-/scode startc i2 getu16 def
-/ecode endc i2 getu16 def
-numcodes scode firstcode sub
-exch sub 0 .max dup/code exch code exch add def
-ecode scode sub 1 add add numcodes add/numcodes exch def
-/delta iddelta i2 gets16 def
-TTFDEBUG{
-(scode=)print scode =only
-( ecode=)print ecode =only
-( delta=)print delta =only
-( droff=)print idroff i2 getu16 =
-}if
-idroff i2 getu16 dup 0 eq{
-pop scode delta add 65535 and 1 ecode delta add 65535 and
-striptopbyte {
-/code scode 255 and def
-} {
-/code scode def
-} ifelse
-{putglyph}for
-}{
-/gloff exch 14 nseg2 3 mul add 2 add i2 add add def
-striptopbyte {
-/code scode 255 and def
-} {
-/code scode def
-} ifelse
-0 1 ecode scode sub{
-2 mul gloff add etab exch getu16
-dup 0 ne{delta add 65535 and}if putglyph
-}for
-}ifelse
-}for glyphs/glyphs null def
-}bind
-6{
-dup 6 getu16/firstcode exch def dup 8 getu16/ng exch def
-firstcode ng add array
-0 1 firstcode 1 sub{2 copy 0 put pop}for
-dup firstcode ng getinterval
-0 1 ng 1 sub{
-dup 2 mul 10 add 4 index exch getu16 3 copy put pop pop
-}for pop exch pop
-}bind
-.dicttomark readonly def
-/cmaparray{
-dup 0 getu16 cmapformats exch .knownget{
-TTFDEBUG{
-(cmap: format )print 1 index 0 getu16 = flush
-}if exec
-}{
-(Can't handle format )print 0 getu16 = flush
-0 1 255{}for 256 packedarray
-}ifelse
-TTFDEBUG{
-(cmap: length=)print dup length = dup ==
-}if
-}bind def
-/postremap mark
-/Cdot/Cdotaccent
-/Edot/Edotaccent
-/Eoverdot/Edotaccent
-/Gdot/Gdotaccent
-/Ldot/Ldotaccent
-/Zdot/Zdotaccent
-/cdot/cdotaccent
-/edot/edotaccent
-/eoverdot/edotaccent
-/gdot/gdotaccent
-/ldot/ldotaccent
-/zdot/zdotaccent
-.dicttomark readonly def
-/get_from_stringarray
-{1 index type/stringtype eq{
-get
-}{
-exch{
-2 copy length ge{
-length sub
-}{
-exch get exit
-}ifelse
-}forall
-}ifelse
-}bind def
-/getinterval_from_stringarray
+/updatecolorrendering
{
-2 index type/stringtype eq{
-getinterval
-}{
-string exch 0
-4 3 roll{
-dup length
-dup 4 index lt{
-3 index exch sub
-exch pop 3 1 roll exch pop
-}{
-dup 3 1 roll
-4 index sub
-5 index length 4 index sub
-2 copy gt{exch}if pop
-dup 3 1 roll
-5 index exch getinterval
-5 index 4 index 3 index
-getinterval
-copy pop
-exch pop add exch pop 0 exch
-dup 3 index length ge{exit}if
-}ifelse
-}forall
-pop pop
-}ifelse
-}bind def
-/string_array_size
-{dup type/stringtype eq{
-length
-}{
-0 exch{length add}forall
-}ifelse
-}bind def
-/postformats mark
-16#00010000{
-pop MacGlyphEncoding
-}
-16#00020000{
-dup dup type/arraytype eq{0 get}if length 36 lt{
-TTFDEBUG{(post format 2.0 invalid.)= flush}if
-pop[]
-}{
-/postglyphs exch def
-/post_first postglyphs dup type/arraytype eq{0 get}if def
-post_first 32 getu16/numglyphs exch def
-/glyphnames numglyphs 2 mul 34 add def
-/postpos glyphnames def
-/total_length postglyphs//string_array_size exec def
-numglyphs array 0 1 numglyphs 1 sub{
-postpos total_length ge{
-1 numglyphs 1 sub{1 index exch/.notdef put}for
-exit
-}if
-postglyphs postpos//get_from_stringarray exec
-postglyphs postpos 1 add 2 index//getinterval_from_stringarray exec cvn
-exch postpos add 1 add/postpos exch def
-2 index 3 1 roll
-put
-}for
-/postnames exch def
-numglyphs array 0 1 numglyphs 1 sub{
-dup 2 mul 34 add postglyphs exch 2//getinterval_from_stringarray exec
-dup 0 get 8 bitshift exch 1 get add dup 258 lt{
-MacGlyphEncoding exch get
-}{
-dup 32768 ge{
-pop/.notdef
-}{
-258 sub dup postnames length ge{
-TTFDEBUG{( *** warning: glyph index past end of 'post' table)= flush}if
-pop
-exit
-}if
-postnames exch get
-postremap 1 index .knownget{exch pop}if
-}ifelse
-}ifelse
-2 index 3 1 roll put
-}for
-}
-ifelse
-}bind
-16#00030000{
-pop[]
-}bind
-.dicttomark readonly def
-/first_post_string
-{
-post dup type/arraytype eq{0 get}if
-}bind def
-/.getpost{
-/glyphencoding post null eq{
-TTFDEBUG{(post missing)= flush}if[]
-}{
-postformats first_post_string 0 getu32 .knownget{
-TTFDEBUG{
-(post: format )print
-first_post_string
-dup 0 getu16 =only(,)print 2 getu16 = flush
-}if
-post exch exec
-}{
-TTFDEBUG{(post: unknown format )print post 0 getu32 = flush}if[]
-}ifelse
-}ifelse def
-}bind def
-/TTParser<<
-/Pos 0
-/post null
->>def
-/readu8
-{read not{
-mark(Insufficient data in the stream.)//error exec
-}if
-}bind def
-/readu16
-{dup//readu8 exec 8 bitshift exch//readu8 exec or
-}bind def
-/reads16
-{//readu16 exec 16#8000 xor 16#8000 sub
-}bind def
-/readu32
-{dup//readu16 exec 16 bitshift exch//readu16 exec or
-}bind def
-/reads32
-{dup//reads16 exec 16 bitshift exch//readu16 exec or
-}bind def
-/SkipToPosition
-{dup//TTParser/Pos get
-exch//TTParser exch/Pos exch put
-sub
-//PDFR_DEBUG{
-(Skipping )print dup//=only exec( bytes.)=
-}if
-dup 0 eq{
-pop pop
-}{
-dup 3 1 roll
-()/SubFileDecode filter
-exch
-{1 index//BlockBuffer readstring pop length
-dup 0 eq{pop exch pop exit}if
-sub
-}loop
-0 ne{
-mark(Insufficient data in the stream for SkipToPosition.)//error exec
-}if
-}ifelse
-}bind def
-/TagBuffer 4 string def
-/ParseTTTableDirectory
-{//PDFR_DEBUG{
-(ParseTTTableDirectory beg)=
-}if
-15 dict begin
-dup//readu32 exec 16#00010000 ne{
-mark(Unknown True Type version.)//error exec
-}if
-dup//readu16 exec/NumTables exch def
-dup//readu16 exec/SearchRange exch def
-dup//readu16 exec/EntrySelector exch def
-dup//readu16 exec/RangeShift exch def
-//PDFR_DEBUG{
-(NumTables = )print NumTables =
-}if
-NumTables{
-dup//TagBuffer readstring not{
-mark(Could not read TT tag.)//error exec
-}if
-cvn
-[2 index//readu32 exec pop
-2 index//readu32 exec
-3 index//readu32 exec
-]
-//PDFR_DEBUG{
-2 copy exch//=only exec( )print ==
-}if
-def
-}repeat
-pop
-//TTParser/Pos 12 NumTables 16 mul add put
-currentdict end
-//PDFR_DEBUG{
-(ParseTTTableDirectory end)=
-}if
-}bind def
-/ParseTTcmap
-{//PDFR_DEBUG{
-(ParseTTcmap beg)=
-}if
-/cmap get aload pop
-3 1 roll
-7 dict begin
-//PDFR_DEBUG{
-(Current position = )print//TTParser/Pos get =
-(cmap position = )print dup =
-}if
-1 index exch//SkipToPosition exec
-//TTParser/Pos get/TablePos exch def
-dup//readu16 exec pop
-dup//readu16 exec/NumEncodings exch def
-//PDFR_DEBUG{
-(NumEncodings = )print NumEncodings =
-}if
-null
-NumEncodings{
-1 index//readu32 exec
-2 index//readu32 exec
-3 array dup 3 2 roll 0 exch put
-2 index null ne{
-dup 0 get 3 index 0 get sub
-3 index exch 1 exch put
-}if
-dup 4 3 roll pop 3 1 roll
-def
-}repeat
-dup 0 get
-4 3 roll exch sub
-1 exch put
-//PDFR_DEBUG{
-currentdict{
-exch dup type/integertype eq{
-//PrintHex exec( )print ==
-}{
-pop pop
-}ifelse
-}forall
-}if
-4 NumEncodings 8 mul add/HeaderLength exch def
-//TTParser/Pos//TTParser/Pos get HeaderLength add put
-0
-NumEncodings{
-16#7FFFFFF null
-currentdict{
-1 index type/integertype eq{
-exch pop dup 0 get
-dup 5 index gt{
-dup 4 index lt{
-4 1 roll
-exch pop exch pop
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}forall
-//PDFR_DEBUG{
-(Obtaining subtable for )print dup ==
-}if
-3 2 roll pop
-3 copy pop
-TablePos add//SkipToPosition exec
-3 copy exch pop 1 get
-//TTParser/Pos//TTParser/Pos get 3 index add put
-string
-readstring not{
-mark(Can't read a cmap subtable.)//error exec
-}if
-2 exch put
-}repeat
-pop pop
-currentdict end
-//PDFR_DEBUG{
-(ParseTTcmap end)=
-}if
-}bind def
-/GetTTEncoding
-{//PDFR_DEBUG{
-(GetTTEncoding beg)=
-}if
-get
-exch pop
-2 get
-10 dict begin
-/TTFDEBUG//PDFR_DEBUG def
-//cmaparray exec
-end
-//PDFR_DEBUG{
-(GetTTEncoding end)=
-dup ==
-}if
-}bind def
-/InverseEncoding
+ currentcolorrendering/RenderingIntent known{
+ currentcolorrendering/RenderingIntent get
+ }
+ {
+ Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd AGMCORE_gget dup null eq
+ }
+ {
+ /perceptual_crd AGMCORE_gget dup null eq
+ }ifelse
+ }ifelse
+ }ifelse
+ {
+ pop null
+ }
+ {
+ /RenderingIntent known{null}{Intent}ifelse
+ }ifelse
+ }ifelse
+ Intent ne{
+ Intent/ColorRendering{findresource}stopped
+ {
+ pop pop systemdict/findcolorrendering known
+ {
+ Intent findcolorrendering
+ {
+ /ColorRendering findresource true exch
+ }
+ {
+ /ColorRendering findresource
+ product(Xerox Phaser 5400)ne
+ exch
+ }ifelse
+ dup Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Perceptual eq
+ {
+ /perceptual_crd exch AGMCORE_gput
+ }
+ {
+ pop
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ 1 index{exch}{pop}ifelse
+ }
+ {false}ifelse
+ }
+ {true}ifelse
+ {
+ dup begin
+ currentdict/TransformPQR known{
+ currentdict/TransformPQR get aload pop
+ 3{{}eq 3 1 roll}repeat or or
+ }
+ {true}ifelse
+ currentdict/MatrixPQR known{
+ currentdict/MatrixPQR get aload pop
+ 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq
+ and and and and and and and and
+ }
+ {true}ifelse
+ end
+ or
+ {
+ clonedict begin
+ /TransformPQR[
+ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div
+ 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div
+ 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div
+ 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind
+ ]def
+ /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def
+ /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def
+ currentdict end
+ }if
+ setcolorrendering_opt
+ }if
+ }if
+}def
+/set_crd
{
-256 dict begin
-dup length 1 sub -1 0{
-2 copy get
-exch
-1 index currentdict exch//knownget exec{
-dup type/arraytype eq{
-aload length 1 add array astore
-}{
-2 array astore
-}ifelse
-}if
-def
-}for
-pop
-currentdict end
-}bind def
-/GetMacRomanEncodingInverse
-{//PDFReader/MacRomanEncodingInverse get
-dup null eq{
-pop
-MacRomanEncoding//InverseEncoding exec
-dup//PDFReader exch/MacRomanEncodingInverse exch put
-}if
-}bind def
-/PutCharStringSingle
+ AGMCORE_host_sep not level2 and{
+ currentdict/ColorRendering known{
+ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if
+ }{
+ currentdict/Intent known{
+ updatecolorrendering
+ }if
+ }ifelse
+ currentcolorspace dup type/arraytype eq
+ {0 get}if
+ /DeviceRGB eq
+ {
+ currentdict/UCR known
+ {/UCR}{/AGMCORE_currentucr}ifelse
+ load setundercolorremoval
+ currentdict/BG known
+ {/BG}{/AGMCORE_currentbg}ifelse
+ load setblackgeneration
+ }if
+ }if
+}def
+/set_ucrbg
{
-dup 3 index length lt{
-2 index exch get
-dup 0 ne{
-def
-}{
-pop pop
-}ifelse
-}{
-pop pop
-}ifelse
-}bind def
-/PutCharString
-{1 index type/nametype ne{
-mark(Bad charstring name)//error exec
-}if
-dup type/arraytype eq{
+ dup null eq {pop /AGMCORE_currentbg load}{/Procedure get_res}ifelse
+ dup currentblackgeneration eq {pop}{setblackgeneration}ifelse
+ dup null eq {pop /AGMCORE_currentucr load}{/Procedure get_res}ifelse
+ dup currentundercolorremoval eq {pop}{setundercolorremoval}ifelse
+}def
+/setcolorrendering_opt
{
-3 copy//PutCharStringSingle exec
-pop pop
-}forall
-pop
-}{
-//PutCharStringSingle exec
-}ifelse
-}bind def
-/ComposeCharStrings
+ dup currentcolorrendering eq{
+ pop
+ }{
+ product(HP Color LaserJet 2605)anchorsearch{
+ pop pop pop
+ }{
+ pop
+ clonedict
+ begin
+ /Intent Intent def
+ currentdict
+ end
+ setcolorrendering
+ }ifelse
+ }ifelse
+}def
+/cpaint_gcomp
{
-//PDFR_DEBUG{
-(ComposeCharStrings beg)=
-}if
-1 index length 1 add dict begin
-/.notdef 0 def
-exch
-//TTParser/post get
-dup null ne{
-exch
-1 index length 1 sub -1 0{
-dup 3 index exch get exch
-dup 0 eq 2 index/.notdef eq or{
-pop pop
-}{
-def
-}ifelse
-}for
-}if
-exch pop exch
+ convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not
+ {
+ (%end_cpaint_gcomp)flushinput
+ }if
+}def
+/cpaint_gsep
{
-//PutCharString exec
-}forall
-pop
-currentdict end
-//PDFR_DEBUG{
-(ComposeCharStrings end)=
-}if
-}bind def
-/ParseTTpost
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get
+ {
+ (%end_cpaint_gsep)flushinput
+ }if
+}def
+/cpaint_gend
+{np}def
+/T1_path
{
-//PDFR_DEBUG{
-(ParseTTpost beg)=
-}if
-/post get aload pop
-3 1 roll
-//PDFR_DEBUG{
-(Current position = )print//TTParser/Pos get =
-(post position = )print dup =
-}if
-1 index exch//SkipToPosition exec
-//TTParser/Pos//TTParser/Pos get 4 index add put
-exch dup 65535 le{
-string
-readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-}{
-[3 1 roll
-dup 16384 div floor cvi
-exch 1 index 16384 mul
-sub exch
-1 sub 0 1 3 -1 roll
+ currentfile token pop currentfile token pop mo
+ {
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 exch rlineto
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 rlineto
+ }loop
+}def
+/T1_gsave
+ level3
+ {/clipsave}
+ {/gsave}ifelse
+ load def
+/T1_grestore
+ level3
+ {/cliprestore}
+ {/grestore}ifelse
+ load def
+/set_spot_alias_ary
{
-1 add index
-16384 string readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-}for
-counttomark -2 roll
-string readstring not{
-mark(Insufficient data in the stream for ParseTTpost.)//error exec
-}if
-]
-}ifelse
-1 dict begin
-/post exch def
-//.getpost exec
-//TTParser/post glyphencoding put
-//PDFR_DEBUG{
-(ParseTTpost end)=
-glyphencoding ==
-}if
-end
-}bind def
-/MakeTTCharStrings
-{//MakeStreamReader exec
-dup dup//ParseTTTableDirectory exec
-//TTParser/post null put
-dup/post//knownget exec{
-0 get
-1 index/cmap get 0 get
-lt{
-2 copy//ParseTTpost exec
-//ParseTTcmap exec
-}{
-2 copy//ParseTTcmap exec
-3 1 roll
-//ParseTTpost exec
-}ifelse
-}{
-//ParseTTcmap exec
-}ifelse
+ dup inherit_aliases
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf
+}def
+/set_spot_normalization_ary
{
-dup 16#00030001 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding for Windows Unicode.)=
-}if
-16#00030001//GetTTEncoding exec
-AdobeGlyphList//ComposeCharStrings exec
-exit
-}if
-dup 16#00010000 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding for Macintosh Roman.)=
-}if
-16#00010000//GetTTEncoding exec
-PDFEncoding dup null eq{
-pop//GetMacRomanEncodingInverse exec
-}{
-//InverseEncoding exec
-}ifelse
-//ComposeCharStrings exec
-exit
-}if
-dup 16#00030000 known{
-//PDFR_DEBUG{
-(Using the TT cmap encoding 3.0 - not sure why Ghostscript writes it since old versions.)=
-}if
-16#00030000//GetTTEncoding exec
-PDFEncoding dup null eq{
-pop//GetMacRomanEncodingInverse exec
-}{
-//InverseEncoding exec
-}ifelse
-//ComposeCharStrings exec
-exit
-}if
-mark(True Type cmap has no useful encodings.)//error exec
-}loop
-//PDFR_DEBUG{
-(CharStrings <<)=
-dup{
-exch
-dup type/nametype eq{
-//=only exec
-}{
-==
-}ifelse
-( )print ==
-}forall
-(>>)=
-}if
-}bind def
-/ScaleVal
+ dup inherit_aliases
+ dup length
+ /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if
+ array
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf
+ /AGMCORE_SpotAliasAry where{
+ pop
+ AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval
+ AGMCORE_SpotAliasAry length
+ }{0}ifelse
+ AGMCORE_SpotAliasAry2 3 1 roll exch putinterval
+ true set_spot_alias
+}def
+/inherit_aliases
{
-aload pop
-1 index sub
-3 2 roll mul add
-}bind def
-/ScaleArg
+ {dup/Name get map_alias{/CSD put}{pop}ifelse}forall
+}def
+/set_spot_alias
{
-aload pop
-1 index sub
-3 1 roll
-sub exch div
-}bind def
-/ScaleArgN
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias 3 -1 roll put
+ }{
+ pop
+ }ifelse
+}def
+/current_spot_alias
{
-dup length 2 sub -2 0{
-2
-2 index 3 1 roll getinterval
-3 2 roll
-exch//ScaleArg exec
-1 index length 2 idiv 1 add 1 roll
-}for
-pop
-}bind def
-/ComputeFunction_10
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias get
+ }{
+ false
+ }ifelse
+}def
+/map_alias
{
-//PDFR_DEBUG{
-(ComputeFunction_10 beg )print 1 index//=only exec( stack=)print count =
-}if
-exch
-dup 1 eq{
-pop dup length 1 sub get
-}{
-1 index length 1 sub mul
-dup dup floor sub
-dup 0 eq{
-pop cvi get
-}{
-3 1 roll floor cvi
-2 getinterval
-aload pop
-2 index mul 3 2 roll 1 exch sub 3 2 roll mul add
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(ComputeFunction_10 end )print dup//=only exec( stack=)print count =
-}if
-}bind def
-/ComputeFunction_n0
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ /AGMCORE_name xdf
+ false
+ AGMCORE_SpotAliasAry2{
+ dup/Name get AGMCORE_name eq{
+ /CSD get/CSD get_res
+ exch pop true
+ exit
+ }{
+ pop
+ }ifelse
+ }forall
+ end
+ }{
+ pop false
+ }ifelse
+}bdf
+/spot_alias
{
-//PDFR_DEBUG{
-(ComputeFunction_n0 beg N=)print dup//=only exec( stack=)print count =
-}if
-dup 0 eq{
-pop
-}{
-dup 2 add -1 roll
-dup 3 index length 1 sub ge{
-pop 1 sub
-exch dup length 1 sub get exch
-//PDFReader/ComputeFunction_n0 get exec
-}{
-dup floor cvi dup
-4 index exch get
-3 index dup
-5 add copy
-6 2 roll
-pop pop pop pop
-1 sub
-//PDFReader/ComputeFunction_n0 get exec
-3 2 roll pop
-exch
-4 3 roll exch
-4 add 2 roll 1 add
-3 2 roll exch get
-exch 1 sub
-//PDFReader/ComputeFunction_n0 get exec
-1 index mul
-3 1 roll
-1 exch sub mul add
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(ComputeFunction_n0 end )print dup//=only exec( stack=)print count =
-}if
-}bind def
-/FunctionToProc_x01
+ true set_spot_alias
+ /AGMCORE_&setcustomcolor AGMCORE_key_known not{
+ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put
+ }if
+ /customcolor_tint 1 AGMCORE_gput
+ //Adobe_AGM_Core begin
+ /setcustomcolor
+ {
+ //Adobe_AGM_Core begin
+ dup/customcolor_tint exch AGMCORE_gput
+ 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not
+ current_spot_alias and{1 index 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /sep_colorspace_dict AGMCORE_gget null ne
+ {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse
+ 3 1 roll 2 index{
+ exch pop/sep_tint AGMCORE_gget exch
+ }if
+ mark 3 1 roll
+ setsepcolorspace
+ counttomark 0 ne{
+ setsepcolor
+ }if
+ pop
+ not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if
+ pop
+ true set_spot_alias
+ }{
+ AGMCORE_&setcustomcolor
+ }ifelse
+ end
+ }bdf
+ end
+}def
+/begin_feature
{
-dup/Domain get exch
-dup/Data get 0 get exch
-/Size get length
-[4 1 roll
-//PDFR_DEBUG{
-{(function beg, stack =)print count//=only exec(\n)print}/exec load
-5 2 roll
-}if
-dup 1 gt{
-{mark exch
-3 add 2 roll
-//ScaleArgN exec
-counttomark dup
-3 add -2 roll
-pop exch
-//ComputeFunction_n0 exec
-}/exec load
-}{
-pop
-3 1/roll load//ScaleArg/exec load
-/exch load
-//ComputeFunction_10/exec load
-}ifelse
-//PDFR_DEBUG{
-(function end, stack =)/print load/count load//=only/exec load(\n)/print load
-}if
-]cvx
-//PDFR_DEBUG{
-(Made a procedure for the 1-result function :)=
-dup ==
-}if
-}bind def
-/FunctionProcDebugBeg
-{(FunctionProcDebugBeg )print count =
-}bind def
-/FunctionProcDebugEnd
-{(FunctionProcDebugEnd )print count =
-}bind def
-/FunctionToProc_x0n
+ Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put
+ count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put
+ {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if
+}def
+/end_feature
{
-PDFR_DEBUG{
-(FunctionToProc_x0n beg m=)print dup =
-}if
-1 index/Size get length exch
-dup 7 mul 2 add array
-PDFR_DEBUG{
-dup 0//FunctionProcDebugBeg put
-}{
-dup 0//DoNothing put
-}ifelse
-dup 1/exec load put
-dup 2 5 index/Domain get put
-2 index 1 eq{
-dup 3//ScaleArg put
-}{
-dup 3//ScaleArgN put
-}ifelse
-dup 4/exec load put
-1 index 1 sub 0 exch 1 exch{
-dup 7 mul 5 add
-1 index 4 index 1 sub ne{
-dup 3 index exch 6 index put 1 add
-dup 3 index exch/copy load put 1 add
-}if
-[
-6 index/Data get 3 index get
-6 index 1 eq{
-//ComputeFunction_10/exec load
-}{
-6 index
-//ComputeFunction_n0/exec load
-}ifelse
-]cvx
-3 index exch 2 index exch put 1 add
-2 index 1 index/exec load put 1 add
-1 index 4 index 1 sub ne{
-2 index 1 index 6 index 1 add put 1 add
-2 index 1 index 1 put 1 add
-2 index 1 index/roll load put
-}if
-pop pop
-}for
-PDFR_DEBUG{
-dup dup length 2 sub//FunctionProcDebugEnd put
-}{
-dup dup length 2 sub//DoNothing put
-}ifelse
-dup dup length 1 sub/exec load put
-cvx exch pop exch pop exch pop
-//PDFR_DEBUG{
-(Made a procedure for the n-argument function :)=
-dup ==
-}if
-PDFR_DEBUG{
-(FunctionToProc_x0n end)=
-}if
-}bind def
-/MakeTableRec
+ 2 dict begin
+ /spd/setpagedevice load def
+ /setpagedevice{get_gstate spd set_gstate}def
+ stopped{$error/newerror false put}if
+ end
+ count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse
+ countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse
+ {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if
+}def
+/set_negative
{
-0
-exec
-}bind def
-/MakeTable
-{//PDFR_DEBUG{
-(MakeTable beg )print count =
-}if
-1 index/Size get exch
-1 sub dup
-3 1 roll
-get
-array
-1 index 0 eq{
-exch pop exch pop
-}{
-dup length 1 sub -1 0{
-3 index 3 index//MakeTableRec exec
-2 index 3 1 roll put
-}for
-exch pop exch pop
-}ifelse
-//PDFR_DEBUG{
-(MakeTable end )print count =
-}if
-}bind def
-//MakeTableRec 0//MakeTable put
-/StoreSample
+ //Adobe_AGM_Core begin
+ /AGMCORE_inverting exch def
+ level2{
+ currentpagedevice/NegativePrint known AGMCORE_distilling not and{
+ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{
+ true begin_feature true{
+ <</NegativePrint//Adobe_AGM_Core/AGMCORE_inverting get>>setpagedevice
+ }end_feature
+ }if
+ /AGMCORE_inverting false def
+ }if
+ }if
+ AGMCORE_inverting{
+ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer
+ AGMCORE_distilling{
+ erasepage
+ }{
+ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse
+ /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore
+ }ifelse
+ }if
+ end
+}def
+/lw_save_restore_override{
+ /md where{
+ pop
+ md begin
+ initializepage
+ /initializepage{}def
+ /pmSVsetup{}def
+ /endp{}def
+ /pse{}def
+ /psb{}def
+ /orig_showpage where
+ {pop}
+ {/orig_showpage/showpage load def}
+ ifelse
+ /showpage{orig_showpage gR}def
+ end
+ }if
+}def
+/pscript_showpage_override{
+ /NTPSOct95 where
+ {
+ begin
+ showpage
+ save
+ /showpage/restore load def
+ /restore{exch pop}def
+ end
+ }if
+}def
+/driver_media_override
{
-1 sub
-dup 0 eq{
-pop
-}{
--1 1{
-I exch get get
-}for
-}ifelse
-I 0 get 3 2 roll put
-}bind def
-/ReadSample32
+ /md where{
+ pop
+ md/initializepage known{
+ md/initializepage{}put
+ }if
+ md/rC known{
+ md/rC{4{pop}repeat}put
+ }if
+ }if
+ /mysetup where{
+ /mysetup[1 0 0 1 0 0]put
+ }if
+ Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put
+ level2
+ {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if
+}def
+/capture_mysetup
{
-4{
-File read not{
-mark(Insufficient data for function.)//error exec
-}if
-}repeat
-pop
-3 1 roll exch
-256 mul add 256 mul add
-//1_24_bitshift_1_sub div
-}bind def
-/ReadSample
+ /Pscript_Win_Data where{
+ pop
+ Pscript_Win_Data/mysetup known{
+ Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put
+ }if
+ }if
+}def
+/restore_mysetup
{
-Buffer BitsLeft BitsPerSample
-{2 copy ge{
-exit
-}if
-3 1 roll
-8 add 3 1 roll
-256 mul File read not{
-mark(Insufficient data for function.)//error exec
-}if
-add
-3 1 roll
-}loop
-sub dup
-2 index exch
-neg bitshift
-2 copy exch bitshift
-4 3 roll exch sub
-/Buffer exch def
-exch/BitsLeft exch def
-Div div
-}bind def
-/ReadSamplesRec
-{0
-exec
-}bind def
-/ReadSamples
+ /Pscript_Win_Data where{
+ pop
+ Pscript_Win_Data/mysetup known{
+ Adobe_AGM_Core/save_mysetup known{
+ Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put
+ Adobe_AGM_Core/save_mysetup undef
+ }if
+ }if
+ }if
+}def
+/driver_check_media_override
{
-//PDFR_DEBUG{
-(ReadSamples beg )print count =
-}if
-dup 1 eq{
-pop
-0 1 Size 0 get 1 sub{
-I exch 0 exch put
-0 1 M 1 sub{
-dup Range exch 2 mul 2 getinterval
-//PDFR_DEBUG{
-(Will read a sample ... )print
-}if
-BitsPerSample 32 eq{//ReadSample32}{//ReadSample}ifelse
-exec exch//ScaleVal exec
-//PDFR_DEBUG{
-(value=)print dup =
-}if
-exch Table exch get
-Size length//StoreSample exec
-}for
-}for
-}{
-1 sub
-dup Size exch get 0 exch 1 exch 1 sub{
-I exch 2 index exch put
-dup//ReadSamplesRec exec
-}for
-pop
-}ifelse
-//PDFR_DEBUG{
-(ReadSamples end )print count =
-}if
-}bind def
-//ReadSamplesRec 0//ReadSamples put
-/StreamToArray
-{//PDFR_DEBUG{
-(StreamToArray beg )print count =
-}if
-userdict/FuncDataReader get begin
-dup/BitsPerSample get/BitsPerSample exch def
-dup/Size get length/N exch def
-dup/Range get length 2 idiv/M exch def
-1 BitsPerSample bitshift 1 sub/Div exch def
-/BitsLeft 0 def
-/Buffer 0 def
-dup/Size get/Size exch def
-dup/Range get/Range exch def
-/File 1 index//MakeStreamReader exec def
-/I[N{0}repeat]def
-M array
-dup length 1 sub -1 0{
-2 index N//MakeTable exec
-2 index 3 1 roll put
-}for
-/Table exch def
-N//ReadSamples exec
-PDFR_DEBUG{
-(Table = )print Table ==
-}if
-/Data Table put
+ /PrepsDict where
+ {pop}
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and
+ }if
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix
+ }if
+ }ifelse
+}def
+AGMCORE_err_strings begin
+ /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def
+ /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def
+ /AGMCORE_invalid_color_space(This job contains an invalid color space. )def
end
-//PDFR_DEBUG{
-(StreamToArray end )print count =
-}if
-}bind def
-/FunctionToProc10
-{
-PDFR_DEBUG{
-(FunctionToProc10 beg, Range = )print dup/Range get ==
-}if
-dup/Order//knownget exec{
-1 ne{
-(Underimplemented function Type 0 Order 3.)=
-}if
-}if
-dup//StreamToArray exec
-dup/Range get length dup 2 eq{
-pop//FunctionToProc_x01 exec
-}{
-2 idiv//FunctionToProc_x0n exec
-}ifelse
-PDFR_DEBUG{
-(FunctionToProc10 end)=
-}if
-}bind def
-/FunctionToProc12
-{begin
-currentdict/C0//knownget exec{length 1 eq}{true}ifelse{
-N
-currentdict/C0//knownget exec{
-0 get
-}{
-0
-}ifelse
-currentdict/C1//knownget exec{
-0 get
-}{
-1
-}ifelse
-1 index sub
-[4 1 roll
-{
-4 2 roll
-exp mul add
-}aload pop
-]cvx
-}{
-[
-0 1 C0 length 1 sub{
-N
-C0 2 index get
-C1 3 index get
-4 3 roll pop
-1 index sub
-[/dup load
-5 2 roll
-{
-4 2 roll
-exp mul add
-exch
-}aload pop
-]cvx
-/exec load
-}for
-/pop load
-]cvx
-}ifelse
+/set_def_ht
+{AGMCORE_def_ht sethalftone}def
+/set_def_flat
+{AGMCORE_Default_flatness setflat}def
end
-//PDFR_DEBUG{
-(FunctionType2Proc : )print dup ==
-}if
-}bind def
-/FunctionToProc14
-{//MakeStreamReader exec cvx exec
-//PDFR_DEBUG{
-(FunctionType4Proc : )print dup ==
-}if
-}bind def
-/FunctionToProc1
-{
-dup/FunctionType get
-{dup 0 eq{
-pop//FunctionToProc10 exec exit
-}if
-dup 2 eq{
-pop//FunctionToProc12 exec exit
-}if
-dup 4 eq{
-pop//FunctionToProc14 exec exit
-}if
-mark exch(Function type )exch( isn't implemented yet.)//error exec
-}loop
-}bind def
-/FunctionToProc20
-{
-PDFR_DEBUG{
-(FunctionToProc20, Range = )print dup/Range get ==
-}if
-dup/Order//knownget exec{
-1 ne{
-(Underimplemented function Type 0 Order 3.)=
-}if
-}if
-dup//StreamToArray exec
-dup/Range get length dup 2 eq{
-pop//FunctionToProc_x01 exec
-}{
-2 idiv//FunctionToProc_x0n exec
-}ifelse
-}bind def
-/FunctionToProc
-{//PDFR_DEBUG{
-(FunctionToProc beg )print count =
-}if
-dup type/dicttype eq{
-dup/Domain get length 2 idiv
-{
-dup 1 eq{
-pop//FunctionToProc1 exec exit
-}if
-dup 2 eq{
-pop//FunctionToProc20 exec exit
-}if
-mark(Functions with many arguments aren't implemented yet.)//error exec
-}loop
-}{
-//PDFR_DEBUG{(Not a function dict, assume already a procedure.)print}if
-}ifelse
-//PDFR_DEBUG{
-(FunctionToProc end )print count =
-}if
-}bind def
-/spotfunctions mark
-/Round{
-abs exch abs 2 copy add 1 le{
-dup mul exch dup mul add 1 exch sub
-}{
-1 sub dup mul exch 1 sub dup mul add 1 sub
-}ifelse
-}
-/Diamond{
-abs exch abs 2 copy add .75 le{
-dup mul exch dup mul add 1 exch sub
-}{
-2 copy add 1.23 le{
-.85 mul add 1 exch sub
-}{
-1 sub dup mul exch 1 sub dup mul add 1 sub
-}ifelse
-}ifelse
-}
-/Ellipse{
-abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt{
-pop dup mul exch .75 div dup mul add 4 div 1 exch sub
-}{
-dup 1 gt{
-pop 1 exch sub dup mul exch 1 exch sub
-.75 div dup mul add 4 div 1 sub
-}{
-.5 exch sub exch pop exch pop
-}ifelse
-}ifelse
-}
-/EllipseA{dup mul .9 mul exch dup mul add 1 exch sub}
-/InvertedEllipseA{dup mul .9 mul exch dup mul add 1 sub}
-/EllipseB{dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub}
-/EllipseC{dup mul .9 mul exch dup mul add 1 exch sub}
-/InvertedEllipseC{dup mul .9 mul exch dup mul add 1 sub}
-/Line{exch pop abs neg}
-/LineX{pop}
-/LineY{exch pop}
-/Square{abs exch abs 2 copy lt{exch}if pop neg}
-/Cross{abs exch abs 2 copy gt{exch}if pop neg}
-/Rhomboid{abs exch abs 0.9 mul add 2 div}
-/DoubleDot{2{360 mul sin 2 div exch}repeat add}
-/InvertedDoubleDot{2{360 mul sin 2 div exch}repeat add neg}
-/SimpleDot{dup mul exch dup mul add 1 exch sub}
-/InvertedSimpleDot{dup mul exch dup mul add 1 sub}
-/CosineDot{180 mul cos exch 180 mul cos add 2 div}
-/Double{exch 2 div exch 2{360 mul sin 2 div exch}repeat add}
-/InvertedDouble{
-exch 2 div exch 2{360 mul sin 2 div exch}repeat add neg
-}
-.dicttomark readonly def
-/CheckColorSpace
-{
-dup type/arraytype ne{
-mark(Resource )3 index( must be an array.)//error exec
-}if
-}bind def
-/SubstitutePDFColorSpaceRec
-{0
-exec
-}bind def
-/SubstitutePDFColorSpace
-{
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_CoolType_Core 2.31 0
%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved.
%%Version: 2.31 0
10 dict begin
/Adobe_CoolType_Passthru currentdict def
/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def
Adobe_CoolType_Core_Defined
{/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def}
if
userdict/Adobe_CoolType_Core 70 dict dup begin put
/Adobe_CoolType_Version 2.31 def
/Level2?
systemdict/languagelevel known dup
{pop systemdict/languagelevel get 2 ge}
if def
Level2? not
{
/currentglobal false def
/setglobal/pop load def
/gcheck{pop false}bind def
/currentpacking false def
/setpacking/pop load def
/SharedFontDirectory 0 dict def
}
if
currentpacking
true setpacking
currentglobal false setglobal
userdict/Adobe_CoolType_Data 2 copy known not
{2 copy 10 dict put}
if
get
begin
/@opStackCountByLevel 32 dict def
/@opStackLevel 0 def
/@dictStackCountByLevel 32 dict def
/@dictStackLevel 0 def
end
setglobal
currentglobal true setglobal
userdict/Adobe_CoolType_GVMFonts known not
{userdict/Adobe_CoolType_GVMFonts 10 dict put}
if
setglobal
currentglobal false setglobal
userdict/Adobe_CoolType_LVMFonts known not
{userdict/Adobe_CoolType_LVMFonts 10 dict put}
if
setglobal
/ct_VMDictPut
{
dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse
3 1 roll put
}bind def
/ct_VMDictUndef
{
dup Adobe_CoolType_GVMFonts exch known
{Adobe_CoolType_GVMFonts exch undef}
{
dup Adobe_CoolType_LVMFonts exch known
{Adobe_CoolType_LVMFonts exch undef}
{pop}
ifelse
}ifelse
}bind def
/ct_str1 1 string def
/ct_xshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
_ct_x _ct_y moveto
0
rmoveto
}
ifelse
/_ct_i _ct_i 1 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/ct_yshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
_ct_x _ct_y moveto
0 exch
rmoveto
}
ifelse
/_ct_i _ct_i 1 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/ct_xyshow
{
/_ct_na exch def
/_ct_i 0 def
currentpoint
/_ct_y exch def
/_ct_x exch def
{
pop pop
ct_str1 exch 0 exch put
ct_str1 show
{_ct_na _ct_i get}stopped
{pop pop}
{
{_ct_na _ct_i 1 add get}stopped
{pop pop pop}
{
_ct_x _ct_y moveto
rmoveto
}
ifelse
}
ifelse
/_ct_i _ct_i 2 add def
currentpoint
/_ct_y exch def
/_ct_x exch def
}
exch
@cshow
}bind def
/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def
/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def
/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def
currentglobal true setglobal
/ct_T3Defs
{
/BuildChar
{
1 index/Encoding get exch get
1 index/BuildGlyph get exec
}bind def
/BuildGlyph
{
exch begin
GlyphProcs exch get exec
end
}bind def
}bind def
setglobal
/@_SaveStackLevels
{
Adobe_CoolType_Data
begin
/@vmState currentglobal def false setglobal
@opStackCountByLevel
@opStackLevel
2 copy known not
{
2 copy
3 dict dup/args
7 index
5 add array put
put get
}
{
get dup/args get dup length 3 index lt
{
dup length 5 add array exch
1 index exch 0 exch putinterval
1 index exch/args exch put
}
{pop}
ifelse
}
ifelse
begin
count 1 sub
1 index lt
{pop count}
if
dup/argCount exch def
dup 0 gt
{
args exch 0 exch getinterval
astore pop
}
{pop}
ifelse
count
/restCount exch def
end
/@opStackLevel @opStackLevel 1 add def
countdictstack 1 sub
@dictStackCountByLevel exch @dictStackLevel exch put
/@dictStackLevel @dictStackLevel 1 add def
@vmState setglobal
end
}bind def
/@_RestoreStackLevels
{
Adobe_CoolType_Data
begin
/@opStackLevel @opStackLevel 1 sub def
@opStackCountByLevel @opStackLevel get
begin
count restCount sub dup 0 gt
{{pop}repeat}
{pop}
ifelse
args 0 argCount getinterval{}forall
end
/@dictStackLevel @dictStackLevel 1 sub def
@dictStackCountByLevel @dictStackLevel get
end
countdictstack exch sub dup 0 gt
{{end}repeat}
{pop}
ifelse
}bind def
/@_PopStackLevels
{
Adobe_CoolType_Data
begin
/@opStackLevel @opStackLevel 1 sub def
/@dictStackLevel @dictStackLevel 1 sub def
end
}bind def
/@Raise
{
exch cvx exch errordict exch get exec
stop
}bind def
/@ReRaise
{
cvx $error/errorname get errordict exch get exec
stop
}bind def
/@Stopped
{
0 @#Stopped
}bind def
/@#Stopped
{
@_SaveStackLevels
stopped
{@_RestoreStackLevels true}
{@_PopStackLevels false}
ifelse
}bind def
/@Arg
{
Adobe_CoolType_Data
begin
@opStackCountByLevel @opStackLevel 1 sub get
begin
args exch
argCount 1 sub exch sub get
end
end
}bind def
currentglobal true setglobal
/CTHasResourceForAllBug
Level2?
{
1 dict dup
/@shouldNotDisappearDictValue true def
Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put
begin
count @_SaveStackLevels
{(*){pop stop}128 string/Category resourceforall}
stopped pop
@_RestoreStackLevels
currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll
{
/@shouldNotDisappearDictValue known
{
{
end
currentdict 1 index eq
{pop exit}
if
}
loop
}
if
}
{
pop
end
}
ifelse
}
{false}
ifelse
def
true setglobal
/CTHasResourceStatusBug
Level2?
{
mark
{/steveamerige/Category resourcestatus}
stopped
{cleartomark true}
{cleartomark currentglobal not}
ifelse
}
{false}
ifelse
def
setglobal
/CTResourceStatus
{
mark 3 1 roll
/Category findresource
begin
({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
{cleartomark false}
{{3 2 roll pop true}{cleartomark false}ifelse}
ifelse
end
}bind def
/CTWorkAroundBugs
{
Level2?
{
/cid_PreLoad/ProcSet resourcestatus
{
pop pop
currentglobal
mark
{
(*)
{
dup/CMap CTHasResourceStatusBug
{CTResourceStatus}
{resourcestatus}
ifelse
{
pop dup 0 eq exch 1 eq or
{
dup/CMap findresource gcheck setglobal
/CMap undefineresource
}
{
pop CTHasResourceForAllBug
{exit}
{stop}
ifelse
}
ifelse
}
{pop}
ifelse
}
128 string/CMap resourceforall
}
stopped
{cleartomark}
stopped pop
setglobal
}
if
}
if
}bind def
/ds
{
Adobe_CoolType_Core
begin
CTWorkAroundBugs
/mo/moveto load def
/nf/newencodedfont load def
/msf{makefont setfont}bind def
/uf{dup undefinefont ct_VMDictUndef}bind def
/ur/undefineresource load def
/chp/charpath load def
/awsh/awidthshow load def
/wsh/widthshow load def
/ash/ashow load def
/@xshow/xshow load def
/@yshow/yshow load def
/@xyshow/xyshow load def
/@cshow/cshow load def
/sh/show load def
/rp/repeat load def
/.n/.notdef def
end
currentglobal false setglobal
userdict/Adobe_CoolType_Data 2 copy known not
{2 copy 10 dict put}
if
get
begin
/AddWidths? false def
/CC 0 def
/charcode 2 string def
/@opStackCountByLevel 32 dict def
/@opStackLevel 0 def
/@dictStackCountByLevel 32 dict def
/@dictStackLevel 0 def
/InVMFontsByCMap 10 dict def
/InVMDeepCopiedFonts 10 dict def
end
setglobal
}bind def
/dt
{
currentdict Adobe_CoolType_Core eq
{end}
if
}bind def
/ps
{
Adobe_CoolType_Core begin
Adobe_CoolType_GVMFonts begin
Adobe_CoolType_LVMFonts begin
SharedFontDirectory begin
}bind def
/pt
{
end
end
end
end
}bind def
/unload
{
systemdict/languagelevel known
{
systemdict/languagelevel get 2 ge
{
userdict/Adobe_CoolType_Core 2 copy known
{undef}
{pop pop}
ifelse
}
if
}
if
}bind def
/ndf
{
1 index where
{pop pop pop}
{dup xcheck{bind}if def}
ifelse
}def
/findfont systemdict
begin
userdict
begin
/globaldict where{/globaldict get begin}if
dup where pop exch get
/globaldict where{pop end}if
end
end
Adobe_CoolType_Core_Defined
{/systemfindfont exch def}
{
/findfont 1 index def
/systemfindfont exch def
}
ifelse
/undefinefont
{pop}ndf
/copyfont
{
currentglobal 3 1 roll
1 index gcheck setglobal
dup null eq{0}{dup length}ifelse
2 index length add 1 add dict
begin
exch
{
1 index/FID eq
{pop pop}
{def}
ifelse
}
forall
dup null eq
{pop}
{{def}forall}
ifelse
currentdict
end
exch setglobal
}bind def
/copyarray
{
currentglobal exch
dup gcheck setglobal
dup length array copy
exch setglobal
}bind def
/newencodedfont
{
currentglobal
{
SharedFontDirectory 3 index known
{SharedFontDirectory 3 index get/FontReferenced known}
{false}
ifelse
}
{
FontDirectory 3 index known
{FontDirectory 3 index get/FontReferenced known}
{
SharedFontDirectory 3 index known
{SharedFontDirectory 3 index get/FontReferenced known}
{false}
ifelse
}
ifelse
}
ifelse
dup
{
3 index findfont/FontReferenced get
2 index dup type/nametype eq
{findfont}
if ne
{pop false}
if
}
if
dup
{
1 index dup type/nametype eq
{findfont}
if
dup/CharStrings known
{
/CharStrings get length
4 index findfont/CharStrings get length
ne
{
pop false
}
if
}
{pop}
ifelse
}
if
{
pop
1 index findfont
/Encoding get exch
0 1 255
{2 copy get 3 index 3 1 roll put}
for
pop pop pop
}
{
currentglobal
4 1 roll
dup type/nametype eq
{findfont}
if
dup gcheck setglobal
dup dup maxlength 2 add dict
begin
exch
{
1 index/FID ne
2 index/Encoding ne and
{def}
{pop pop}
ifelse
}
forall
/FontReferenced exch def
/Encoding exch dup length array copy def
/FontName 1 index dup type/stringtype eq{cvn}if def dup
currentdict
end
definefont ct_VMDictPut
setglobal
}
ifelse
}bind def
/SetSubstituteStrategy
{
$SubstituteFont
begin
dup type/dicttype ne
{0 dict}
if
currentdict/$Strategies known
{
exch $Strategies exch
2 copy known
{
get
2 copy maxlength exch maxlength add dict
begin
{def}forall
{def}forall
currentdict
dup/$Init known
{dup/$Init get exec}
if
end
/$Strategy exch def
}
{pop pop pop}
ifelse
}
{pop pop}
ifelse
end
}bind def
/scff
{
$SubstituteFont
begin
dup type/stringtype eq
{dup length exch}
{null}
ifelse
/$sname exch def
/$slen exch def
/$inVMIndex
$sname null eq
{
1 index $str cvs
dup length $slen sub $slen getinterval cvn
}
{$sname}
ifelse def
end
{findfont}
@Stopped
{
dup length 8 add string exch
1 index 0(BadFont:)putinterval
1 index exch 8 exch dup length string cvs putinterval cvn
{findfont}
@Stopped
{pop/Courier findfont}
if
}
if
$SubstituteFont
begin
/$sname null def
/$slen 0 def
/$inVMIndex null def
end
}bind def
/isWidthsOnlyFont
{
dup/WidthsOnly known
{pop pop true}
{
dup/FDepVector known
{/FDepVector get{isWidthsOnlyFont dup{exit}if}forall}
{
dup/FDArray known
{/FDArray get{isWidthsOnlyFont dup{exit}if}forall}
{pop}
ifelse
}
ifelse
}
ifelse
}bind def
/ct_StyleDicts 4 dict dup begin
/Adobe-Japan1 4 dict dup begin
Level2?
{
/Serif
/HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiMin-W3}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiMin-W3/CIDFont resourcestatus
{pop pop/HeiseiMin-W3}
{/Ryumin-Light}
ifelse
}
{/Ryumin-Light}
ifelse
}
ifelse
def
/SansSerif
/HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiKakuGo-W5}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiKakuGo-W5/CIDFont resourcestatus
{pop pop/HeiseiKakuGo-W5}
{/GothicBBB-Medium}
ifelse
}
{/GothicBBB-Medium}
ifelse
}
ifelse
def
/HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus
{pop pop/HeiseiMaruGo-W4}
{
/CIDFont/Category resourcestatus
{
pop pop
/HeiseiMaruGo-W4/CIDFont resourcestatus
{pop pop/HeiseiMaruGo-W4}
{
/Jun101-Light-RKSJ-H/Font resourcestatus
{pop pop/Jun101-Light}
{SansSerif}
ifelse
}
ifelse
}
{
/Jun101-Light-RKSJ-H/Font resourcestatus
{pop pop/Jun101-Light}
{SansSerif}
ifelse
}
ifelse
}
ifelse
/RoundSansSerif exch def
/Default Serif def
}
{
/Serif/Ryumin-Light def
/SansSerif/GothicBBB-Medium def
{
(fonts/Jun101-Light-83pv-RKSJ-H)status
}stopped
{pop}{
{pop pop pop pop/Jun101-Light}
{SansSerif}
ifelse
/RoundSansSerif exch def
}ifelse
/Default Serif def
}
ifelse
end
def
/Adobe-Korea1 4 dict dup begin
/Serif/HYSMyeongJo-Medium def
/SansSerif/HYGoThic-Medium def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
/Adobe-GB1 4 dict dup begin
/Serif/STSong-Light def
/SansSerif/STHeiti-Regular def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
/Adobe-CNS1 4 dict dup begin
/Serif/MKai-Medium def
/SansSerif/MHei-Medium def
/RoundSansSerif SansSerif def
/Default Serif def
end
def
end
def
Level2?{currentglobal true setglobal}if
/ct_BoldRomanWidthProc
{
stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth
0 0
}bind def
/ct_Type0WidthProc
{
dup stringwidth 0 0 moveto
2 index true charpath pathbbox
0 -1
7 index 2 div .88
setcachedevice2
pop
0 0
}bind def
/ct_Type0WMode1WidthProc
{
dup stringwidth
pop 2 div neg -0.88
2 copy
moveto
0 -1
5 -1 roll true charpath pathbbox
setcachedevice
}bind def
/cHexEncoding
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
/ct_BoldBaseFont
11 dict begin
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding cHexEncoding def
/_setwidthProc/ct_BoldRomanWidthProc load def
/_bcstr1 1 string def
/BuildChar
{
exch begin
_basefont setfont
_bcstr1 dup 0 4 -1 roll put
dup
_setwidthProc
3 copy
moveto
show
_basefonto setfont
moveto
show
end
}bind def
currentdict
end
def
systemdict/composefont known
{
/ct_DefineIdentity-H
{
/Identity-H/CMap resourcestatus
{
pop pop
}
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry(Adobe)def
/Ordering(Identity)def
/Supplement 0 def
end def
/CMapName/Identity-H def
/CMapVersion 1.000 def
/CMapType 1 def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
}
def
/ct_BoldBaseCIDFont
11 dict begin
/CIDFontType 1 def
/CIDFontName/ct_BoldBaseCIDFont def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/_setwidthProc/ct_Type0WidthProc load def
/_bcstr2 2 string def
/BuildGlyph
{
exch begin
_basefont setfont
_bcstr2 1 2 index 256 mod put
_bcstr2 0 3 -1 roll 256 idiv put
_bcstr2 dup _setwidthProc
3 copy
moveto
show
_basefonto setfont
moveto
show
end
}bind def
currentdict
end
def
}if
Level2?{setglobal}if
/ct_CopyFont{
{
1 index/FID ne 2 index/UniqueID ne and
{def}{pop pop}ifelse
}forall
}bind def
/ct_Type0CopyFont
{
exch
dup length dict
begin
ct_CopyFont
[
exch
FDepVector
{
dup/FontType get 0 eq
{
1 index ct_Type0CopyFont
/_ctType0 exch definefont
}
{
/_ctBaseFont exch
2 index exec
}
ifelse
exch
}
forall
pop
]
/FDepVector exch def
currentdict
end
}bind def
/ct_MakeBoldFont
{
dup/ct_SyntheticBold known
{
dup length 3 add dict begin
ct_CopyFont
/ct_StrokeWidth .03 0 FontMatrix idtransform pop def
/ct_SyntheticBold true def
currentdict
end
definefont
}
{
dup dup length 3 add dict
begin
ct_CopyFont
/PaintType 2 def
/StrokeWidth .03 0 FontMatrix idtransform pop def
/dummybold currentdict
end
definefont
dup/FontType get dup 9 ge exch 11 le and
{
ct_BoldBaseCIDFont
dup length 3 add dict copy begin
dup/CIDSystemInfo get/CIDSystemInfo exch def
ct_DefineIdentity-H
/_Type0Identity/Identity-H 3 -1 roll[exch]composefont
/_basefont exch def
/_Type0Identity/Identity-H 3 -1 roll[exch]composefont
/_basefonto exch def
currentdict
end
/CIDFont defineresource
}
{
ct_BoldBaseFont
dup length 3 add dict copy begin
/_basefont exch def
/_basefonto exch def
currentdict
end
definefont
}
ifelse
}
ifelse
}bind def
/ct_MakeBold{
1 index
1 index
findfont
currentglobal 5 1 roll
dup gcheck setglobal
dup
/FontType get 0 eq
{
dup/WMode known{dup/WMode get 1 eq}{false}ifelse
version length 4 ge
and
{version 0 4 getinterval cvi 2015 ge}
{true}
ifelse
{/ct_Type0WidthProc}
{/ct_Type0WMode1WidthProc}
ifelse
ct_BoldBaseFont/_setwidthProc 3 -1 roll load put
{ct_MakeBoldFont}ct_Type0CopyFont definefont
}
{
dup/_fauxfont known not 1 index/SubstMaster known not and
{
ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put
ct_MakeBoldFont
}
{
2 index 2 index eq
{exch pop }
{
dup length dict begin
ct_CopyFont
currentdict
end
definefont
}
ifelse
}
ifelse
}
ifelse
pop pop pop
setglobal
}bind def
/?str1 256 string def
/?set
{
$SubstituteFont
begin
/$substituteFound false def
/$fontname 1 index def
/$doSmartSub false def
end
dup
findfont
$SubstituteFont
begin
$substituteFound
{false}
{
dup/FontName known
{
dup/FontName get $fontname eq
1 index/DistillerFauxFont known not and
/currentdistillerparams where
{pop false 2 index isWidthsOnlyFont not and}
if
}
{false}
ifelse
}
ifelse
exch pop
/$doSmartSub true def
end
{
5 1 roll pop pop pop pop
findfont
}
{
1 index
findfont
dup/FontType get 3 eq
{
6 1 roll pop pop pop pop pop false
}
{pop true}
ifelse
{
$SubstituteFont
begin
pop pop
/$styleArray 1 index def
/$regOrdering 2 index def
pop pop
0 1 $styleArray length 1 sub
{
$styleArray exch get
ct_StyleDicts $regOrdering
2 copy known
{
get
exch 2 copy known not
{pop/Default}
if
get
dup type/nametype eq
{
?str1 cvs length dup 1 add exch
?str1 exch(-)putinterval
exch dup length exch ?str1 exch 3 index exch putinterval
add ?str1 exch 0 exch getinterval cvn
}
{
pop pop/Unknown
}
ifelse
}
{
pop pop pop pop/Unknown
}
ifelse
}
for
end
findfont
}if
}
ifelse
currentglobal false setglobal 3 1 roll
null copyfont definefont pop
setglobal
}bind def
setpacking
userdict/$SubstituteFont 25 dict put
1 dict
begin
/SubstituteFont
dup $error exch 2 copy known
{get}
{pop pop{pop/Courier}bind}
ifelse def
/currentdistillerparams where dup
{
pop pop
currentdistillerparams/CannotEmbedFontPolicy 2 copy known
{get/Error eq}
{pop pop false}
ifelse
}
if not
{
countdictstack array dictstack 0 get
begin
userdict
begin
$SubstituteFont
begin
/$str 128 string def
/$fontpat 128 string def
/$slen 0 def
/$sname null def
/$match false def
/$fontname null def
/$substituteFound false def
/$inVMIndex null def
/$doSmartSub true def
/$depth 0 def
/$fontname null def
/$italicangle 26.5 def
/$dstack null def
/$Strategies 10 dict dup
begin
/$Type3Underprint
{
currentglobal exch false setglobal
11 dict
begin
/UseFont exch
$WMode 0 ne
{
dup length dict copy
dup/WMode $WMode put
/UseFont exch definefont
}
if def
/FontName $fontname dup type/stringtype eq{cvn}if def
/FontType 3 def
/FontMatrix[.001 0 0 .001 0 0]def
/Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def
/FontBBox[0 0 0 0]def
/CCInfo 7 dict dup
begin
/cc null def
/x 0 def
/y 0 def
end def
/BuildChar
{
exch
begin
CCInfo
begin
1 string dup 0 3 index put exch pop
/cc exch def
UseFont 1000 scalefont setfont
cc stringwidth/y exch def/x exch def
x y setcharwidth
$SubstituteFont/$Strategy get/$Underprint get exec
0 0 moveto cc show
x y moveto
end
end
}bind def
currentdict
end
exch setglobal
}bind def
/$GetaTint
2 dict dup
begin
/$BuildFont
{
dup/WMode known
{dup/WMode get}
{0}
ifelse
/$WMode exch def
$fontname exch
dup/FontName known
{
dup/FontName get
dup type/stringtype eq{cvn}if
}
{/unnamedfont}
ifelse
exch
Adobe_CoolType_Data/InVMDeepCopiedFonts get
1 index/FontName get known
{
pop
Adobe_CoolType_Data/InVMDeepCopiedFonts get
1 index get
null copyfont
}
{$deepcopyfont}
ifelse
exch 1 index exch/FontBasedOn exch put
dup/FontName $fontname dup type/stringtype eq{cvn}if put
definefont
Adobe_CoolType_Data/InVMDeepCopiedFonts get
begin
dup/FontBasedOn get 1 index def
end
}bind def
/$Underprint
{
gsave
x abs y abs gt
{/y 1000 def}
{/x -1000 def 500 120 translate}
ifelse
Level2?
{
[/Separation(All)/DeviceCMYK{0 0 0 1 pop}]
setcolorspace
}
{0 setgray}
ifelse
10 setlinewidth
x .8 mul
[7 3]
{
y mul 8 div 120 sub x 10 div exch moveto
0 y 4 div neg rlineto
dup 0 rlineto
0 y 4 div rlineto
closepath
gsave
Level2?
{.2 setcolor}
{.8 setgray}
ifelse
fill grestore
stroke
}
forall
pop
grestore
}bind def
end def
/$Oblique
1 dict dup
begin
/$BuildFont
{
currentglobal exch dup gcheck setglobal
null copyfont
begin
/FontBasedOn
currentdict/FontName known
{
FontName
dup type/stringtype eq{cvn}if
}
{/unnamedfont}
ifelse
def
/FontName $fontname dup type/stringtype eq{cvn}if def
/currentdistillerparams where
{pop}
{
/FontInfo currentdict/FontInfo known
{FontInfo null copyfont}
{2 dict}
ifelse
dup
begin
/ItalicAngle $italicangle def
/FontMatrix FontMatrix
[1 0 ItalicAngle dup sin exch cos div 1 0 0]
matrix concatmatrix readonly
end
4 2 roll def
def
}
ifelse
FontName currentdict
end
definefont
exch setglobal
}bind def
end def
/$None
1 dict dup
begin
/$BuildFont{}bind def
end def
end def
/$Oblique SetSubstituteStrategy
/$findfontByEnum
{
dup type/stringtype eq{cvn}if
dup/$fontname exch def
$sname null eq
{$str cvs dup length $slen sub $slen getinterval}
{pop $sname}
ifelse
$fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval
/$match false def
$SubstituteFont/$dstack countdictstack array dictstack put
mark
{
$fontpat 0 $slen 7 add getinterval
{/$match exch def exit}
$str filenameforall
}
stopped
{
cleardictstack
currentdict
true
$SubstituteFont/$dstack get
{
exch
{
1 index eq
{pop false}
{true}
ifelse
}
{begin false}
ifelse
}
forall
pop
}
if
cleartomark
/$slen 0 def
$match false ne
{$match(fonts/)anchorsearch pop pop cvn}
{/Courier}
ifelse
}bind def
/$ROS 1 dict dup
begin
/Adobe 4 dict dup
begin
/Japan1 [/Ryumin-Light/HeiseiMin-W3
/GothicBBB-Medium/HeiseiKakuGo-W5
/HeiseiMaruGo-W4/Jun101-Light]def
/Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def
/GB1 [/STSong-Light/STHeiti-Regular]def
/CNS1 [/MKai-Medium/MHei-Medium]def
end def
end def
/$cmapname null def
/$deepcopyfont
{
dup/FontType get 0 eq
{
1 dict dup/FontName/copied put copyfont
begin
/FDepVector FDepVector copyarray
0 1 2 index length 1 sub
{
2 copy get $deepcopyfont
dup/FontName/copied put
/copied exch definefont
3 copy put pop pop
}
for
def
currentdict
end
}
{$Strategies/$Type3Underprint get exec}
ifelse
}bind def
/$buildfontname
{
dup/CIDFont findresource/CIDSystemInfo get
begin
Registry length Ordering length Supplement 8 string cvs
3 copy length 2 add add add string
dup 5 1 roll dup 0 Registry putinterval
dup 4 index(-)putinterval
dup 4 index 1 add Ordering putinterval
4 2 roll add 1 add 2 copy(-)putinterval
end
1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch
anchorsearch
{pop pop 3 2 roll putinterval cvn/$cmapname exch def}
{pop pop pop pop pop}
ifelse
length
$str 1 index(-)putinterval 1 add
$str 1 index $cmapname $fontpat cvs putinterval
$cmapname length add
$str exch 0 exch getinterval cvn
}bind def
/$findfontByROS
{
/$fontname exch def
$ROS Registry 2 copy known
{
get Ordering 2 copy known
{get}
{pop pop[]}
ifelse
}
{pop pop[]}
ifelse
false exch
{
dup/CIDFont resourcestatus
{
pop pop
save
1 index/CIDFont findresource
dup/WidthsOnly known
{dup/WidthsOnly get}
{false}
ifelse
exch pop
exch restore
{pop}
{exch pop true exit}
ifelse
}
{pop}
ifelse
}
forall
{$str cvs $buildfontname}
{
false(*)
{
save exch
dup/CIDFont findresource
dup/WidthsOnly known
{dup/WidthsOnly get not}
{true}
ifelse
exch/CIDSystemInfo get
dup/Registry get Registry eq
exch/Ordering get Ordering eq and and
{exch restore exch pop true exit}
{pop restore}
ifelse
}
$str/CIDFont resourceforall
{$buildfontname}
{$fontname $findfontByEnum}
ifelse
}
ifelse
}bind def
end
end
currentdict/$error known currentdict/languagelevel known and dup
{pop $error/SubstituteFont known}
if
dup
{$error}
{Adobe_CoolType_Core}
ifelse
begin
{
/SubstituteFont
/CMap/Category resourcestatus
{
pop pop
{
$SubstituteFont
begin
/$substituteFound true def
dup length $slen gt
$sname null ne or
$slen 0 gt and
{
$sname null eq
{dup $str cvs dup length $slen sub $slen getinterval cvn}
{$sname}
ifelse
Adobe_CoolType_Data/InVMFontsByCMap get
1 index 2 copy known
{
get
false exch
{
pop
currentglobal
{
GlobalFontDirectory 1 index known
{exch pop true exit}
{pop}
ifelse
}
{
FontDirectory 1 index known
{exch pop true exit}
{
GlobalFontDirectory 1 index known
{exch pop true exit}
{pop}
ifelse
}
ifelse
}
ifelse
}
forall
}
{pop pop false}
ifelse
{
exch pop exch pop
}
{
dup/CMap resourcestatus
{
pop pop
dup/$cmapname exch def
/CMap findresource/CIDSystemInfo get{def}forall
$findfontByROS
}
{
128 string cvs
dup(-)search
{
3 1 roll search
{
3 1 roll pop
{dup cvi}
stopped
{pop pop pop pop pop $findfontByEnum}
{
4 2 roll pop pop
exch length
exch
2 index length
2 index
sub
exch 1 sub -1 0
{
$str cvs dup length
4 index
0
4 index
4 3 roll add
getinterval
exch 1 index exch 3 index exch
putinterval
dup/CMap resourcestatus
{
pop pop
4 1 roll pop pop pop
dup/$cmapname exch def
/CMap findresource/CIDSystemInfo get{def}forall
$findfontByROS
true exit
}
{pop}
ifelse
}
for
dup type/booleantype eq
{pop}
{pop pop pop $findfontByEnum}
ifelse
}
ifelse
}
{pop pop pop $findfontByEnum}
ifelse
}
{pop pop $findfontByEnum}
ifelse
}
ifelse
}
ifelse
}
{//SubstituteFont exec}
ifelse
/$slen 0 def
end
}
}
{
{
$SubstituteFont
begin
/$substituteFound true def
dup length $slen gt
$sname null ne or
$slen 0 gt and
{$findfontByEnum}
{//SubstituteFont exec}
ifelse
end
}
}
ifelse
bind readonly def
Adobe_CoolType_Core/scfindfont/systemfindfont load put
}
{
/scfindfont
{
$SubstituteFont
begin
dup systemfindfont
dup/FontName known
{dup/FontName get dup 3 index ne}
{/noname true}
ifelse
dup
{
/$origfontnamefound 2 index def
/$origfontname 4 index def/$substituteFound true def
}
if
exch pop
{
$slen 0 gt
$sname null ne
3 index length $slen gt or and
{
pop dup $findfontByEnum findfont
dup maxlength 1 add dict
begin
{1 index/FID eq{pop pop}{def}ifelse}
forall
currentdict
end
definefont
dup/FontName known{dup/FontName get}{null}ifelse
$origfontnamefound ne
{
$origfontname $str cvs print
( substitution revised, using )print
dup/FontName known
{dup/FontName get}{(unspecified font)}
ifelse
$str cvs print(.\n)print
}
if
}
{exch pop}
ifelse
}
{exch pop}
ifelse
end
}bind def
}
ifelse
end
end
Adobe_CoolType_Core_Defined not
{
Adobe_CoolType_Core/findfont
{
$SubstituteFont
begin
$depth 0 eq
{
/$fontname 1 index dup type/stringtype ne{$str cvs}if def
/$substituteFound false def
}
if
/$depth $depth 1 add def
end
scfindfont
$SubstituteFont
begin
/$depth $depth 1 sub def
$substituteFound $depth 0 eq and
{
$inVMIndex null ne
{dup $inVMIndex $AddInVMFont}
if
$doSmartSub
{
currentdict/$Strategy known
{$Strategy/$BuildFont get exec}
if
}
if
}
if
end
}bind put
}
if
}
if
end
/$AddInVMFont
{
exch/FontName 2 copy known
{
get
1 dict dup begin exch 1 index gcheck def end exch
Adobe_CoolType_Data/InVMFontsByCMap get exch
$DictAdd
}
{pop pop pop}
ifelse
}bind def
/$DictAdd
{
2 copy known not
{2 copy 4 index length dict put}
if
Level2? not
{
2 copy get dup maxlength exch length 4 index length add lt
2 copy get dup length 4 index length add exch maxlength 1 index lt
{
2 mul dict
begin
2 copy get{forall}def
2 copy currentdict put
end
}
{pop}
ifelse
}
if
get
begin
{def}
forall
end
}bind def
end
end
%%EndResource
currentglobal true setglobal
%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated.
%%Version: 1.23 0
systemdict/languagelevel known dup
{currentglobal false setglobal}
{false}
ifelse
exch
userdict/Adobe_CoolType_Utility 2 copy known
{2 copy get dup maxlength 27 add dict copy}
{27 dict}
ifelse put
Adobe_CoolType_Utility
begin
/@eexecStartData
<BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A>def
/@recognizeCIDFont null def
/ct_Level2? exch def
/ct_Clone? 1183615869 internaldict dup
/CCRun known not
exch/eCCRun known not
ct_Level2? and or def
ct_Level2?
{globaldict begin currentglobal true setglobal}
if
/ct_AddStdCIDMap
ct_Level2?
{{
mark
Adobe_CoolType_Utility/@recognizeCIDFont currentdict put
{
((Hex)57 StartData
0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec
}
stopped
{
cleartomark
Adobe_CoolType_Utility/@recognizeCIDFont get
countdictstack dup array dictstack
exch 1 sub -1 0
{
2 copy get 3 index eq
{1 index length exch sub 1 sub{end}repeat exit}
{pop}
ifelse
}
for
pop pop
Adobe_CoolType_Utility/@eexecStartData get eexec
}
{cleartomark}
ifelse
}}
{{
Adobe_CoolType_Utility/@eexecStartData get eexec
}}
ifelse bind def
userdict/cid_extensions known
dup{cid_extensions/cid_UpdateDB known and}if
{
cid_extensions
begin
/cid_GetCIDSystemInfo
{
1 index type/stringtype eq
{exch cvn exch}
if
cid_extensions
begin
dup load 2 index known
{
2 copy
cid_GetStatusInfo
dup null ne
{
1 index load
3 index get
dup null eq
{pop pop cid_UpdateDB}
{
exch
1 index/Created get eq
{exch pop exch pop}
{pop cid_UpdateDB}
ifelse
}
ifelse
}
{pop cid_UpdateDB}
ifelse
}
{cid_UpdateDB}
ifelse
end
}bind def
end
}
if
ct_Level2?
{end setglobal}
if
/ct_UseNativeCapability? systemdict/composefont known def
/ct_MakeOCF 35 dict def
/ct_Vars 25 dict def
/ct_GlyphDirProcs 6 dict def
/ct_BuildCharDict 15 dict dup
begin
/charcode 2 string def
/dst_string 1500 string def
/nullstring()def
/usewidths? true def
end def
ct_Level2?{setglobal}{pop}ifelse
ct_GlyphDirProcs
begin
/GetGlyphDirectory
{
systemdict/languagelevel known
{pop/CIDFont findresource/GlyphDirectory get}
{
1 index/CIDFont findresource/GlyphDirectory
get dup type/dicttype eq
{
dup dup maxlength exch length sub 2 index lt
{
dup length 2 index add dict copy 2 index
/CIDFont findresource/GlyphDirectory 2 index put
}
if
}
if
exch pop exch pop
}
ifelse
+
}def
/+
{
systemdict/languagelevel known
{
currentglobal false setglobal
3 dict begin
/vm exch def
}
{1 dict begin}
ifelse
/$ exch def
systemdict/languagelevel known
{
vm setglobal
/gvm currentglobal def
$ gcheck setglobal
}
if
?{$ begin}if
}def
/?{$ type/dicttype eq}def
/|{
userdict/Adobe_CoolType_Data known
{
Adobe_CoolType_Data/AddWidths? known
{
currentdict Adobe_CoolType_Data
begin
begin
AddWidths?
{
Adobe_CoolType_Data/CC 3 index put
?{def}{$ 3 1 roll put}ifelse
CC charcode exch 1 index 0 2 index 256 idiv put
1 index exch 1 exch 256 mod put
stringwidth 2 array astore
currentfont/Widths get exch CC exch put
}
{?{def}{$ 3 1 roll put}ifelse}
ifelse
end
end
}
{?{def}{$ 3 1 roll put}ifelse} ifelse
}
{?{def}{$ 3 1 roll put}ifelse}
ifelse
}def
/!
{
?{end}if
systemdict/languagelevel known
{gvm setglobal}
if
end
}def
/:{string currentfile exch readstring pop}executeonly def
end
ct_MakeOCF
begin
/ct_cHexEncoding
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
/ct_CID_STR_SIZE 8000 def
/ct_mkocfStr100 100 string def
/ct_defaultFontMtx[.001 0 0 .001 0 0]def
/ct_1000Mtx[1000 0 0 1000 0 0]def
/ct_raise{exch cvx exch errordict exch get exec stop}bind def
/ct_reraise
{cvx $error/errorname get(Error: )print dup( )cvs print
errordict exch get exec stop
}bind def
/ct_cvnsi
{
1 index add 1 sub 1 exch 0 4 1 roll
{
2 index exch get
exch 8 bitshift
add
}
for
exch pop
}bind def
/ct_GetInterval
{
Adobe_CoolType_Utility/ct_BuildCharDict get
begin
/dst_index 0 def
dup dst_string length gt
{dup string/dst_string exch def}
if
1 index ct_CID_STR_SIZE idiv
/arrayIndex exch def
2 index arrayIndex get
2 index
arrayIndex ct_CID_STR_SIZE mul
sub
{
dup 3 index add 2 index length le
{
2 index getinterval
dst_string dst_index 2 index putinterval
length dst_index add/dst_index exch def
exit
}
{
1 index length 1 index sub
dup 4 1 roll
getinterval
dst_string dst_index 2 index putinterval
pop dup dst_index add/dst_index exch def
sub
/arrayIndex arrayIndex 1 add def
2 index dup length arrayIndex gt
{arrayIndex get}
{
pop
exit
}
ifelse
0
}
ifelse
}
loop
pop pop pop
dst_string 0 dst_index getinterval
end
}bind def
ct_Level2?
{
/ct_resourcestatus
currentglobal mark true setglobal
{/unknowninstancename/Category resourcestatus}
stopped
{cleartomark setglobal true}
{cleartomark currentglobal not exch setglobal}
ifelse
{
{
mark 3 1 roll/Category findresource
begin
ct_Vars/vm currentglobal put
({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
{cleartomark false}
{{3 2 roll pop true}{cleartomark false}ifelse}
ifelse
ct_Vars/vm get setglobal
end
}
}
{{resourcestatus}}
ifelse bind def
/CIDFont/Category ct_resourcestatus
{pop pop}
{
currentglobal true setglobal
/Generic/Category findresource
dup length dict copy
dup/InstanceType/dicttype put
/CIDFont exch/Category defineresource pop
setglobal
}
ifelse
ct_UseNativeCapability?
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry(Adobe)def
/Ordering(Identity)def
/Supplement 0 def
end def
/CMapName/Identity-H def
/CMapVersion 1.000 def
/CMapType 1 def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
if
}
{
/ct_Category 2 dict begin
/CIDFont 10 dict def
/ProcSet 2 dict def
currentdict
end
def
/defineresource
{
ct_Category 1 index 2 copy known
{
get
dup dup maxlength exch length eq
{
dup length 10 add dict copy
ct_Category 2 index 2 index put
}
if
3 index 3 index put
pop exch pop
}
{pop pop/defineresource/undefined ct_raise}
ifelse
}bind def
/findresource
{
ct_Category 1 index 2 copy known
{
get
2 index 2 copy known
{get 3 1 roll pop pop}
{pop pop/findresource/undefinedresource ct_raise}
ifelse
}
{pop pop/findresource/undefined ct_raise}
ifelse
}bind def
/resourcestatus
{
ct_Category 1 index 2 copy known
{
get
2 index known
exch pop exch pop
{
0 -1 true
}
{
false
}
ifelse
}
{pop pop/findresource/undefined ct_raise}
ifelse
}bind def
/ct_resourcestatus/resourcestatus load def
}
ifelse
/ct_CIDInit 2 dict
begin
/ct_cidfont_stream_init
{
{
dup(Binary)eq
{
pop
null
currentfile
ct_Level2?
{
{cid_BYTE_COUNT()/SubFileDecode filter}
stopped
{pop pop pop}
if
}
if
/readstring load
exit
}
if
dup(Hex)eq
{
pop
currentfile
ct_Level2?
{
{null exch/ASCIIHexDecode filter/readstring}
stopped
{pop exch pop(>)exch/readhexstring}
if
}
{(>)exch/readhexstring}
ifelse
load
exit
}
if
/StartData/typecheck ct_raise
}
loop
cid_BYTE_COUNT ct_CID_STR_SIZE le
{
2 copy cid_BYTE_COUNT string exch exec
pop
1 array dup
3 -1 roll
0 exch put
}
{
cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi
dup array exch 2 sub 0 exch 1 exch
{
2 copy
5 index
ct_CID_STR_SIZE
string
6 index exec
pop
put
pop
}
for
2 index
cid_BYTE_COUNT ct_CID_STR_SIZE mod string
3 index exec
pop
1 index exch
1 index length 1 sub
exch put
}
ifelse
cid_CIDFONT exch/GlyphData exch put
2 index null eq
{
pop pop pop
}
{
pop/readstring load
1 string exch
{
3 copy exec
pop
dup length 0 eq
{
pop pop pop pop pop
true exit
}
if
4 index
eq
{
pop pop pop pop
false exit
}
if
}
loop
pop
}
ifelse
}bind def
/StartData
{
mark
{
currentdict
dup/FDArray get 0 get/FontMatrix get
0 get 0.001 eq
{
dup/CDevProc known not
{
/CDevProc 1183615869 internaldict/stdCDevProc 2 copy known
{get}
{
pop pop
{pop pop pop pop pop 0 -1000 7 index 2 div 880}
}
ifelse
def
}
if
}
{
/CDevProc
{
pop pop pop pop pop
0
1 cid_temp/cid_CIDFONT get
/FDArray get 0 get
/FontMatrix get 0 get div
7 index 2 div
1 index 0.88 mul
}def
}
ifelse
/cid_temp 15 dict def
cid_temp
begin
/cid_CIDFONT exch def
3 copy pop
dup/cid_BYTE_COUNT exch def 0 gt
{
ct_cidfont_stream_init
FDArray
{
/Private get
dup/SubrMapOffset known
{
begin
/Subrs SubrCount array def
Subrs
SubrMapOffset
SubrCount
SDBytes
ct_Level2?
{
currentdict dup/SubrMapOffset undef
dup/SubrCount undef
/SDBytes undef
}
if
end
/cid_SD_BYTES exch def
/cid_SUBR_COUNT exch def
/cid_SUBR_MAP_OFFSET exch def
/cid_SUBRS exch def
cid_SUBR_COUNT 0 gt
{
GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
0 cid_SD_BYTES ct_cvnsi
0 1 cid_SUBR_COUNT 1 sub
{
exch 1 index
1 add
cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
GlyphData exch cid_SD_BYTES ct_GetInterval
0 cid_SD_BYTES ct_cvnsi
cid_SUBRS 4 2 roll
GlyphData exch
4 index
1 index
sub
ct_GetInterval
dup length string copy put
}
for
pop
}
if
}
{pop}
ifelse
}
forall
}
if
cleartomark pop pop
end
CIDFontName currentdict/CIDFont defineresource pop
end end
}
stopped
{cleartomark/StartData ct_reraise}
if
}bind def
currentdict
end def
/ct_saveCIDInit
{
/CIDInit/ProcSet ct_resourcestatus
{true}
{/CIDInitC/ProcSet ct_resourcestatus}
ifelse
{
pop pop
/CIDInit/ProcSet findresource
ct_UseNativeCapability?
{pop null}
{/CIDInit ct_CIDInit/ProcSet defineresource pop}
ifelse
}
{/CIDInit ct_CIDInit/ProcSet defineresource pop null}
ifelse
ct_Vars exch/ct_oldCIDInit exch put
}bind def
/ct_restoreCIDInit
{
ct_Vars/ct_oldCIDInit get dup null ne
{/CIDInit exch/ProcSet defineresource pop}
{pop}
ifelse
}bind def
/ct_BuildCharSetUp
{
1 index
begin
CIDFont
begin
Adobe_CoolType_Utility/ct_BuildCharDict get
begin
/ct_dfCharCode exch def
/ct_dfDict exch def
CIDFirstByte ct_dfCharCode add
dup CIDCount ge
{pop 0}
if
/cid exch def
{
GlyphDirectory cid 2 copy known
{get}
{pop pop nullstring}
ifelse
dup length FDBytes sub 0 gt
{
dup
FDBytes 0 ne
{0 FDBytes ct_cvnsi}
{pop 0}
ifelse
/fdIndex exch def
dup length FDBytes sub FDBytes exch getinterval
/charstring exch def
exit
}
{
pop
cid 0 eq
{/charstring nullstring def exit}
if
/cid 0 def
}
ifelse
}
loop
}def
/ct_SetCacheDevice
{
0 0 moveto
dup stringwidth
3 -1 roll
true charpath
pathbbox
0 -1000
7 index 2 div 880
setcachedevice2
0 0 moveto
}def
/ct_CloneSetCacheProc
{
1 eq
{
stringwidth
pop -2 div -880
0 -1000 setcharwidth
moveto
}
{
usewidths?
{
currentfont/Widths get cid
2 copy known
{get exch pop aload pop}
{pop pop stringwidth}
ifelse
}
{stringwidth}
ifelse
setcharwidth
0 0 moveto
}
ifelse
}def
/ct_Type3ShowCharString
{
ct_FDDict fdIndex 2 copy known
{get}
{
currentglobal 3 1 roll
1 index gcheck setglobal
ct_Type1FontTemplate dup maxlength dict copy
begin
FDArray fdIndex get
dup/FontMatrix 2 copy known
{get}
{pop pop ct_defaultFontMtx}
ifelse
/FontMatrix exch dup length array copy def
/Private get
/Private exch def
/Widths rootfont/Widths get def
/CharStrings 1 dict dup/.notdef
<d841272cf18f54fc13>dup length string copy put def
currentdict
end
/ct_Type1Font exch definefont
dup 5 1 roll put
setglobal
}
ifelse
dup/CharStrings get 1 index/Encoding get
ct_dfCharCode get charstring put
rootfont/WMode 2 copy known
{get}
{pop pop 0}
ifelse
exch
1000 scalefont setfont
ct_str1 0 ct_dfCharCode put
ct_str1 exch ct_dfSetCacheProc
ct_SyntheticBold
{
currentpoint
ct_str1 show
newpath
moveto
ct_str1 true charpath
ct_StrokeWidth setlinewidth
stroke
}
{ct_str1 show}
ifelse
}def
/ct_Type4ShowCharString
{
ct_dfDict ct_dfCharCode charstring
FDArray fdIndex get
dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not
{ct_1000Mtx matrix concatmatrix concat}
{pop}
ifelse
/Private get
Adobe_CoolType_Utility/ct_Level2? get not
{
ct_dfDict/Private
3 -1 roll
{put}
1183615869 internaldict/superexec get exec
}
if
1183615869 internaldict
Adobe_CoolType_Utility/ct_Level2? get
{1 index}
{3 index/Private get mark 6 1 roll}
ifelse
dup/RunInt known
{/RunInt get}
{pop/CCRun}
ifelse
get exec
Adobe_CoolType_Utility/ct_Level2? get not
{cleartomark}
if
}bind def
/ct_BuildCharIncremental
{
{
Adobe_CoolType_Utility/ct_MakeOCF get begin
ct_BuildCharSetUp
ct_ShowCharString
}
stopped
{stop}
if
end
end
end
end
}bind def
/BaseFontNameStr(BF00)def
/ct_Type1FontTemplate 14 dict
begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]def
/FontBBox [-250 -250 1250 1250]def
/Encoding ct_cHexEncoding def
/PaintType 0 def
currentdict
end def
/BaseFontTemplate 11 dict
begin
/FontMatrix [0.001 0 0 0.001 0 0]def
/FontBBox [-250 -250 1250 1250]def
/Encoding ct_cHexEncoding def
/BuildChar/ct_BuildCharIncremental load def
ct_Clone?
{
/FontType 3 def
/ct_ShowCharString/ct_Type3ShowCharString load def
/ct_dfSetCacheProc/ct_CloneSetCacheProc load def
/ct_SyntheticBold false def
/ct_StrokeWidth 1 def
}
{
/FontType 4 def
/Private 1 dict dup/lenIV 4 put def
/CharStrings 1 dict dup/.notdef<d841272cf18f54fc13>put def
/PaintType 0 def
/ct_ShowCharString/ct_Type4ShowCharString load def
}
ifelse
/ct_str1 1 string def
currentdict
end def
/BaseFontDictSize BaseFontTemplate length 5 add def
/ct_matrixeq
{
true 0 1 5
{
dup 4 index exch get exch 3 index exch get eq and
dup not
{exit}
if
}
for
exch pop exch pop
}bind def
/ct_makeocf
{
15 dict
begin
exch/WMode exch def
exch/FontName exch def
/FontType 0 def
/FMapType 2 def
dup/FontMatrix known
{dup/FontMatrix get/FontMatrix exch def}
{/FontMatrix matrix def}
ifelse
/bfCount 1 index/CIDCount get 256 idiv 1 add
dup 256 gt{pop 256}if def
/Encoding
256 array 0 1 bfCount 1 sub{2 copy dup put pop}for
bfCount 1 255{2 copy bfCount put pop}for
def
/FDepVector bfCount dup 256 lt{1 add}if array def
BaseFontTemplate BaseFontDictSize dict copy
begin
/CIDFont exch def
CIDFont/FontBBox known
{CIDFont/FontBBox get/FontBBox exch def}
if
CIDFont/CDevProc known
{CIDFont/CDevProc get/CDevProc exch def}
if
currentdict
end
BaseFontNameStr 3(0)putinterval
0 1 bfCount dup 256 eq{1 sub}if
{
FDepVector exch
2 index BaseFontDictSize dict copy
begin
dup/CIDFirstByte exch 256 mul def
FontType 3 eq
{/ct_FDDict 2 dict def}
if
currentdict
end
1 index 16
BaseFontNameStr 2 2 getinterval cvrs pop
BaseFontNameStr exch definefont
put
}
for
ct_Clone?
{/Widths 1 index/CIDFont get/GlyphDirectory get length dict def}
if
FontName
currentdict
end
definefont
ct_Clone?
{
gsave
dup 1000 scalefont setfont
ct_BuildCharDict
begin
/usewidths? false def
currentfont/Widths get
begin
exch/CIDFont get/GlyphDirectory get
{
pop
dup charcode exch 1 index 0 2 index 256 idiv put
1 index exch 1 exch 256 mod put
stringwidth 2 array astore def
}
forall
end
/usewidths? true def
end
grestore
}
{exch pop}
ifelse
}bind def
currentglobal true setglobal
/ct_ComposeFont
{
ct_UseNativeCapability?
{
2 index/CMap ct_resourcestatus
{pop pop exch pop}
{
/CIDInit/ProcSet findresource
begin
12 dict
begin
begincmap
/CMapName 3 index def
/CMapVersion 1.000 def
/CMapType 1 def
exch/WMode exch def
/CIDSystemInfo 3 dict dup
begin
/Registry(Adobe)def
/Ordering
CMapName ct_mkocfStr100 cvs
(Adobe-)search
{
pop pop
(-)search
{
dup length string copy
exch pop exch pop
}
{pop(Identity)}
ifelse
}
{pop (Identity)}
ifelse
def
/Supplement 0 def
end def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
composefont
}
{
3 2 roll pop
0 get/CIDFont findresource
ct_makeocf
}
ifelse
}bind def
setglobal
/ct_MakeIdentity
{
ct_UseNativeCapability?
{
1 index/CMap ct_resourcestatus
{pop pop}
{
/CIDInit/ProcSet findresource begin
12 dict begin
begincmap
/CMapName 2 index def
/CMapVersion 1.000 def
/CMapType 1 def
/CIDSystemInfo 3 dict dup
begin
/Registry(Adobe)def
/Ordering
CMapName ct_mkocfStr100 cvs
(Adobe-)search
{
pop pop
(-)search
{dup length string copy exch pop exch pop}
{pop(Identity)}
ifelse
}
{pop(Identity)}
ifelse
def
/Supplement 0 def
end def
1 begincodespacerange
<0000><FFFF>
endcodespacerange
1 begincidrange
<0000><FFFF>0
endcidrange
endcmap
CMapName currentdict/CMap defineresource pop
end
end
}
ifelse
composefont
}
{
exch pop
0 get/CIDFont findresource
ct_makeocf
}
ifelse
}bind def
currentdict readonly pop
end
end
%%EndResource
setglobal
%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated.
%%Version: 1.0 0
userdict/ct_T42Dict 15 dict put
ct_T42Dict begin
/Is2015?
{
version
cvi
2015
ge
}bind def
/AllocGlyphStorage
{
Is2015?
{
pop
}
{
{string}forall
}ifelse
}bind def
/Type42DictBegin
{
25 dict begin
/FontName exch def
/CharStrings 256 dict
begin
/.notdef 0 def
currentdict
end def
/Encoding exch def
/PaintType 0 def
/FontType 42 def
/FontMatrix[1 0 0 1 0 0]def
4 array astore cvx/FontBBox exch def
/sfnts
}bind def
/Type42DictEnd
{
currentdict dup/FontName get exch definefont end
ct_T42Dict exch
dup/FontName get exch put
}bind def
/RD{string currentfile exch readstring pop}executeonly def
/PrepFor2015
{
Is2015?
{
/GlyphDirectory
16
dict def
sfnts 0 get
dup
2 index
(glyx)
putinterval
2 index
(locx)
putinterval
pop
pop
}
{
pop
pop
}ifelse
}bind def
/AddT42Char
{
Is2015?
{
/GlyphDirectory get
begin
def
end
pop
pop
}
{
/sfnts get
4 index
get
3 index
2 index
putinterval
pop
pop
pop
pop
}ifelse
}bind def
/T0AddT42Mtx2
{
/CIDFont findresource/Metrics2 get begin def end
}bind def
end
%%EndResource
currentglobal true setglobal
%%BeginFile: MMFauxFont.prc
%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated.
%%All Rights Reserved.
userdict /ct_EuroDict 10 dict put
ct_EuroDict begin
/ct_CopyFont
{
{ 1 index /FID ne {def} {pop pop} ifelse} forall
} def
/ct_GetGlyphOutline
{
gsave
initmatrix newpath
exch findfont dup
length 1 add dict
begin
ct_CopyFont
/Encoding Encoding dup length array copy
dup
4 -1 roll
0 exch put
def
currentdict
end
/ct_EuroFont exch definefont
1000 scalefont setfont
0 0 moveto
[
<00> stringwidth
<00> false charpath
pathbbox
[
{/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall
grestore
counttomark 8 add
}
def
/ct_MakeGlyphProc
{
] cvx
/ct_PSBuildGlyph cvx
] cvx
} def
/ct_PSBuildGlyph
{
gsave
8 -1 roll pop
7 1 roll
6 -2 roll ct_FontMatrix transform 6 2 roll
4 -2 roll ct_FontMatrix transform 4 2 roll
ct_FontMatrix transform
currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse
dup 9 1 roll
{
currentdict /StrokeWidth 2 copy known
{
get 2 div
0 ct_FontMatrix dtransform pop
5 1 roll
4 -1 roll 4 index sub
4 1 roll
3 -1 roll 4 index sub
3 1 roll
exch 4 index add exch
4 index add
5 -1 roll pop
}
{
pop pop
}
ifelse
}
if
setcachedevice
ct_FontMatrix concat
ct_PSPathOps begin
exec
end
{
currentdict /StrokeWidth 2 copy known
{ get }
{ pop pop 0 }
ifelse
setlinewidth stroke
}
{
fill
}
ifelse
grestore
} def
/ct_PSPathOps 4 dict dup begin
/m {moveto} def
/l {lineto} def
/c {curveto} def
/cp {closepath} def
end
def
/ct_matrix1000 [1000 0 0 1000 0 0] def
/ct_AddGlyphProc
{
2 index findfont dup length 4 add dict
begin
ct_CopyFont
/CharStrings CharStrings dup length 1 add dict copy
begin
3 1 roll def
currentdict
end
def
/ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def
/ct_PSBuildGlyph /ct_PSBuildGlyph load def
/ct_PSPathOps /ct_PSPathOps load def
currentdict
end
definefont pop
}
def
systemdict /languagelevel known
{
/ct_AddGlyphToPrinterFont {
2 copy
ct_GetGlyphOutline 3 add -1 roll restore
ct_MakeGlyphProc
ct_AddGlyphProc
} def
}
{
/ct_AddGlyphToPrinterFont {
pop pop restore
Adobe_CTFauxDict /$$$FONTNAME get
/Euro
Adobe_CTFauxDict /$$$SUBSTITUTEBASE get
ct_EuroDict exch get
ct_AddGlyphProc
} def
} ifelse
/AdobeSansMM
{
556 0 24 -19 541 703
{
541 628 m
510 669 442 703 354 703 c
201 703 117 607 101 444 c
50 444 l
25 372 l
97 372 l
97 301 l
49 301 l
24 229 l
103 229 l
124 67 209 -19 350 -19 c
435 -19 501 25 509 32 c
509 131 l
492 105 417 60 343 60 c
267 60 204 127 197 229 c
406 229 l
430 301 l
191 301 l
191 372 l
455 372 l
479 444 l
194 444 l
201 531 245 624 348 624 c
433 624 484 583 509 534 c
cp
556 0 m
}
ct_PSBuildGlyph
} def
/AdobeSerifMM
{
500 0 10 -12 484 692
{
347 298 m
171 298 l
170 310 170 322 170 335 c
170 362 l
362 362 l
374 403 l
172 403 l
184 580 244 642 308 642 c
380 642 434 574 457 457 c
481 462 l
474 691 l
449 691 l
433 670 429 657 410 657 c
394 657 360 692 299 692 c
204 692 94 604 73 403 c
22 403 l
10 362 l
70 362 l
69 352 69 341 69 330 c
69 319 69 308 70 298 c
22 298 l
10 257 l
73 257 l
97 57 216 -12 295 -12 c
364 -12 427 25 484 123 c
458 142 l
425 101 384 37 316 37 c
256 37 189 84 173 257 c
335 257 l
cp
500 0 m
}
ct_PSBuildGlyph
} def
end
%%EndFile
setglobal
Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
%%BeginResource: procset Adobe_AGM_Image 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
{
-dup 0 get/Pattern eq{
-dup length 1 gt{
-dup dup 1//CheckColorSpace//ResolveA exec
-dup type/nametype ne{
-//SubstitutePDFColorSpaceRec exec
-}if
-1 exch put
-}if
-exit
-}if
-dup 0 get/Indexed eq{
-exit
-}if
-dup 0 get/Separation eq{
-dup dup 2//CheckColorSpace//ResolveA exec
-dup type/nametype ne{
-//SubstitutePDFColorSpaceRec exec
-}if
-2 exch put
-exit
-}if
-dup 0 get/CalGray eq{
-1 get
-dup/Gamma//knownget exec{
-[exch[exch/exp load]cvx dup dup]
-1 index exch/DecodeLMN exch put
-}if
-[exch/CIEBasedA exch]
-exit
-}if
-dup 0 get/CalRGB eq{
-1 get
-dup/Matrix//knownget exec{
-1 index exch/MatrixLMN exch put
-}if
-dup/Gamma//knownget exec{
-aload pop
-[exch/exp load]cvx
-3 1 roll
-[exch/exp load]cvx
-3 1 roll
-[exch/exp load]cvx
-3 1 roll
-3 array astore
-1 index exch/DecodeLMN exch put
-}if
-[exch/CIEBasedABC exch]
-exit
-}if
-dup 0 get/Lab eq{
-1 get
-begin
-currentdict/Range//knownget exec{aload pop}{-100 100 -100 100}ifelse
-0 100 6 2 roll 6 array astore
-/RangeABC exch def
-/DecodeABC[{16 add 116 div}bind{500 div}bind{200 div}bind]def
-/MatrixABC[1 1 1 1 0 0 0 0 -1]def
-{dup 6 29 div ge{dup dup mul mul}{4 29 div sub 108 841 div mul}ifelse}
-/DecodeLMN[
-[3 index aload pop WhitePoint 0 get/mul load]cvx
-[4 index aload pop WhitePoint 1 get/mul load]cvx
-[5 index aload pop WhitePoint 2 get/mul load]cvx
-]def pop
-//PDFR_DEBUG{
-(Constructed from Lab <<)=
-currentdict{exch = ==}forall
-(>>)=
-}if
-[/CIEBasedABC currentdict]
-end
-exit
-pop
-}if
-dup 0 get/CIEBasedA eq{exit}if
-dup 0 get/CIEBasedABC eq{exit}if
-mark exch(Unimplemented color space )exch//error exec
-}loop
-}bind def
-//SubstitutePDFColorSpaceRec 0//SubstitutePDFColorSpace put
-/ResolveArrayElement
-{2 copy get
-dup type dup/arraytype eq exch
-/packedarraytype eq or{
-dup length 1 ge exch xcheck and{
-2 copy get
-dup 0 get type/integertype eq
-1 index 1 get type dup/arraytype
-eq exch
-/packedarraytype eq or
-and{
-exec
-2 index 4 1 roll put
-}{
-pop pop
-}ifelse
-}{
-pop
-}ifelse
-}{
-pop pop
-}ifelse
-}bind def
-/ResolveColorSpaceArrayRec
-{0
-exec
-}bind def
-/SetColorSpaceSafe
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Image 71 dict dup begin put
+/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def
+/nd{
+ null def
+}bind def
+/AGMIMG_&image nd
+/AGMIMG_&colorimage nd
+/AGMIMG_&imagemask nd
+/AGMIMG_mbuf()def
+/AGMIMG_ybuf()def
+/AGMIMG_kbuf()def
+/AGMIMG_c 0 def
+/AGMIMG_m 0 def
+/AGMIMG_y 0 def
+/AGMIMG_k 0 def
+/AGMIMG_tmp nd
+/AGMIMG_imagestring0 nd
+/AGMIMG_imagestring1 nd
+/AGMIMG_imagestring2 nd
+/AGMIMG_imagestring3 nd
+/AGMIMG_imagestring4 nd
+/AGMIMG_imagestring5 nd
+/AGMIMG_cnt nd
+/AGMIMG_fsave nd
+/AGMIMG_colorAry nd
+/AGMIMG_override nd
+/AGMIMG_name nd
+/AGMIMG_maskSource nd
+/AGMIMG_flushfilters nd
+/invert_image_samples nd
+/knockout_image_samples nd
+/img nd
+/sepimg nd
+/devnimg nd
+/idximg nd
+/ds
{
-PDFR_DEBUG{
-(SetColorSpaceSafe beg)=
-}if
-currentcolorspace dup type/arraytype eq{
-1 index type/arraytype eq{
-dup length 2 index length eq{
-false exch
-dup length 0 exch 1 exch 1 sub{
-dup
-4 index exch get exch
-2 index exch get
-ne{
-exch pop true exch exit
-}if
-}for
-pop
+ Adobe_AGM_Core begin
+ Adobe_AGM_Image begin
+ /AGMIMG_&image systemdict/image get def
+ /AGMIMG_&imagemask systemdict/imagemask get def
+ /colorimage where{
+ pop
+ /AGMIMG_&colorimage/colorimage ldf
+ }if
+ end
+ end
+}def
+/ps
{
-setcolorspace
-}{
-pop
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-}{
-pop setcolorspace
-}ifelse
-PDFR_DEBUG{
-(SetColorSpaceSafe end)=
-}if
-}bind def
-/ResolveColorSpaceArray
+ Adobe_AGM_Image begin
+ /AGMIMG_ccimage_exists{/customcolorimage where
+ {
+ pop
+ /Adobe_AGM_OnHost_Seps where
+ {
+ pop false
+ }{
+ /Adobe_AGM_InRip_Seps where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }ifelse
+ }{
+ false
+ }ifelse
+ }bdf
+ level2{
+ /invert_image_samples
+ {
+ Adobe_AGM_Image/AGMIMG_tmp Decode length ddf
+ /Decode[Decode 1 get Decode 0 get]def
+ }def
+ /knockout_image_samples
+ {
+ Operator/imagemask ne{
+ /Decode[1 1]def
+ }if
+ }def
+ }{
+ /invert_image_samples
+ {
+ {1 exch sub}currenttransfer addprocs settransfer
+ }def
+ /knockout_image_samples
+ {
+ {pop 1}currenttransfer addprocs settransfer
+ }def
+ }ifelse
+ /img/imageormask ldf
+ /sepimg/sep_imageormask ldf
+ /devnimg/devn_imageormask ldf
+ /idximg/indexed_imageormask ldf
+ /_ctype 7 def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+}def
+/pt
{
-//PDFR_DEBUG{
-(ResolveColorSpaceArray beg )print dup ==
-}if
-dup 0 get/Indexed eq{
-1//ResolveArrayElement exec
-dup dup 1 get
-dup type/arraytype eq{
-//SubstitutePDFColorSpace exec
-//ResolveColorSpaceArrayRec exec
-1 exch put
-}{
-pop pop
-}ifelse
-}if
-dup 0 get/Separation eq{
-dup dup 1 get UnPDFEscape 1 exch put
-3//ResolveArrayElement exec
-dup 3 get//FunctionToProc exec
-2 copy 3 exch put
-pop
-}if
-dup 0 get/Pattern eq{
-dup length 1 gt{dup
-1 get dup type/arraytype eq{
-ResolveColorSpaceArray
-1 index 1 3 -1 roll put
-}{pop}ifelse}if
-}if
-PDFR_DEBUG{
-(Construcrted color space :)=
-dup ==
-}if
-//PDFR_DEBUG{
-(ResolveColorSpaceArray end )print dup ==
-}if
-}bind def
-//ResolveColorSpaceArrayRec 0//ResolveColorSpaceArray put
-/ResolveColorSpace
+ end
+}def
+/dt
{
-//PDFR_DEBUG{
-(ResolveColorSpace beg )print dup =
-}if
-dup//SimpleColorSpaceNames exch known not{
-dup//PDFColorSpaces exch//knownget exec{
-exch pop
-//PDFR_DEBUG{
-(ResolveColorSpace known )=
-}if
-}{
-dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/ColorSpace//DoNothing//ResolveD exec
-exch//CheckColorSpace//ResolveD exec
-dup type/arraytype eq{
-//SubstitutePDFColorSpace exec
-//ResolveColorSpaceArray exec
-dup//PDFColorSpaces 4 2 roll put
-}if
-}ifelse
-}if
-//PDFR_DEBUG{
-(ResolveColorSpace end )print dup ==
-}if
-}bind def
-/CheckPattern
+}def
+/AGMIMG_flushfilters
{
-dup/PatternType//knownget exec{
-dup 1 ne{
-mark(Resource )4 index( is a shading, which can't be handled at level 2. )//error exec
-}if
-pop
-}if
-dup/Type knownget{
-/Pattern ne{
-mark(Resource )4 index( must have /Type/Pattern .)//error exec
-}if
-}if
-}bind def
-/PaintProc
-{/Context get
-//RunDelayedStream exec
-}bind def
-/ResolvePattern
+ dup type/arraytype ne
+ {1 array astore}if
+ dup 0 get currentfile ne
+ {dup 0 get flushfile}if
+ {
+ dup type/filetype eq
+ {
+ dup status 1 index currentfile ne and
+ {closefile}
+ {pop}
+ ifelse
+ }{pop}ifelse
+ }forall
+}def
+/AGMIMG_init_common
{
-dup
-userdict/PDFR_Patterns get
-exch//knownget exec{
-exch pop
-}{
-dup
-//PDFReader/CurrentObject get/Context get/Resources get
-/Pattern//DoNothing//ResolveD exec
-exch//CheckPattern//ResolveD exec
-dup dup/Context exch put
-dup/Resources//DoNothing//ResolveD exec pop
-dup/PaintProc//PaintProc put
-gsave userdict/PDFR_InitialGS get setgstate
-currentglobal exch false setglobal
-dup/Matrix get
-makepattern
-exch setglobal
-grestore
-dup userdict/PDFR_Patterns get
-4 2 roll
-put
-}ifelse
-}bind def
-/SetColor
-{//PDFR_DEBUG{
-(SetColor beg)=
-}if
-currentcolorspace dup type/nametype eq{
-pop setcolor
-}{
-0 get/Pattern eq{
-//ResolvePattern exec setpattern
-}{
-setcolor
-}ifelse
-}ifelse
-//PDFR_DEBUG{
-(SetColor end)=
-}if
-}bind def
-/ImageKeys 15 dict begin
-/BPC/BitsPerComponent def
-/CS/ColorSpace def
-/D/Decode def
-/DP/DecodeParms def
-/F/Filter def
-/H/Height def
-/IM/ImageMask def
-/I/Interpolate def
-/W/Width def
-currentdict end readonly def
-/ImageValues 15 dict begin
-/G/DeviceGray def
-/RGB/DeviceRGB def
-/CMYK/DeviceCMYK def
-/I/Indexed def
-/AHx/ASCIIHexDecode def
-/A85/ASCII85Decode def
-/LZW/LZWDecode def
-/Fl/FlateDecode def
-/RL/RunLengthDecode def
-/CCF/CCITTFaxDecode def
-/DCT/DCTDecode def
-currentdict end readonly def
-/GetColorSpaceRange
-{2 index/ColorSpace get
-dup type/arraytype eq{
-1 get
-}if
-exch//knownget exec{
-exch pop
-}if
-}bind def
-/DecodeArrays 15 dict begin
-/DeviceGray{[0 1]}def
-/DeviceRGB{[0 1 0 1 0 1]}def
-/DeviceCMYK{[0 1 0 1 0 1 0 1]}def
-/Indexed{
-dup/BitsPerComponent get 1 exch bitshift 1 sub[exch 0 exch]
+ currentdict/T known{/ImageType/T ldf currentdict/T undef}if
+ currentdict/W known{/Width/W ldf currentdict/W undef}if
+ currentdict/H known{/Height/H ldf currentdict/H undef}if
+ currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if
+ currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if
+ currentdict/D known{/Decode/D ldf currentdict/D undef}if
+ currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if
+ currentdict/O known{
+ /Operator/O load 1 eq{
+ /imagemask
+ }{
+ /O load 2 eq{
+ /image
+ }{
+ /colorimage
+ }ifelse
+ }ifelse
+ def
+ currentdict/O undef
+ }if
+ currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if
+ currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if
+ currentdict/I known{/Interpolate/I ldf currentdict/I undef}if
+ currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if
+ /DataSource load xcheck not{
+ DataSource type/arraytype eq{
+ DataSource 0 get type/filetype eq{
+ /_Filters DataSource def
+ currentdict/MultipleDataSources known not{
+ /DataSource DataSource dup length 1 sub get def
+ }if
+ }if
+ }if
+ currentdict/MultipleDataSources known not{
+ /MultipleDataSources DataSource type/arraytype eq{
+ DataSource length 1 gt
+ }
+ {false}ifelse def
+ }if
+ }if
+ /NComponents Decode length 2 div def
+ currentdict/SkipImageProc known not{/SkipImageProc{false}def}if
+}bdf
+/imageormask_sys
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ level2{
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ AGMIMG_&imagemask
+ }{
+ BitsPerComponent ImageMatrix/DataSource load
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ cleartomark restore
+ end
}def
-/Separation{[0 1]}def
-/CIEBasedA{[0 1]/RangeA//GetColorSpaceRange exec}def
-/CIEBasedABC{[0 1 0 1 0 1]/RangeABC//GetColorSpaceRange exec}def
-currentdict end readonly def
-/Substitute
-{1 index//knownget exec{
-exch pop
-}if
-}bind def
-/DebugImagePrinting
+/overprint_plate
{
-//PDFR_DEBUG{
-(Image :)=
-dup{exch//=only exec( )print ==
-}forall
-}if
-}bind def
-/CompleteImage
+ currentoverprint{
+ 0 get dup type/nametype eq{
+ dup/DeviceGray eq{
+ pop AGMCORE_black_plate not
+ }{
+ /DeviceCMYK eq{
+ AGMCORE_is_cmyk_sep not
+ }if
+ }ifelse
+ }{
+ false exch
+ {
+ AGMOHS_sepink eq or
+ }forall
+ not
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}def
+/process_mask
{
-dup/ColorSpace known{
-dup/ColorSpace//CheckColorSpace//ResolveD exec pop
-}if
-dup/Decode known not{
-dup/ColorSpace//knownget exec{
-dup type/arraytype eq{
-0 get
-}if
-//DecodeArrays exch get exec
-}{
-[0 1]
-}ifelse
-1 index exch/Decode exch put
-}if
-dup/ImageMatrix[2 index/Width get 0 0 5 index/Height get neg
-0 7 index/Height get]put
-//DebugImagePrinting exec
-}bind def
-/CompleteInlineImage
+ level3{
+ dup begin
+ /ImageType 1 def
+ end
+ 4 dict begin
+ /DataDict exch def
+ /ImageType 3 def
+ /InterleaveType 3 def
+ /MaskDict 9 dict begin
+ /ImageType 1 def
+ /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def
+ /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def
+ /ImageMatrix[Width 0 0 Height neg 0 Height]def
+ /NComponents 1 def
+ /BitsPerComponent 1 def
+ /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def
+ /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def
+ currentdict end def
+ currentdict end
+ }if
+}def
+/use_mask
{
-//PDFR_DEBUG{
-(CompleteInlineImage beg)=
-}if
-dup/ImageType known not{
-dup/ImageType 1 put
-}if
-dup length dict exch{
-exch//ImageKeys//Substitute exec
-dup/Filter eq{
-exch//ImageValues//Substitute exec exch
-}if
-dup/ColorSpace eq{
-exch
-dup//ImageValues exch//knownget exec{
-exch pop
-}{
-//ResolveColorSpace exec
-}ifelse
-exch
-}if
-exch
-2 index 3 1 roll put
-}forall
-//CompleteImage exec
-dup/DataSource 2 copy get
-2 index//AppendFilters exec put
-//PDFR_DEBUG{
-(CompleteInlineImage end)=
-}if
-}bind def
-/CompleteOutlineImage
+ dup/Mask known {dup/Mask get}{false}ifelse
+}def
+/imageormask
{
-currentglobal exch dup gcheck setglobal
-//PDFR_DEBUG{
-(CompleteOutlineImage beg)=
-}if
-dup dup//MakeStreamReader exec/DataSource exch put
-dup/ImageType known not{
-//CompleteImage exec
-dup/ImageType 1 put
-dup/ColorSpace known{
-dup/ColorSpace//CheckColorSpace//ResolveD exec
-dup type/arraytype eq{
-//ResolveColorSpaceArray exec
-//SubstitutePDFColorSpace exec
-1 index exch/ColorSpace exch put
-}{
-pop
-}ifelse
-}if
-}if
-//PDFR_DEBUG{
-(CompleteOutlineImage end)=
-}if
-exch setglobal
-}bind def
-/DoImage
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }
+ {
+ save mark
+ level2 AGMCORE_host_sep not and{
+ currentdict
+ Operator/imagemask eq DeviceN_PS2 not and{
+ imagemask
+ }{
+ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ /Decode[Decode 1 get Decode 0 get]def
+ }if
+ use_mask{
+ process_mask image
+ }{
+ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and
+ {
+ Names convert_to_process not{
+ 2 dict begin
+ /imageDict xdf
+ /names_index 0 def
+ gsave
+ imageDict write_image_file{
+ Names{
+ dup(None)ne{
+ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace
+ Operator imageDict read_image_file
+ names_index 0 eq{true setoverprint}if
+ /names_index names_index 1 add def
+ }{
+ pop
+ }ifelse
+ }forall
+ close_image_file
+ }if
+ grestore
+ end
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ /Adobe_AGM_OnHost_Seps where{
+ pop imagemask
+ }{
+ currentgray 1 ne{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ BitsPerComponent ImageMatrix
+ MultipleDataSources{
+ 0 1 NComponents 1 sub{
+ DataSource exch get
+ }for
+ }{
+ /DataSource load
+ }ifelse
+ Operator/colorimage eq{
+ AGMCORE_host_sep{
+ MultipleDataSources level2 or NComponents 4 eq and{
+ AGMCORE_is_cmyk_sep{
+ MultipleDataSources{
+ /DataSource DataSource 0 get xcheck
+ {
+ [
+ DataSource 0 get/exec cvx
+ DataSource 1 get/exec cvx
+ DataSource 2 get/exec cvx
+ DataSource 3 get/exec cvx
+ /AGMCORE_get_ink_data cvx
+ ]cvx
+ }{
+ DataSource aload pop AGMCORE_get_ink_data
+ }ifelse def
+ }{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ /DataSource load
+ filter_cmyk 0()/SubFileDecode filter def
+ }ifelse
+ /Decode[Decode 0 get Decode 1 get]def
+ /MultipleDataSources false def
+ /NComponents 1 def
+ /Operator/image def
+ invert_image_samples
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }{
+ MultipleDataSources NComponents AGMIMG_&colorimage
+ }ifelse
+ }{
+ true NComponents colorimage
+ }ifelse
+ }{
+ Operator/image eq{
+ AGMCORE_host_sep{
+ /DoImage true def
+ currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse
+ {
+ AGMCORE_black_plate not Operator/imagemask ne and{
+ /DoImage false def
+ currentdict ignoreimagedata
+ }if
+ }if
+ 1 AGMCORE_&setgray
+ DoImage
+ {currentdict imageormask_sys}if
+ }{
+ use_mask{
+ process_mask image
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/knockout eq{
+ pop pop pop pop pop
+ currentcolorspace overprint_plate not{
+ knockout_unitsq
+ }if
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/sep_imageormask
{
-//PDFR_DEBUG{
-(DoImage beg)=
-}if
-gsave
-dup/ColorSpace//knownget exec{setcolorspace}if
-dup/ImageMask//knownget exec not{false}if
-{imagemask}{image}ifelse
-grestore
-//PDFR_DEBUG{
-(DoImage end)=
-}if
-}bind def
-/GSave
+ /sep_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_avoid_L2_sep_space{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ }if
+ AGMIMG_ccimage_exists
+ MappedCSA 0 get/DeviceCMYK eq and
+ currentdict/Components known and
+ Name()ne and
+ Name(All)ne and
+ Operator/image eq and
+ AGMCORE_producing_seps not and
+ level2 not and
+ {
+ Width Height BitsPerComponent ImageMatrix
+ [
+ /DataSource load/exec cvx
+ {
+ 0 1 2 index length 1 sub{
+ 1 index exch
+ 2 copy get 255 xor put
+ }for
+ }/exec cvx
+ ]cvx bind
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Name findcmykcustomcolor
+ customcolorimage
+ }{
+ AGMCORE_producing_seps not{
+ level2{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{
+ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ currentdict imageormask
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask
+ }{
+ sep_imageormask_lev1
+ }ifelse
+ }ifelse
+ }{
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ currentdict/ImageMatrix get concat
+ knockout_unitsq
+ }{
+ currentgray 1 ne{
+ AGMCORE_is_cmyk_sep Name(All)ne and{
+ level2{
+ Name AGMCORE_IsSeparationAProcessColor
+ {
+ Operator/imagemask eq{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor
+ }if
+ }{
+ invert_image_samples
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ [/Separation Name[/DeviceGray]
+ {
+ sep_colorspace_proc AGMCORE_get_ink_data
+ 1 exch sub
+ }bind
+ ]AGMCORE_&setcolorspace
+ /sep_tint AGMCORE_gget AGMCORE_&setcolor
+ }if
+ }ifelse
+ currentdict imageormask_sys
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ sep_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask ne{
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }ifelse
+ }{
+ currentoverprint not Name(All)eq or Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ currentcolorspace 0 get/Separation ne{
+ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ }if
+ currentoverprint
+ MappedCSA 0 get/DeviceCMYK eq and
+ Name AGMCORE_IsSeparationAProcessColor not and
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse
+ Name(All)ne and{
+ imageormask_l2_overprint
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+}def
+/colorSpaceElemCnt
{
-gsave
-//PDFReader/GraphicStateStackPointer get
-dup//GraphicStateStack exch get null eq{
-dup//GraphicStateStack exch//InitialGraphicState length dict put
-}if
-dup//GraphicStateStack exch get
-//GraphicState exch copy pop
-1 add//PDFReader exch/GraphicStateStackPointer exch put
-}bind def
-/GRestore
+ mark currentcolor counttomark dup 2 add 1 roll cleartomark
+}bdf
+/devn_sep_datasource
{
-grestore
-//PDFReader/GraphicStateStackPointer get
-1 sub dup
-//PDFReader exch/GraphicStateStackPointer exch put
-//GraphicStateStack exch get
-//GraphicState copy pop
-}bind def
-/SetFont
-{dup//GraphicState exch/FontSize exch put
-//ResolveAndSetFont exec
-//GraphicState/FontMatrixNonHV currentfont/FontMatrix get 1 get 0 ne put
-}bind def
-/ShowText
-{//GraphicState/TextRenderingMode get 0 eq{
-//GraphicState/WordSpacing get 0
-32
-//GraphicState/CharacterSpacing get 0
-6 5 roll
-//GraphicState/FontMatrixNonHV get{
-[
-7 -2 roll pop
-5 -2 roll pop
-5 -1 roll
+ 1 dict begin
+ /dataSource xdf
+ [
+ 0 1 dataSource length 1 sub{
+ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx
+ /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx
+ }for
+ ]cvx bind
+ end
+}bdf
+/devn_alt_datasource
{
-exch
-pop
-3 index add
-exch 2 index eq{3 index add}if
-4 1 roll
-}
-currentfont/FontMatrix get 0 get 0 ne{
-1 1 index length 1 sub getinterval cvx
-}if
-5 index
-cshow
-pop pop pop]
-xshow
-}{
-awidthshow
-}ifelse
-}{
-//GraphicState/CharacterSpacing get 0 eq
-//GraphicState/FontMatrixNonHV get not and
-//GraphicState/WordSpacing get 0 eq and{
-true charpath
-}{
+ 11 dict begin
+ /convProc xdf
+ /origcolorSpaceElemCnt xdf
+ /origMultipleDataSources xdf
+ /origBitsPerComponent xdf
+ /origDecode xdf
+ /origDataSource xdf
+ /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def
+ /DataSource origMultipleDataSources
+ {
+ [
+ BitsPerComponent 8 idiv origDecode length 2 idiv mul string
+ 0 1 origDecode length 2 idiv 1 sub
+ {
+ dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch
+ origDataSource exch get 0()/SubFileDecode filter
+ BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx
+ }for
+ ]bind cvx
+ }{origDataSource}ifelse 0()/SubFileDecode filter def
+ [
+ origcolorSpaceElemCnt string
+ 0 2 origDecode length 2 sub
+ {
+ dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div
+ 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx
+ }for
+ /convProc load/exec cvx
+ origcolorSpaceElemCnt 1 sub -1 0
+ {
+ /dup cvx 2/add cvx/index cvx
+ 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx
+ }for
+ ]bind cvx 0()/SubFileDecode filter
+ end
+}bdf
+/devn_imageormask
{
-exch
-pop 0
-currentpoint 5 4 roll
-( )dup 0 3 index put true charpath
-5 1 roll
-moveto rmoveto
-//GraphicState/CharacterSpacing get 0 rmoveto
-32 eq{
-//GraphicState/WordSpacing get 0 rmoveto
-}if
-}
-//GraphicState/FontMatrixNonHV get dup not exch{
-pop currentfont/FontMatrix get 0 get 0 ne
-}if{
-1 1 index length 1 sub getinterval cvx
-}if
-exch cshow
-}ifelse
-}ifelse
-}bind def
-/ShowTextBeg
-{//GraphicState/TextRenderingMode get 0 ne{
-currentpoint newpath moveto
-}if
-}bind def
-/ShowTextEnd
-{//GraphicState/TextRenderingMode get
-{dup 1 eq{
-stroke exit
-}if
-dup 2 eq{
-gsave fill grestore stroke exit
-}if
-dup 3 eq{
-currentpoint newpath moveto
-}if
-dup 4 eq{
-gsave fill grestore clip exit
-}if
-dup 5 eq{
-gsave stroke grestore clip exit
-}if
-dup 6 eq{
-gsave fill grestore gsave stroke grestore fill exit
-}if
-dup 7 eq{
-clip exit
-}if
-exit
-}loop
-pop
-}bind def
-/ShowTextWithGlyphPositioning
-{//ShowTextBeg exec
-{dup type/stringtype eq{
-//ShowText exec
-}{
-neg 1000 div//GraphicState/FontSize get mul 0 rmoveto
-}ifelse
-}forall
-//ShowTextEnd exec
-}bind def
-/CheckFont
-{dup/Type get/ExtGState ne{
-mark(Resource )3 index( must have /Type/ExtGState.)//error exec
-}if
-}bind def
-/SetTransfer
+ /devicen_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ 2 dict begin
+ dup
+ /srcDataStrs[3 -1 roll begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi
+ {
+ dup 65535 gt{1 add 2 div cvi}{exit}ifelse
+ }loop
+ string
+ }repeat
+ end]def
+ /dstDataStr srcDataStrs 0 get length string def
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_producing_seps not{
+ level3 not{
+ Operator/imagemask ne{
+ /DataSource[[
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def
+ /MultipleDataSources true def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ }if
+ }if
+ currentdict imageormask
+ }{
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ CSA get_csa_by_name 0 get/DeviceCMYK eq{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ filter_cmyk 0()/SubFileDecode filter def
+ /MultipleDataSources false def
+ /Decode[1 0]def
+ /DeviceGray setcolorspace
+ currentdict imageormask_sys
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate{
+ /DataSource
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ /MultipleDataSources false def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ currentdict imageormask_sys
+ }{
+ gsave
+ knockout_unitsq
+ grestore
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }
+ {
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ Operator/imagemask ne{
+ MultipleDataSources{
+ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def
+ /MultipleDataSources false def
+ }{
+ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def
+ }ifelse
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+ end
+}def
+/imageormask_l2_overprint
{
-//PDFR_DEBUG{(SetTransfer beg )print count =}if
-dup type/arraytype eq 1 index xcheck not and{
-0 4 getinterval aload pop
-setcolortransfer
-}{
-settransfer
-}ifelse
-//PDFR_DEBUG{(SetTransfer end )print count =}if
-}bind def
-/CheckExtGState
-{dup/Type get/ExtGState ne{
-mark(Resource )3 index( must have /Type/ExtGState.)//error exec
-}if
-}bind def
-/CheckHalftone
-{dup/HalftoneType known not{
-mark(Resource )3 index( must have /HalftoneType.)//error exec
-}if
-}bind def
-/ResolveFunction
+ currentdict
+ currentcmykcolor add add add 0 eq{
+ currentdict consumeimagedata
+ }{
+ level3{
+ currentcmykcolor
+ /AGMIMG_k xdf
+ /AGMIMG_y xdf
+ /AGMIMG_m xdf
+ /AGMIMG_c xdf
+ Operator/imagemask eq{
+ [/DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]/DeviceCMYK{}]setcolorspace
+ AGMIMG_c 0 ne{AGMIMG_c}if
+ AGMIMG_m 0 ne{AGMIMG_m}if
+ AGMIMG_y 0 ne{AGMIMG_y}if
+ AGMIMG_k 0 ne{AGMIMG_k}if
+ setcolor
+ }{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ [/Indexed
+ [
+ /DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]
+ /DeviceCMYK{
+ AGMIMG_k 0 eq{0}if
+ AGMIMG_y 0 eq{0 exch}if
+ AGMIMG_m 0 eq{0 3 1 roll}if
+ AGMIMG_c 0 eq{0 4 1 roll}if
+ }
+ ]
+ 255
+ {
+ 255 div
+ mark exch
+ dup dup dup
+ AGMIMG_k 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_y 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_m 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_c 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ counttomark 1 add -1 roll pop
+ }
+ ]setcolorspace
+ }ifelse
+ imageormask_sys
+ }{
+ write_image_file{
+ currentcmykcolor
+ 0 ne{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ gsave
+ /Black
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Yellow/DeviceGray{}]setcolorspace
+ gsave
+ /Yellow
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Magenta/DeviceGray{}]setcolorspace
+ gsave
+ /Magenta
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Cyan/DeviceGray{}]setcolorspace
+ gsave
+ /Cyan
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ close_image_file
+ }{
+ imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+}def
+/indexed_imageormask
{
-//PDFR_DEBUG{(ResolveFunction beg )print dup = count =}if
-2 copy get//IsObjRef exec{
-2 copy//DoNothing//ResolveD exec
-3 copy put pop
-}if
-2 copy get dup type/arraytype eq exch xcheck and not{
-2 copy get
-dup type/arraytype eq 1 index xcheck not and{
-dup length 1 sub -1 0{
-2 copy//DoNothing ResolveA
-dup/Identity eq{
-pop 2 copy{}put
-}{
-//FunctionToProc exec
-3 copy put pop
-}ifelse
-pop
-}for
-}{
-dup/Default eq{
-}{
-dup/Identity eq{
-pop{}
-}{dup type/nametype eq{
-//spotfunctions exch get
-}{
-//FunctionToProc exec
-}ifelse
-}ifelse
-}ifelse
-}ifelse
-3 copy put
-exch pop
-}{
-1 index exch get
-}ifelse
-//PDFR_DEBUG{(ResolveFunction end )print dup == count =}if
-}bind def
-/ResolveFunctionSafe
-{2 copy known{
-//ResolveFunction exec
-}if
-pop
-}bind def
-/CreateHalftoneThresholds
+ begin
+ AGMIMG_init_common
+ save mark
+ currentdict
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{
+ /CSA get get_csa_by_name
+ }{
+ /Names get
+ }ifelse
+ overprint_plate not{
+ knockout_unitsq
+ }if
+ }{
+ Indexed_DeviceN{
+ /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{
+ indexed_image_lev2_sep
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }{
+ AGMCORE_is_cmyk_sep{
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ level2{
+ indexed_image_lev2_sep
+ }{
+ indexed_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ level2{
+ Indexed_DeviceN{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ }{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne
+ {
+ begin
+ currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse
+ get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and
+ AGMCORE_in_rip_sep and{
+ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup]
+ setcolorspace
+ }if
+ end
+ }
+ {pop}ifelse
+ }ifelse
+ imageormask
+ Indexed_DeviceN{
+ end
+ }if
+ }{
+ Operator/imagemask eq{
+ imageormask
+ }{
+ indexed_imageormask_lev1
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/indexed_image_lev2_sep
{
-dup/Thresholds known not{
-dup/HalftoneType get 10 eq{
-dup dup//MakeStreamReader exec
-/Thresholds exch put
-}if
-dup/HalftoneType get dup 3 eq exch 6 eq or{
-dup dup//MakeStreamReader exec
-//BlockBuffer readstring pop
-dup length
-dup 0 eq{
-mark(Could not read Thresholds)//error exec
-}if
-string copy/Thresholds exch put
-dup/HalftoneType 3 put
-}if
-}if
-}bind def
-/SetExtGState
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ Indexed_DeviceN not{
+ currentcolorspace
+ dup 1/DeviceGray put
+ dup 3
+ currentcolorspace 2 get 1 add string
+ 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub
+ {
+ dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put
+ }for
+ put setcolorspace
+ }if
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ end end
+}def
+ /OPIimage
+ {
+ dup type/dicttype ne{
+ 10 dict begin
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /ImageType 1 def
+ /Decode[0 1 def]
+ currentdict
+ end
+ }if
+ dup begin
+ /NComponents 1 cdndf
+ /MultipleDataSources false cdndf
+ /SkipImageProc{false}cdndf
+ /Decode[
+ 0
+ currentcolorspace 0 get/Indexed eq{
+ 2 BitsPerComponent exp 1 sub
+ }{
+ 1
+ }ifelse
+ ]cdndf
+ /Operator/image cdndf
+ end
+ /sep_colorspace_dict AGMCORE_gget null eq{
+ imageormask
+ }{
+ gsave
+ dup begin invert_image_samples end
+ sep_imageormask
+ grestore
+ }ifelse
+ }def
+/cachemask_level2
{
-//PDFReader/CurrentObject get/Context get/Resources get
-/ExtGState//DoNothing//ResolveD exec
-exch//CheckExtGState//ResolveD exec
-dup/LW//knownget exec{
-setlinewidth
-}if
-dup/LC//knownget exec{
-setlinecap
-}if
-dup/LJ//knownget exec{
-setlinejoin
-}if
-dup/ML//knownget exec{
-setmeterlimit
-}if
-dup/D//knownget exec{
-setdash
-}if
-dup/RI//knownget exec{
-mark(Unimplemented ExtGState.RI)//error exec
-}if
-dup/OP//knownget exec{
-setoverprint
-}if
-dup/op//knownget exec{
-setoverprint
-}if
-dup/OPM//knownget exec{
-mark(Unimplemented ExtGState.OPM)//error exec
-}if
-dup/Font//knownget exec{
-mark(Unimplemented ExtGState.Font)//error exec
-}if
-dup/BG known{
-/BG//ResolveFunction exec
-setblackgeneration
-}if
-dup/BG2 known{
-/BG2//ResolveFunction exec
-dup/Default eq{
-//InitialExtGState/BG2 get
-}if
-setblackgeneration
-}if
-dup/UCR known{
-/UCR//ResolveFunction exec
-setundercolorremoval
-}if
-dup/UCR2 known{
-/UCR2//ResolveFunction exec
-dup/Default eq{
-//InitialExtGState/UCR2 get
-}if
-setundercolorremoval
-}if
-dup/TR known{
-/TR//ResolveFunction exec
-//SetTransfer exec
-}if
-dup/TR2 known{
-/TR2//ResolveFunction exec
-dup/Default eq{
-pop//InitialExtGState/TR2 get
-aload pop setcolortransfer
-}{
-//SetTransfer exec
-}ifelse
-}if
-dup/HT//knownget exec{
-dup/Default eq{
-pop//InitialExtGState/HT get
-sethalftone
-}{
-//PDFR_DEBUG{(Ht beg)=}if
-pop dup/HT//CheckHalftone//ResolveD exec
-/SpotFunction//ResolveFunctionSafe exec
-/TransferFunction//ResolveFunctionSafe exec
-null exch
-dup/HalftoneType get dup 5 eq exch dup 4 eq exch 2 eq or or{
-dup{
-dup//IsObjRef exec{
-pop
-1 index exch//CheckHalftone ResolveD
-}if
-dup type/dicttype eq{
-dup/SpotFunction//ResolveFunctionSafe exec
-/TransferFunction//ResolveFunctionSafe exec
-//CreateHalftoneThresholds exec
-dup/HalftoneType get 5 gt{
-4 3 roll pop
-dup 4 1 roll
-}if
-}if
-pop pop
-}forall
-}if
-//CreateHalftoneThresholds exec
-//PDFR_DEBUG{
-(HT:)=
-dup{
-1 index/Default eq{
-(Default <<)=
-exch pop
-{exch = ==}forall
-(>>)=
-}{
-exch = ==
-}ifelse
-}forall
-(HT end)= flush
-}if
-exch dup null ne{
-(Warning: Ignoring a halftone with a Level 3 component halftone Type )print dup/HalftoneType get =
-pop pop
-}{
-pop
-dup/HalftoneType get 5 gt{
-(Warning: Ignoring a Level 3 halftone Type )print dup/HalftoneType get =
-pop
-}{
-sethalftone
-}ifelse
-}ifelse
-//PDFR_DEBUG{(HT set)= flush}if
-}ifelse
-}if
-dup/FL//knownget exec{
-setflattness
-}if
-dup/SM//knownget exec{
-setsmoothness
-}if
-dup/SA//knownget exec{
-setstrokeadjust
-}if
-dup/BM//knownget exec{
-mark(Unimplemented ExtGState.BM)//error exec
-}if
-dup/SMask//knownget exec{
-mark(Unimplemented ExtGState.SMask)//error exec
-}if
-dup/CA//knownget exec{
-mark(Unimplemented ExtGState.CA)//error exec
-}if
-dup/ca//knownget exec{
-mark(Unimplemented ExtGState.ca)//error exec
-}if
-dup/AIS//knownget exec{
-mark(Unimplemented ExtGState.AIS)//error exec
-}if
-dup/TK//knownget exec{
-mark(Unimplemented ExtGState.TK)//error exec
-}if
-pop
-}bind def
-/CheckXObject
-{dup/Subtype get dup/Image ne exch dup/Form ne exch/PS ne and and{
-mark(Resource )3 index( must have /Subtype /Image or /Form or /PS.)//error exec
-}if
-}bind def
-/DoXObject
+ 3 dict begin
+ /LZWEncode filter/WriteFilter xdf
+ /readBuffer 256 string def
+ /ReadFilter
+ currentfile
+ 0(%EndMask)/SubFileDecode filter
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+ def
+ {
+ ReadFilter readBuffer readstring exch
+ WriteFilter exch writestring
+ not{exit}if
+ }loop
+ WriteFilter closefile
+ end
+}def
+/spot_alias
{
-//PDFReader/CurrentObject get/Context get/Resources get
-/XObject//DoNothing//ResolveD exec
-exch//CheckXObject//ResolveD exec
-dup/Subtype get
-dup/Image eq{
-pop
-//CompleteOutlineImage exec
-//DoImage exec
-}{
-dup/PS eq{
-PDFR_DEBUG{
-(Executing a PS Xobject)=
-}if
-pop
-//RunDelayedStream exec
-}{
-dup/Form eq{
-pop
-PDFR_DEBUG{
-(Executing a Form XObject)=
-}if
-//PDFReader/CurrentObject get exch
-dup//PDFReader exch<< exch/Context exch >>/CurrentObject exch put
-dup/Matrix get concat
-dup/BBox get aload pop exch 3 index sub exch 2 index sub rectclip
-//RunDelayedStream exec
-//PDFReader exch/CurrentObject exch put
-}{
-mark exch(unimplemented XObject type )exch//error exec
-}ifelse
-}ifelse
-}ifelse
-}bind def
-/Operators 50 dict begin
-/q{//GSave exec}bind def
-/Q{//GRestore exec}bind def
-/cm{//TempMatrix astore concat}bind def
-/i{1 .min setflat}bind def
-/J/setlinecap load def
-/d/setdash load def
-/j/setlinejoin load def
-/w/setlinewidth load def
-/M/setmiterlimit load def
-/gs{SetExtGState}bind def
-/g/setgray load def
-/rg/setrgbcolor load def
-/k/setcmykcolor load def
-/cs{//ResolveColorSpace exec//SetColorSpaceSafe exec
-}bind def
-/sc/setcolor load def
-/scn{//SetColor exec}bind def
-/G/setgray load def
-/RG/setrgbcolor load def
-/K/setcmykcolor load def
-/CS//cs def
-/ri{SetColorRenderingIntent}bind def
-/SC/setcolor load def
-/SCN{//SetColor exec}bind def
-/m/moveto load def
-/l/lineto load def
-/c/curveto load def
-/v{currentpoint 6 2 roll curveto}bind def
-/y{2 copy curveto}bind def
-/re{
-4 2 roll moveto exch dup 0 rlineto 0 3 -1 roll rlineto neg 0 rlineto
-closepath
+ /mapto_sep_imageormask
+ {
+ dup type/dicttype ne{
+ 12 dict begin
+ /ImageType 1 def
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /MultipleDataSources false def
+ }{
+ begin
+ }ifelse
+ /Decode[/customcolor_tint AGMCORE_gget 0]def
+ /Operator/image def
+ /SkipImageProc{false}def
+ currentdict
+ end
+ sep_imageormask
+ }bdf
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_colorAry xddf
+ /customcolor_tint AGMCORE_gget
+ <<
+ /Name AGMIMG_colorAry 4 get
+ /CSA[/DeviceCMYK]
+ /TintMethod/Subtractive
+ /TintProc null
+ /MappedCSA null
+ /NComponents 4
+ /Components[AGMIMG_colorAry aload pop pop]
+ >>
+ setsepcolorspace
+ mapto_sep_imageormask
+ }ndf
+ Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_override false put
+ current_spot_alias{dup 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /customcolor_tint AGMCORE_gget exch setsepcolorspace
+ pop
+ mapto_sep_imageormask
+ true set_spot_alias
+ }{
+ //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec
+ }ifelse
+ }bdf
}def
-/h/closepath load def
-/n/newpath load def
-/S/stroke load def
-/s{closepath stroke}bind def
-/f/fill load def
-/f*/eofill load def
-/B{gsave fill grestore stroke}bind def
-/b{closepath gsave fill grestore stroke}bind def
-/B*{gsave eofill grestore stroke}bind def
-/b*{closepath gsave eofill grestore stroke}bind def
-/W/clip load def
-/W*/eoclip load def
-/sh{
-ResolveShading
-dup/Background known{
-gsave
-dup/ColorSpace get setcolorspace
-dup/Background get aload pop setcolor
-pathbbox
-2 index sub exch 3 index sub exch
-rectfill
-grestore
-}if
-shfill
-}bind def
-/Do{//DoXObject exec}bind def
-/BI{currentglobal false setglobal<<}bind def
-/ID{>>
-dup/DataSource currentfile
-2 index/F//knownget exec{
-/A85 eq{
-0(~>)/SubFileDecode filter
-}if
-}if
-put
-//CompleteInlineImage exec
-exch setglobal
-//DoImage exec
-}bind def
-/EI{}bind def
-/BT{gsave//GraphicState/InitialTextMatrix get currentmatrix pop}bind def
-/ET{grestore}bind def
-/Tc{//GraphicState exch/CharacterSpacing exch put}bind def
-/TL{//GraphicState exch/TextLeading exch put}bind def
-/Tr{//GraphicState exch/TextRenderingMode exch put}bind def
-/Ts{
-mark(Unimplemented SetTextRise)//error exec
-}bind def
-/Tw{//GraphicState exch/WordSpacing exch put}bind def
-/Tz{
-mark(Unimplemented SetHorizontalTextScaling)//error exec
-}bind def
-/Td{translate 0 0 moveto}bind def
-/TD{dup neg//TL exec//Td exec}bind def
-/Tm{//GraphicState/InitialTextMatrix get setmatrix
-//TempMatrix astore concat
-0 0 moveto}bind def
-/T*{0//GraphicState/TextLeading get neg//Td exec}bind def
-/Tj{//ShowTextBeg exec//ShowText exec//ShowTextEnd exec}bind def
-/'{//T* exec//ShowText exec//ShowTextEnd exec}bind def
-/"{3 2 roll//Tw exec exch//Tc exec//' exec}bind def
-/TJ//ShowTextWithGlyphPositioning def
-/Tf//SetFont def
-/d0/setcharwidth load def
-/d1/setcachedevice load def
-/BDC{pop pop}bind def
-/BMC{pop}bind def
-/EMC{}bind def
-/BX{BeginCompatibilitySection}bind def
-/EX{EndCompatibilitySection}bind def
-/DP{DefineMarkedContentPointWithPropertyList}bind def
-/MP{DefineMarkedContentPoint}bind def
-/PS{cvx exec}bind def
-currentdict end def
-//PDFR_STREAM{
-//Operators length dict begin
-//Operators{
-exch dup
-[exch//=only/exec load
-( )/print load
-8 7 roll
-dup type/arraytype eq{
-/exec load
-}if
-( )/print load
-]cvx
-def
-}forall
-currentdict end/Operators exch def
+/snap_to_device
+{
+ 6 dict begin
+ matrix currentmatrix
+ dup 0 get 0 eq 1 index 3 get 0 eq and
+ 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop
+ {
+ 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def
+ 0 0 transform
+ AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ itransform/AGMIMG_llY exch def/AGMIMG_llX exch def
+ 1 1 transform
+ AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ itransform/AGMIMG_urY exch def/AGMIMG_urX exch def
+ [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat
+ }{
+ }ifelse
+ end
+}def
+level2 not{
+ /colorbuf
+ {
+ 0 1 2 index length 1 sub{
+ dup 2 index exch get
+ 255 exch sub
+ 2 index
+ 3 1 roll
+ put
+ }for
+ }def
+ /tint_image_to_color
+ {
+ begin
+ Width Height BitsPerComponent ImageMatrix
+ /DataSource load
+ end
+ Adobe_AGM_Image begin
+ /AGMIMG_mbuf 0 string def
+ /AGMIMG_ybuf 0 string def
+ /AGMIMG_kbuf 0 string def
+ {
+ colorbuf dup length AGMIMG_mbuf length ne
+ {
+ dup length dup dup
+ /AGMIMG_mbuf exch string def
+ /AGMIMG_ybuf exch string def
+ /AGMIMG_kbuf exch string def
+ }if
+ dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop
+ }
+ addprocs
+ {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage
+ end
+ }def
+ /sep_imageormask_lev1
+ {
+ begin
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {
+ 255 mul round cvi GrayLookup exch get
+ }currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{
+ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ currentcolortransfer
+ {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ /sep_image_lev1_sep
+ {
+ begin
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ Components aload pop
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ {AGMIMG_c mul 1 exch sub}
+ {AGMIMG_m mul 1 exch sub}
+ {AGMIMG_y mul 1 exch sub}
+ {AGMIMG_k mul 1 exch sub}
+ }{
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}
+ }ifelse
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end
+ }def
+ /indexed_imageormask_lev1
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ currentdict
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ end end
+ }def
+ /indexed_image_lev1_sep
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end end
+ }def
}if
-/.registerencoding
-{pop pop
-}bind def
-/.defineencoding
-{def
-}bind def
-/.findencoding
-{load
-}bind def
-/currentglobal where
-{pop currentglobal{setglobal}true setglobal}
-{{}}
-ifelse
-/MacRomanEncoding
-StandardEncoding 0 39 getinterval aload pop
-/quotesingle
-StandardEncoding 40 56 getinterval aload pop
-/grave
-StandardEncoding 97 31 getinterval aload pop
-/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
-/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
-/ecircumflex/edieresis/iacute/igrave
-/icircumflex/idieresis/ntilde/oacute
-/ograve/ocircumflex/odieresis/otilde
-/uacute/ugrave/ucircumflex/udieresis
-/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
-/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
-/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
-/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
-/questiondown/exclamdown/logicalnot/.notdef
-/florin/.notdef/.notdef/guillemotleft
-/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe
-/endash/emdash/quotedblleft/quotedblright
-/quoteleft/quoteright/divide/.notdef
-/ydieresis/Ydieresis/fraction/currency
-/guilsinglleft/guilsinglright/fi/fl
-/daggerdbl/periodcentered/quotesinglbase/quotedblbase
-/perthousand/Acircumflex/Ecircumflex/Aacute
-/Edieresis/Egrave/Iacute/Icircumflex
-/Idieresis/Igrave/Oacute/Ocircumflex
-/.notdef/Ograve/Uacute/Ucircumflex
-/Ugrave/dotlessi/circumflex/tilde
-/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
-256 packedarray
-5 1 index .registerencoding
-.defineencoding
-exec
-/AdobeGlyphList mark
-/A 16#0041
-/AE 16#00c6
-/AEacute 16#01fc
-/AEmacron 16#01e2
-/AEsmall 16#f7e6
-/Aacute 16#00c1
-/Aacutesmall 16#f7e1
-/Abreve 16#0102
-/Abreveacute 16#1eae
-/Abrevecyrillic 16#04d0
-/Abrevedotbelow 16#1eb6
-/Abrevegrave 16#1eb0
-/Abrevehookabove 16#1eb2
-/Abrevetilde 16#1eb4
-/Acaron 16#01cd
-/Acircle 16#24b6
-/Acircumflex 16#00c2
-/Acircumflexacute 16#1ea4
-/Acircumflexdotbelow 16#1eac
-/Acircumflexgrave 16#1ea6
-/Acircumflexhookabove 16#1ea8
-/Acircumflexsmall 16#f7e2
-/Acircumflextilde 16#1eaa
-/Acute 16#f6c9
-/Acutesmall 16#f7b4
-/Acyrillic 16#0410
-/Adblgrave 16#0200
-/Adieresis 16#00c4
-/Adieresiscyrillic 16#04d2
-/Adieresismacron 16#01de
-/Adieresissmall 16#f7e4
-/Adotbelow 16#1ea0
-/Adotmacron 16#01e0
-/Agrave 16#00c0
-/Agravesmall 16#f7e0
-/Ahookabove 16#1ea2
-/Aiecyrillic 16#04d4
-/Ainvertedbreve 16#0202
-/Alpha 16#0391
-/Alphatonos 16#0386
-/Amacron 16#0100
-/Amonospace 16#ff21
-/Aogonek 16#0104
-/Aring 16#00c5
-/Aringacute 16#01fa
-/Aringbelow 16#1e00
-/Aringsmall 16#f7e5
-/Asmall 16#f761
-/Atilde 16#00c3
-/Atildesmall 16#f7e3
-/Aybarmenian 16#0531
-/B 16#0042
-/Bcircle 16#24b7
-/Bdotaccent 16#1e02
-/Bdotbelow 16#1e04
-/Becyrillic 16#0411
-/Benarmenian 16#0532
-/Beta 16#0392
-/Bhook 16#0181
-/Blinebelow 16#1e06
-/Bmonospace 16#ff22
-/Brevesmall 16#f6f4
-/Bsmall 16#f762
-/Btopbar 16#0182
-/C 16#0043
-/Caarmenian 16#053e
-/Cacute 16#0106
-/Caron 16#f6ca
-/Caronsmall 16#f6f5
-/Ccaron 16#010c
-/Ccedilla 16#00c7
-/Ccedillaacute 16#1e08
-/Ccedillasmall 16#f7e7
-/Ccircle 16#24b8
-/Ccircumflex 16#0108
-/Cdot 16#010a
-/Cdotaccent 16#010a
-/Cedillasmall 16#f7b8
-/Chaarmenian 16#0549
-/Cheabkhasiancyrillic 16#04bc
-/Checyrillic 16#0427
-/Chedescenderabkhasiancyrillic 16#04be
-/Chedescendercyrillic 16#04b6
-/Chedieresiscyrillic 16#04f4
-/Cheharmenian 16#0543
-/Chekhakassiancyrillic 16#04cb
-/Cheverticalstrokecyrillic 16#04b8
-/Chi 16#03a7
-/Chook 16#0187
-/Circumflexsmall 16#f6f6
-/Cmonospace 16#ff23
-/Coarmenian 16#0551
-/Csmall 16#f763
-/D 16#0044
-/DZ 16#01f1
-/DZcaron 16#01c4
-/Daarmenian 16#0534
-/Dafrican 16#0189
-/Dcaron 16#010e
-/Dcedilla 16#1e10
-/Dcircle 16#24b9
-/Dcircumflexbelow 16#1e12
-/Dcroat 16#0110
-/Ddotaccent 16#1e0a
-/Ddotbelow 16#1e0c
-/Decyrillic 16#0414
-/Deicoptic 16#03ee
-/Delta 16#2206
-/Deltagreek 16#0394
-/Dhook 16#018a
-/Dieresis 16#f6cb
-/DieresisAcute 16#f6cc
-/DieresisGrave 16#f6cd
-/Dieresissmall 16#f7a8
-/Digammagreek 16#03dc
-/Djecyrillic 16#0402
-/Dlinebelow 16#1e0e
-/Dmonospace 16#ff24
-/Dotaccentsmall 16#f6f7
-/Dslash 16#0110
-/Dsmall 16#f764
-/Dtopbar 16#018b
-/Dz 16#01f2
-/Dzcaron 16#01c5
-/Dzeabkhasiancyrillic 16#04e0
-/Dzecyrillic 16#0405
-/Dzhecyrillic 16#040f
-/E 16#0045
-/Eacute 16#00c9
-/Eacutesmall 16#f7e9
-/Ebreve 16#0114
-/Ecaron 16#011a
-/Ecedillabreve 16#1e1c
-/Echarmenian 16#0535
-/Ecircle 16#24ba
-/Ecircumflex 16#00ca
-/Ecircumflexacute 16#1ebe
-/Ecircumflexbelow 16#1e18
-/Ecircumflexdotbelow 16#1ec6
-/Ecircumflexgrave 16#1ec0
-/Ecircumflexhookabove 16#1ec2
-/Ecircumflexsmall 16#f7ea
-/Ecircumflextilde 16#1ec4
-/Ecyrillic 16#0404
-/Edblgrave 16#0204
-/Edieresis 16#00cb
-/Edieresissmall 16#f7eb
-/Edot 16#0116
-/Edotaccent 16#0116
-/Edotbelow 16#1eb8
-/Efcyrillic 16#0424
-/Egrave 16#00c8
-/Egravesmall 16#f7e8
-/Eharmenian 16#0537
-/Ehookabove 16#1eba
-/Eightroman 16#2167
-/Einvertedbreve 16#0206
-/Eiotifiedcyrillic 16#0464
-/Elcyrillic 16#041b
-/Elevenroman 16#216a
-/Emacron 16#0112
-/Emacronacute 16#1e16
-/Emacrongrave 16#1e14
-/Emcyrillic 16#041c
-/Emonospace 16#ff25
-/Encyrillic 16#041d
-/Endescendercyrillic 16#04a2
-/Eng 16#014a
-/Enghecyrillic 16#04a4
-/Enhookcyrillic 16#04c7
-/Eogonek 16#0118
-/Eopen 16#0190
-/Epsilon 16#0395
-/Epsilontonos 16#0388
-/Ercyrillic 16#0420
-/Ereversed 16#018e
-/Ereversedcyrillic 16#042d
-/Escyrillic 16#0421
-/Esdescendercyrillic 16#04aa
-/Esh 16#01a9
-/Esmall 16#f765
-/Eta 16#0397
-/Etarmenian 16#0538
-/Etatonos 16#0389
-/Eth 16#00d0
-/Ethsmall 16#f7f0
-/Etilde 16#1ebc
-/Etildebelow 16#1e1a
-/Euro 16#20ac
-/Ezh 16#01b7
-/Ezhcaron 16#01ee
-/Ezhreversed 16#01b8
-/F 16#0046
-/Fcircle 16#24bb
-/Fdotaccent 16#1e1e
-/Feharmenian 16#0556
-/Feicoptic 16#03e4
-/Fhook 16#0191
-/Fitacyrillic 16#0472
-/Fiveroman 16#2164
-/Fmonospace 16#ff26
-/Fourroman 16#2163
-/Fsmall 16#f766
-/G 16#0047
-/GBsquare 16#3387
-/Gacute 16#01f4
-/Gamma 16#0393
-/Gammaafrican 16#0194
-/Gangiacoptic 16#03ea
-/Gbreve 16#011e
-/Gcaron 16#01e6
-/Gcedilla 16#0122
-/Gcircle 16#24bc
-/Gcircumflex 16#011c
-/Gcommaaccent 16#0122
-/Gdot 16#0120
-/Gdotaccent 16#0120
-/Gecyrillic 16#0413
-/Ghadarmenian 16#0542
-/Ghemiddlehookcyrillic 16#0494
-/Ghestrokecyrillic 16#0492
-/Gheupturncyrillic 16#0490
-/Ghook 16#0193
-/Gimarmenian 16#0533
-/Gjecyrillic 16#0403
-/Gmacron 16#1e20
-/Gmonospace 16#ff27
-/Grave 16#f6ce
-/Gravesmall 16#f760
-/Gsmall 16#f767
-/Gsmallhook 16#029b
-/Gstroke 16#01e4
-/H 16#0048
-/H18533 16#25cf
-/H18543 16#25aa
-/H18551 16#25ab
-/H22073 16#25a1
-/HPsquare 16#33cb
-/Haabkhasiancyrillic 16#04a8
-/Hadescendercyrillic 16#04b2
-/Hardsigncyrillic 16#042a
-/Hbar 16#0126
-/Hbrevebelow 16#1e2a
-/Hcedilla 16#1e28
-/Hcircle 16#24bd
-/Hcircumflex 16#0124
-/Hdieresis 16#1e26
-/Hdotaccent 16#1e22
-/Hdotbelow 16#1e24
-/Hmonospace 16#ff28
-/Hoarmenian 16#0540
-/Horicoptic 16#03e8
-/Hsmall 16#f768
-/Hungarumlaut 16#f6cf
-/Hungarumlautsmall 16#f6f8
-/Hzsquare 16#3390
-/I 16#0049
-/IAcyrillic 16#042f
-/IJ 16#0132
-/IUcyrillic 16#042e
-/Iacute 16#00cd
-/Iacutesmall 16#f7ed
-/Ibreve 16#012c
-/Icaron 16#01cf
-/Icircle 16#24be
-/Icircumflex 16#00ce
-/Icircumflexsmall 16#f7ee
-/Icyrillic 16#0406
-/Idblgrave 16#0208
-/Idieresis 16#00cf
-/Idieresisacute 16#1e2e
-/Idieresiscyrillic 16#04e4
-/Idieresissmall 16#f7ef
-/Idot 16#0130
-/Idotaccent 16#0130
-/Idotbelow 16#1eca
-/Iebrevecyrillic 16#04d6
-/Iecyrillic 16#0415
-/Ifraktur 16#2111
-/Igrave 16#00cc
-/Igravesmall 16#f7ec
-/Ihookabove 16#1ec8
-/Iicyrillic 16#0418
-/Iinvertedbreve 16#020a
-/Iishortcyrillic 16#0419
-/Imacron 16#012a
-/Imacroncyrillic 16#04e2
-/Imonospace 16#ff29
-/Iniarmenian 16#053b
-/Iocyrillic 16#0401
-/Iogonek 16#012e
-/Iota 16#0399
-/Iotaafrican 16#0196
-/Iotadieresis 16#03aa
-/Iotatonos 16#038a
-/Ismall 16#f769
-/Istroke 16#0197
-/Itilde 16#0128
-/Itildebelow 16#1e2c
-/Izhitsacyrillic 16#0474
-/Izhitsadblgravecyrillic 16#0476
-/J 16#004a
-/Jaarmenian 16#0541
-/Jcircle 16#24bf
-/Jcircumflex 16#0134
-/Jecyrillic 16#0408
-/Jheharmenian 16#054b
-/Jmonospace 16#ff2a
-/Jsmall 16#f76a
-/K 16#004b
-/KBsquare 16#3385
-/KKsquare 16#33cd
-/Kabashkircyrillic 16#04a0
-/Kacute 16#1e30
-/Kacyrillic 16#041a
-/Kadescendercyrillic 16#049a
-/Kahookcyrillic 16#04c3
-/Kappa 16#039a
-/Kastrokecyrillic 16#049e
-/Kaverticalstrokecyrillic 16#049c
-/Kcaron 16#01e8
-/Kcedilla 16#0136
-/Kcircle 16#24c0
-/Kcommaaccent 16#0136
-/Kdotbelow 16#1e32
-/Keharmenian 16#0554
-/Kenarmenian 16#053f
-/Khacyrillic 16#0425
-/Kheicoptic 16#03e6
-/Khook 16#0198
-/Kjecyrillic 16#040c
-/Klinebelow 16#1e34
-/Kmonospace 16#ff2b
-/Koppacyrillic 16#0480
-/Koppagreek 16#03de
-/Ksicyrillic 16#046e
-/Ksmall 16#f76b
-/L 16#004c
-/LJ 16#01c7
-/LL 16#f6bf
-/Lacute 16#0139
-/Lambda 16#039b
-/Lcaron 16#013d
-/Lcedilla 16#013b
-/Lcircle 16#24c1
-/Lcircumflexbelow 16#1e3c
-/Lcommaaccent 16#013b
-/Ldot 16#013f
-/Ldotaccent 16#013f
-/Ldotbelow 16#1e36
-/Ldotbelowmacron 16#1e38
-/Liwnarmenian 16#053c
-/Lj 16#01c8
-/Ljecyrillic 16#0409
-/Llinebelow 16#1e3a
-/Lmonospace 16#ff2c
-/Lslash 16#0141
-/Lslashsmall 16#f6f9
-/Lsmall 16#f76c
-/M 16#004d
-/MBsquare 16#3386
-/Macron 16#f6d0
-/Macronsmall 16#f7af
-/Macute 16#1e3e
-/Mcircle 16#24c2
-/Mdotaccent 16#1e40
-/Mdotbelow 16#1e42
-/Menarmenian 16#0544
-/Mmonospace 16#ff2d
-/Msmall 16#f76d
-/Mturned 16#019c
-/Mu 16#039c
-/N 16#004e
-/NJ 16#01ca
-/Nacute 16#0143
-/Ncaron 16#0147
-/Ncedilla 16#0145
-/Ncircle 16#24c3
-/Ncircumflexbelow 16#1e4a
-/Ncommaaccent 16#0145
-/Ndotaccent 16#1e44
-/Ndotbelow 16#1e46
-/Nhookleft 16#019d
-/Nineroman 16#2168
-/Nj 16#01cb
-/Njecyrillic 16#040a
-/Nlinebelow 16#1e48
-/Nmonospace 16#ff2e
-/Nowarmenian 16#0546
-/Nsmall 16#f76e
-/Ntilde 16#00d1
-/Ntildesmall 16#f7f1
-/Nu 16#039d
-/O 16#004f
-/OE 16#0152
-/OEsmall 16#f6fa
-/Oacute 16#00d3
-/Oacutesmall 16#f7f3
-/Obarredcyrillic 16#04e8
-/Obarreddieresiscyrillic 16#04ea
-/Obreve 16#014e
-/Ocaron 16#01d1
-/Ocenteredtilde 16#019f
-/Ocircle 16#24c4
-/Ocircumflex 16#00d4
-/Ocircumflexacute 16#1ed0
-/Ocircumflexdotbelow 16#1ed8
-/Ocircumflexgrave 16#1ed2
-/Ocircumflexhookabove 16#1ed4
-/Ocircumflexsmall 16#f7f4
-/Ocircumflextilde 16#1ed6
-/Ocyrillic 16#041e
-/Odblacute 16#0150
-/Odblgrave 16#020c
-/Odieresis 16#00d6
-/Odieresiscyrillic 16#04e6
-/Odieresissmall 16#f7f6
-/Odotbelow 16#1ecc
-/Ogoneksmall 16#f6fb
-/Ograve 16#00d2
-/Ogravesmall 16#f7f2
-/Oharmenian 16#0555
-/Ohm 16#2126
-/Ohookabove 16#1ece
-/Ohorn 16#01a0
-/Ohornacute 16#1eda
-/Ohorndotbelow 16#1ee2
-/Ohorngrave 16#1edc
-/Ohornhookabove 16#1ede
-/Ohorntilde 16#1ee0
-/Ohungarumlaut 16#0150
-/Oi 16#01a2
-/Oinvertedbreve 16#020e
-/Omacron 16#014c
-/Omacronacute 16#1e52
-/Omacrongrave 16#1e50
-/Omega 16#2126
-/Omegacyrillic 16#0460
-/Omegagreek 16#03a9
-/Omegaroundcyrillic 16#047a
-/Omegatitlocyrillic 16#047c
-/Omegatonos 16#038f
-/Omicron 16#039f
-/Omicrontonos 16#038c
-/Omonospace 16#ff2f
-/Oneroman 16#2160
-/Oogonek 16#01ea
-/Oogonekmacron 16#01ec
-/Oopen 16#0186
-/Oslash 16#00d8
-/Oslashacute 16#01fe
-/Oslashsmall 16#f7f8
-/Osmall 16#f76f
-/Ostrokeacute 16#01fe
-/Otcyrillic 16#047e
-/Otilde 16#00d5
-/Otildeacute 16#1e4c
-/Otildedieresis 16#1e4e
-/Otildesmall 16#f7f5
-/P 16#0050
-/Pacute 16#1e54
-/Pcircle 16#24c5
-/Pdotaccent 16#1e56
-/Pecyrillic 16#041f
-/Peharmenian 16#054a
-/Pemiddlehookcyrillic 16#04a6
-/Phi 16#03a6
-/Phook 16#01a4
-/Pi 16#03a0
-/Piwrarmenian 16#0553
-/Pmonospace 16#ff30
-/Psi 16#03a8
-/Psicyrillic 16#0470
-/Psmall 16#f770
-/Q 16#0051
-/Qcircle 16#24c6
-/Qmonospace 16#ff31
-/Qsmall 16#f771
-/R 16#0052
-/Raarmenian 16#054c
-/Racute 16#0154
-/Rcaron 16#0158
-/Rcedilla 16#0156
-/Rcircle 16#24c7
-/Rcommaaccent 16#0156
-/Rdblgrave 16#0210
-/Rdotaccent 16#1e58
-/Rdotbelow 16#1e5a
-/Rdotbelowmacron 16#1e5c
-/Reharmenian 16#0550
-/Rfraktur 16#211c
-/Rho 16#03a1
-/Ringsmall 16#f6fc
-/Rinvertedbreve 16#0212
-/Rlinebelow 16#1e5e
-/Rmonospace 16#ff32
-/Rsmall 16#f772
-/Rsmallinverted 16#0281
-/Rsmallinvertedsuperior 16#02b6
-/S 16#0053
-/SF010000 16#250c
-/SF020000 16#2514
-/SF030000 16#2510
-/SF040000 16#2518
-/SF050000 16#253c
-/SF060000 16#252c
-/SF070000 16#2534
-/SF080000 16#251c
-/SF090000 16#2524
-/SF100000 16#2500
-/SF110000 16#2502
-/SF190000 16#2561
-/SF200000 16#2562
-/SF210000 16#2556
-/SF220000 16#2555
-/SF230000 16#2563
-/SF240000 16#2551
-/SF250000 16#2557
-/SF260000 16#255d
-/SF270000 16#255c
-/SF280000 16#255b
-/SF360000 16#255e
-/SF370000 16#255f
-/SF380000 16#255a
-/SF390000 16#2554
-/SF400000 16#2569
-/SF410000 16#2566
-/SF420000 16#2560
-/SF430000 16#2550
-/SF440000 16#256c
-/SF450000 16#2567
-/SF460000 16#2568
-/SF470000 16#2564
-/SF480000 16#2565
-/SF490000 16#2559
-/SF500000 16#2558
-/SF510000 16#2552
-/SF520000 16#2553
-/SF530000 16#256b
-/SF540000 16#256a
-/Sacute 16#015a
-/Sacutedotaccent 16#1e64
-/Sampigreek 16#03e0
-/Scaron 16#0160
-/Scarondotaccent 16#1e66
-/Scaronsmall 16#f6fd
-/Scedilla 16#015e
-/Schwa 16#018f
-/Schwacyrillic 16#04d8
-/Schwadieresiscyrillic 16#04da
-/Scircle 16#24c8
-/Scircumflex 16#015c
-/Scommaaccent 16#0218
-/Sdotaccent 16#1e60
-/Sdotbelow 16#1e62
-/Sdotbelowdotaccent 16#1e68
-/Seharmenian 16#054d
-/Sevenroman 16#2166
-/Shaarmenian 16#0547
-/Shacyrillic 16#0428
-/Shchacyrillic 16#0429
-/Sheicoptic 16#03e2
-/Shhacyrillic 16#04ba
-/Shimacoptic 16#03ec
-/Sigma 16#03a3
-/Sixroman 16#2165
-/Smonospace 16#ff33
-/Softsigncyrillic 16#042c
-/Ssmall 16#f773
-/Stigmagreek 16#03da
-/T 16#0054
-/Tau 16#03a4
-/Tbar 16#0166
-/Tcaron 16#0164
-/Tcedilla 16#0162
-/Tcircle 16#24c9
-/Tcircumflexbelow 16#1e70
-/Tcommaaccent 16#0162
-/Tdotaccent 16#1e6a
-/Tdotbelow 16#1e6c
-/Tecyrillic 16#0422
-/Tedescendercyrillic 16#04ac
-/Tenroman 16#2169
-/Tetsecyrillic 16#04b4
-/Theta 16#0398
-/Thook 16#01ac
-/Thorn 16#00de
-/Thornsmall 16#f7fe
-/Threeroman 16#2162
-/Tildesmall 16#f6fe
-/Tiwnarmenian 16#054f
-/Tlinebelow 16#1e6e
-/Tmonospace 16#ff34
-/Toarmenian 16#0539
-/Tonefive 16#01bc
-/Tonesix 16#0184
-/Tonetwo 16#01a7
-/Tretroflexhook 16#01ae
-/Tsecyrillic 16#0426
-/Tshecyrillic 16#040b
-/Tsmall 16#f774
-/Twelveroman 16#216b
-/Tworoman 16#2161
-/U 16#0055
-/Uacute 16#00da
-/Uacutesmall 16#f7fa
-/Ubreve 16#016c
-/Ucaron 16#01d3
-/Ucircle 16#24ca
-/Ucircumflex 16#00db
-/Ucircumflexbelow 16#1e76
-/Ucircumflexsmall 16#f7fb
-/Ucyrillic 16#0423
-/Udblacute 16#0170
-/Udblgrave 16#0214
-/Udieresis 16#00dc
-/Udieresisacute 16#01d7
-/Udieresisbelow 16#1e72
-/Udieresiscaron 16#01d9
-/Udieresiscyrillic 16#04f0
-/Udieresisgrave 16#01db
-/Udieresismacron 16#01d5
-/Udieresissmall 16#f7fc
-/Udotbelow 16#1ee4
-/Ugrave 16#00d9
-/Ugravesmall 16#f7f9
-/Uhookabove 16#1ee6
-/Uhorn 16#01af
-/Uhornacute 16#1ee8
-/Uhorndotbelow 16#1ef0
-/Uhorngrave 16#1eea
-/Uhornhookabove 16#1eec
-/Uhorntilde 16#1eee
-/Uhungarumlaut 16#0170
-/Uhungarumlautcyrillic 16#04f2
-/Uinvertedbreve 16#0216
-/Ukcyrillic 16#0478
-/Umacron 16#016a
-/Umacroncyrillic 16#04ee
-/Umacrondieresis 16#1e7a
-/Umonospace 16#ff35
-/Uogonek 16#0172
-/Upsilon 16#03a5
-/Upsilon1 16#03d2
-/Upsilonacutehooksymbolgreek 16#03d3
-/Upsilonafrican 16#01b1
-/Upsilondieresis 16#03ab
-/Upsilondieresishooksymbolgreek 16#03d4
-/Upsilonhooksymbol 16#03d2
-/Upsilontonos 16#038e
-/Uring 16#016e
-/Ushortcyrillic 16#040e
-/Usmall 16#f775
-/Ustraightcyrillic 16#04ae
-/Ustraightstrokecyrillic 16#04b0
-/Utilde 16#0168
-/Utildeacute 16#1e78
-/Utildebelow 16#1e74
-/V 16#0056
-/Vcircle 16#24cb
-/Vdotbelow 16#1e7e
-/Vecyrillic 16#0412
-/Vewarmenian 16#054e
-/Vhook 16#01b2
-/Vmonospace 16#ff36
-/Voarmenian 16#0548
-/Vsmall 16#f776
-/Vtilde 16#1e7c
-/W 16#0057
-/Wacute 16#1e82
-/Wcircle 16#24cc
-/Wcircumflex 16#0174
-/Wdieresis 16#1e84
-/Wdotaccent 16#1e86
-/Wdotbelow 16#1e88
-/Wgrave 16#1e80
-/Wmonospace 16#ff37
-/Wsmall 16#f777
-/X 16#0058
-/Xcircle 16#24cd
-/Xdieresis 16#1e8c
-/Xdotaccent 16#1e8a
-/Xeharmenian 16#053d
-/Xi 16#039e
-/Xmonospace 16#ff38
-/Xsmall 16#f778
-/Y 16#0059
-/Yacute 16#00dd
-/Yacutesmall 16#f7fd
-/Yatcyrillic 16#0462
-/Ycircle 16#24ce
-/Ycircumflex 16#0176
-/Ydieresis 16#0178
-/Ydieresissmall 16#f7ff
-/Ydotaccent 16#1e8e
-/Ydotbelow 16#1ef4
-/Yericyrillic 16#042b
-/Yerudieresiscyrillic 16#04f8
-/Ygrave 16#1ef2
-/Yhook 16#01b3
-/Yhookabove 16#1ef6
-/Yiarmenian 16#0545
-/Yicyrillic 16#0407
-/Yiwnarmenian 16#0552
-/Ymonospace 16#ff39
-/Ysmall 16#f779
-/Ytilde 16#1ef8
-/Yusbigcyrillic 16#046a
-/Yusbigiotifiedcyrillic 16#046c
-/Yuslittlecyrillic 16#0466
-/Yuslittleiotifiedcyrillic 16#0468
-/Z 16#005a
-/Zaarmenian 16#0536
-/Zacute 16#0179
-/Zcaron 16#017d
-/Zcaronsmall 16#f6ff
-/Zcircle 16#24cf
-/Zcircumflex 16#1e90
-/Zdot 16#017b
-/Zdotaccent 16#017b
-/Zdotbelow 16#1e92
-/Zecyrillic 16#0417
-/Zedescendercyrillic 16#0498
-/Zedieresiscyrillic 16#04de
-/Zeta 16#0396
-/Zhearmenian 16#053a
-/Zhebrevecyrillic 16#04c1
-/Zhecyrillic 16#0416
-/Zhedescendercyrillic 16#0496
-/Zhedieresiscyrillic 16#04dc
-/Zlinebelow 16#1e94
-/Zmonospace 16#ff3a
-/Zsmall 16#f77a
-/Zstroke 16#01b5
-/a 16#0061
-/aabengali 16#0986
-/aacute 16#00e1
-/aadeva 16#0906
-/aagujarati 16#0a86
-/aagurmukhi 16#0a06
-/aamatragurmukhi 16#0a3e
-/aarusquare 16#3303
-/aavowelsignbengali 16#09be
-/aavowelsigndeva 16#093e
-/aavowelsigngujarati 16#0abe
-/abbreviationmarkarmenian 16#055f
-/abbreviationsigndeva 16#0970
-/abengali 16#0985
-/abopomofo 16#311a
-/abreve 16#0103
-/abreveacute 16#1eaf
-/abrevecyrillic 16#04d1
-/abrevedotbelow 16#1eb7
-/abrevegrave 16#1eb1
-/abrevehookabove 16#1eb3
-/abrevetilde 16#1eb5
-/acaron 16#01ce
-/acircle 16#24d0
-/acircumflex 16#00e2
-/acircumflexacute 16#1ea5
-/acircumflexdotbelow 16#1ead
-/acircumflexgrave 16#1ea7
-/acircumflexhookabove 16#1ea9
-/acircumflextilde 16#1eab
-/acute 16#00b4
-/acutebelowcmb 16#0317
-/acutecmb 16#0301
-/acutecomb 16#0301
-/acutedeva 16#0954
-/acutelowmod 16#02cf
-/acutetonecmb 16#0341
-/acyrillic 16#0430
-/adblgrave 16#0201
-/addakgurmukhi 16#0a71
-/adeva 16#0905
-/adieresis 16#00e4
-/adieresiscyrillic 16#04d3
-/adieresismacron 16#01df
-/adotbelow 16#1ea1
-/adotmacron 16#01e1
-/ae 16#00e6
-/aeacute 16#01fd
-/aekorean 16#3150
-/aemacron 16#01e3
-/afii00208 16#2015
-/afii08941 16#20a4
-/afii10017 16#0410
-/afii10018 16#0411
-/afii10019 16#0412
-/afii10020 16#0413
-/afii10021 16#0414
-/afii10022 16#0415
-/afii10023 16#0401
-/afii10024 16#0416
-/afii10025 16#0417
-/afii10026 16#0418
-/afii10027 16#0419
-/afii10028 16#041a
-/afii10029 16#041b
-/afii10030 16#041c
-/afii10031 16#041d
-/afii10032 16#041e
-/afii10033 16#041f
-/afii10034 16#0420
-/afii10035 16#0421
-/afii10036 16#0422
-/afii10037 16#0423
-/afii10038 16#0424
-/afii10039 16#0425
-/afii10040 16#0426
-/afii10041 16#0427
-/afii10042 16#0428
-/afii10043 16#0429
-/afii10044 16#042a
-/afii10045 16#042b
-/afii10046 16#042c
-/afii10047 16#042d
-/afii10048 16#042e
-/afii10049 16#042f
-/afii10050 16#0490
-/afii10051 16#0402
-/afii10052 16#0403
-/afii10053 16#0404
-/afii10054 16#0405
-/afii10055 16#0406
-/afii10056 16#0407
-/afii10057 16#0408
-/afii10058 16#0409
-/afii10059 16#040a
-/afii10060 16#040b
-/afii10061 16#040c
-/afii10062 16#040e
-/afii10063 16#f6c4
-/afii10064 16#f6c5
-/afii10065 16#0430
-/afii10066 16#0431
-/afii10067 16#0432
-/afii10068 16#0433
-/afii10069 16#0434
-/afii10070 16#0435
-/afii10071 16#0451
-/afii10072 16#0436
-/afii10073 16#0437
-/afii10074 16#0438
-/afii10075 16#0439
-/afii10076 16#043a
-/afii10077 16#043b
-/afii10078 16#043c
-/afii10079 16#043d
-/afii10080 16#043e
-/afii10081 16#043f
-/afii10082 16#0440
-/afii10083 16#0441
-/afii10084 16#0442
-/afii10085 16#0443
-/afii10086 16#0444
-/afii10087 16#0445
-/afii10088 16#0446
-/afii10089 16#0447
-/afii10090 16#0448
-/afii10091 16#0449
-/afii10092 16#044a
-/afii10093 16#044b
-/afii10094 16#044c
-/afii10095 16#044d
-/afii10096 16#044e
-/afii10097 16#044f
-/afii10098 16#0491
-/afii10099 16#0452
-/afii10100 16#0453
-/afii10101 16#0454
-/afii10102 16#0455
-/afii10103 16#0456
-/afii10104 16#0457
-/afii10105 16#0458
-/afii10106 16#0459
-/afii10107 16#045a
-/afii10108 16#045b
-/afii10109 16#045c
-/afii10110 16#045e
-/afii10145 16#040f
-/afii10146 16#0462
-/afii10147 16#0472
-/afii10148 16#0474
-/afii10192 16#f6c6
-/afii10193 16#045f
-/afii10194 16#0463
-/afii10195 16#0473
-/afii10196 16#0475
-/afii10831 16#f6c7
-/afii10832 16#f6c8
-/afii10846 16#04d9
-/afii299 16#200e
-/afii300 16#200f
-/afii301 16#200d
-/afii57381 16#066a
-/afii57388 16#060c
-/afii57392 16#0660
-/afii57393 16#0661
-/afii57394 16#0662
-/afii57395 16#0663
-/afii57396 16#0664
-/afii57397 16#0665
-/afii57398 16#0666
-/afii57399 16#0667
-/afii57400 16#0668
-/afii57401 16#0669
-/afii57403 16#061b
-/afii57407 16#061f
-/afii57409 16#0621
-/afii57410 16#0622
-/afii57411 16#0623
-/afii57412 16#0624
-/afii57413 16#0625
-/afii57414 16#0626
-/afii57415 16#0627
-/afii57416 16#0628
-/afii57417 16#0629
-/afii57418 16#062a
-/afii57419 16#062b
-/afii57420 16#062c
-/afii57421 16#062d
-/afii57422 16#062e
-/afii57423 16#062f
-/afii57424 16#0630
-/afii57425 16#0631
-/afii57426 16#0632
-/afii57427 16#0633
-/afii57428 16#0634
-/afii57429 16#0635
-/afii57430 16#0636
-/afii57431 16#0637
-/afii57432 16#0638
-/afii57433 16#0639
-/afii57434 16#063a
-/afii57440 16#0640
-/afii57441 16#0641
-/afii57442 16#0642
-/afii57443 16#0643
-/afii57444 16#0644
-/afii57445 16#0645
-/afii57446 16#0646
-/afii57448 16#0648
-/afii57449 16#0649
-/afii57450 16#064a
-/afii57451 16#064b
-/afii57452 16#064c
-/afii57453 16#064d
-/afii57454 16#064e
-/afii57455 16#064f
-/afii57456 16#0650
-/afii57457 16#0651
-/afii57458 16#0652
-/afii57470 16#0647
-/afii57505 16#06a4
-/afii57506 16#067e
-/afii57507 16#0686
-/afii57508 16#0698
-/afii57509 16#06af
-/afii57511 16#0679
-/afii57512 16#0688
-/afii57513 16#0691
-/afii57514 16#06ba
-/afii57519 16#06d2
-/afii57534 16#06d5
-/afii57636 16#20aa
-/afii57645 16#05be
-/afii57658 16#05c3
-/afii57664 16#05d0
-/afii57665 16#05d1
-/afii57666 16#05d2
-/afii57667 16#05d3
-/afii57668 16#05d4
-/afii57669 16#05d5
-/afii57670 16#05d6
-/afii57671 16#05d7
-/afii57672 16#05d8
-/afii57673 16#05d9
-/afii57674 16#05da
-/afii57675 16#05db
-/afii57676 16#05dc
-/afii57677 16#05dd
-/afii57678 16#05de
-/afii57679 16#05df
-/afii57680 16#05e0
-/afii57681 16#05e1
-/afii57682 16#05e2
-/afii57683 16#05e3
-/afii57684 16#05e4
-/afii57685 16#05e5
-/afii57686 16#05e6
-/afii57687 16#05e7
-/afii57688 16#05e8
-/afii57689 16#05e9
-/afii57690 16#05ea
-/afii57694 16#fb2a
-/afii57695 16#fb2b
-/afii57700 16#fb4b
-/afii57705 16#fb1f
-/afii57716 16#05f0
-/afii57717 16#05f1
-/afii57718 16#05f2
-/afii57723 16#fb35
-/afii57793 16#05b4
-/afii57794 16#05b5
-/afii57795 16#05b6
-/afii57796 16#05bb
-/afii57797 16#05b8
-/afii57798 16#05b7
-/afii57799 16#05b0
-/afii57800 16#05b2
-/afii57801 16#05b1
-/afii57802 16#05b3
-/afii57803 16#05c2
-/afii57804 16#05c1
-/afii57806 16#05b9
-/afii57807 16#05bc
-/afii57839 16#05bd
-/afii57841 16#05bf
-/afii57842 16#05c0
-/afii57929 16#02bc
-/afii61248 16#2105
-/afii61289 16#2113
-/afii61352 16#2116
-/afii61573 16#202c
-/afii61574 16#202d
-/afii61575 16#202e
-/afii61664 16#200c
-/afii63167 16#066d
-/afii64937 16#02bd
-/agrave 16#00e0
-/agujarati 16#0a85
-/agurmukhi 16#0a05
-/ahiragana 16#3042
-/ahookabove 16#1ea3
-/aibengali 16#0990
-/aibopomofo 16#311e
-/aideva 16#0910
-/aiecyrillic 16#04d5
-/aigujarati 16#0a90
-/aigurmukhi 16#0a10
-/aimatragurmukhi 16#0a48
-/ainarabic 16#0639
-/ainfinalarabic 16#feca
-/aininitialarabic 16#fecb
-/ainmedialarabic 16#fecc
-/ainvertedbreve 16#0203
-/aivowelsignbengali 16#09c8
-/aivowelsigndeva 16#0948
-/aivowelsigngujarati 16#0ac8
-/akatakana 16#30a2
-/akatakanahalfwidth 16#ff71
-/akorean 16#314f
-/alef 16#05d0
-/alefarabic 16#0627
-/alefdageshhebrew 16#fb30
-/aleffinalarabic 16#fe8e
-/alefhamzaabovearabic 16#0623
-/alefhamzaabovefinalarabic 16#fe84
-/alefhamzabelowarabic 16#0625
-/alefhamzabelowfinalarabic 16#fe88
-/alefhebrew 16#05d0
-/aleflamedhebrew 16#fb4f
-/alefmaddaabovearabic 16#0622
-/alefmaddaabovefinalarabic 16#fe82
-/alefmaksuraarabic 16#0649
-/alefmaksurafinalarabic 16#fef0
-/alefmaksurainitialarabic 16#fef3
-/alefmaksuramedialarabic 16#fef4
-/alefpatahhebrew 16#fb2e
-/alefqamatshebrew 16#fb2f
-/aleph 16#2135
-/allequal 16#224c
-/alpha 16#03b1
-/alphatonos 16#03ac
-/amacron 16#0101
-/amonospace 16#ff41
-/ampersand 16#0026
-/ampersandmonospace 16#ff06
-/ampersandsmall 16#f726
-/amsquare 16#33c2
-/anbopomofo 16#3122
-/angbopomofo 16#3124
-/angkhankhuthai 16#0e5a
-/angle 16#2220
-/anglebracketleft 16#3008
-/anglebracketleftvertical 16#fe3f
-/anglebracketright 16#3009
-/anglebracketrightvertical 16#fe40
-/angleleft 16#2329
-/angleright 16#232a
-/angstrom 16#212b
-/anoteleia 16#0387
-/anudattadeva 16#0952
-/anusvarabengali 16#0982
-/anusvaradeva 16#0902
-/anusvaragujarati 16#0a82
-/aogonek 16#0105
-/apaatosquare 16#3300
-/aparen 16#249c
-/apostrophearmenian 16#055a
-/apostrophemod 16#02bc
-/apple 16#f8ff
-/approaches 16#2250
-/approxequal 16#2248
-/approxequalorimage 16#2252
-/approximatelyequal 16#2245
-/araeaekorean 16#318e
-/araeakorean 16#318d
-/arc 16#2312
-/arighthalfring 16#1e9a
-/aring 16#00e5
-/aringacute 16#01fb
-/aringbelow 16#1e01
-/arrowboth 16#2194
-/arrowdashdown 16#21e3
-/arrowdashleft 16#21e0
-/arrowdashright 16#21e2
-/arrowdashup 16#21e1
-/arrowdblboth 16#21d4
-/arrowdbldown 16#21d3
-/arrowdblleft 16#21d0
-/arrowdblright 16#21d2
-/arrowdblup 16#21d1
-/arrowdown 16#2193
-/arrowdownleft 16#2199
-/arrowdownright 16#2198
-/arrowdownwhite 16#21e9
-/arrowheaddownmod 16#02c5
-/arrowheadleftmod 16#02c2
-/arrowheadrightmod 16#02c3
-/arrowheadupmod 16#02c4
-/arrowhorizex 16#f8e7
-/arrowleft 16#2190
-/arrowleftdbl 16#21d0
-/arrowleftdblstroke 16#21cd
-/arrowleftoverright 16#21c6
-/arrowleftwhite 16#21e6
-/arrowright 16#2192
-/arrowrightdblstroke 16#21cf
-/arrowrightheavy 16#279e
-/arrowrightoverleft 16#21c4
-/arrowrightwhite 16#21e8
-/arrowtableft 16#21e4
-/arrowtabright 16#21e5
-/arrowup 16#2191
-/arrowupdn 16#2195
-/arrowupdnbse 16#21a8
-/arrowupdownbase 16#21a8
-/arrowupleft 16#2196
-/arrowupleftofdown 16#21c5
-/arrowupright 16#2197
-/arrowupwhite 16#21e7
-/arrowvertex 16#f8e6
-/asciicircum 16#005e
-/asciicircummonospace 16#ff3e
-/asciitilde 16#007e
-/asciitildemonospace 16#ff5e
-/ascript 16#0251
-/ascriptturned 16#0252
-/asmallhiragana 16#3041
-/asmallkatakana 16#30a1
-/asmallkatakanahalfwidth 16#ff67
-/asterisk 16#002a
-/asteriskaltonearabic 16#066d
-/asteriskarabic 16#066d
-/asteriskmath 16#2217
-/asteriskmonospace 16#ff0a
-/asterisksmall 16#fe61
-/asterism 16#2042
-/asuperior 16#f6e9
-/asymptoticallyequal 16#2243
-/at 16#0040
-/atilde 16#00e3
-/atmonospace 16#ff20
-/atsmall 16#fe6b
-/aturned 16#0250
-/aubengali 16#0994
-/aubopomofo 16#3120
-/audeva 16#0914
-/augujarati 16#0a94
-/augurmukhi 16#0a14
-/aulengthmarkbengali 16#09d7
-/aumatragurmukhi 16#0a4c
-/auvowelsignbengali 16#09cc
-/auvowelsigndeva 16#094c
-/auvowelsigngujarati 16#0acc
-/avagrahadeva 16#093d
-/aybarmenian 16#0561
-/ayin 16#05e2
-/ayinaltonehebrew 16#fb20
-/ayinhebrew 16#05e2
-/b 16#0062
-/babengali 16#09ac
-/backslash 16#005c
-/backslashmonospace 16#ff3c
-/badeva 16#092c
-/bagujarati 16#0aac
-/bagurmukhi 16#0a2c
-/bahiragana 16#3070
-/bahtthai 16#0e3f
-/bakatakana 16#30d0
-/bar 16#007c
-/barmonospace 16#ff5c
-/bbopomofo 16#3105
-/bcircle 16#24d1
-/bdotaccent 16#1e03
-/bdotbelow 16#1e05
-/beamedsixteenthnotes 16#266c
-/because 16#2235
-/becyrillic 16#0431
-/beharabic 16#0628
-/behfinalarabic 16#fe90
-/behinitialarabic 16#fe91
-/behiragana 16#3079
-/behmedialarabic 16#fe92
-/behmeeminitialarabic 16#fc9f
-/behmeemisolatedarabic 16#fc08
-/behnoonfinalarabic 16#fc6d
-/bekatakana 16#30d9
-/benarmenian 16#0562
-/bet 16#05d1
-/beta 16#03b2
-/betasymbolgreek 16#03d0
-/betdagesh 16#fb31
-/betdageshhebrew 16#fb31
-/bethebrew 16#05d1
-/betrafehebrew 16#fb4c
-/bhabengali 16#09ad
-/bhadeva 16#092d
-/bhagujarati 16#0aad
-/bhagurmukhi 16#0a2d
-/bhook 16#0253
-/bihiragana 16#3073
-/bikatakana 16#30d3
-/bilabialclick 16#0298
-/bindigurmukhi 16#0a02
-/birusquare 16#3331
-/blackcircle 16#25cf
-/blackdiamond 16#25c6
-/blackdownpointingtriangle 16#25bc
-/blackleftpointingpointer 16#25c4
-/blackleftpointingtriangle 16#25c0
-/blacklenticularbracketleft 16#3010
-/blacklenticularbracketleftvertical 16#fe3b
-/blacklenticularbracketright 16#3011
-/blacklenticularbracketrightvertical 16#fe3c
-/blacklowerlefttriangle 16#25e3
-/blacklowerrighttriangle 16#25e2
-/blackrectangle 16#25ac
-/blackrightpointingpointer 16#25ba
-/blackrightpointingtriangle 16#25b6
-/blacksmallsquare 16#25aa
-/blacksmilingface 16#263b
-/blacksquare 16#25a0
-/blackstar 16#2605
-/blackupperlefttriangle 16#25e4
-/blackupperrighttriangle 16#25e5
-/blackuppointingsmalltriangle 16#25b4
-/blackuppointingtriangle 16#25b2
-/blank 16#2423
-/blinebelow 16#1e07
-/block 16#2588
-/bmonospace 16#ff42
-/bobaimaithai 16#0e1a
-/bohiragana 16#307c
-/bokatakana 16#30dc
-/bparen 16#249d
-/bqsquare 16#33c3
-/braceex 16#f8f4
-/braceleft 16#007b
-/braceleftbt 16#f8f3
-/braceleftmid 16#f8f2
-/braceleftmonospace 16#ff5b
-/braceleftsmall 16#fe5b
-/bracelefttp 16#f8f1
-/braceleftvertical 16#fe37
-/braceright 16#007d
-/bracerightbt 16#f8fe
-/bracerightmid 16#f8fd
-/bracerightmonospace 16#ff5d
-/bracerightsmall 16#fe5c
-/bracerighttp 16#f8fc
-/bracerightvertical 16#fe38
-/bracketleft 16#005b
-/bracketleftbt 16#f8f0
-/bracketleftex 16#f8ef
-/bracketleftmonospace 16#ff3b
-/bracketlefttp 16#f8ee
-/bracketright 16#005d
-/bracketrightbt 16#f8fb
-/bracketrightex 16#f8fa
-/bracketrightmonospace 16#ff3d
-/bracketrighttp 16#f8f9
-/breve 16#02d8
-/brevebelowcmb 16#032e
-/brevecmb 16#0306
-/breveinvertedbelowcmb 16#032f
-/breveinvertedcmb 16#0311
-/breveinverteddoublecmb 16#0361
-/bridgebelowcmb 16#032a
-/bridgeinvertedbelowcmb 16#033a
-/brokenbar 16#00a6
-/bstroke 16#0180
-/bsuperior 16#f6ea
-/btopbar 16#0183
-/buhiragana 16#3076
-/bukatakana 16#30d6
-/bullet 16#2022
-/bulletinverse 16#25d8
-/bulletoperator 16#2219
-/bullseye 16#25ce
-/c 16#0063
-/caarmenian 16#056e
-/cabengali 16#099a
-/cacute 16#0107
-/cadeva 16#091a
-/cagujarati 16#0a9a
-/cagurmukhi 16#0a1a
-/calsquare 16#3388
-/candrabindubengali 16#0981
-/candrabinducmb 16#0310
-/candrabindudeva 16#0901
-/candrabindugujarati 16#0a81
-/capslock 16#21ea
-/careof 16#2105
-/caron 16#02c7
-/caronbelowcmb 16#032c
-/caroncmb 16#030c
-/carriagereturn 16#21b5
-/cbopomofo 16#3118
-/ccaron 16#010d
-/ccedilla 16#00e7
-/ccedillaacute 16#1e09
-/ccircle 16#24d2
-/ccircumflex 16#0109
-/ccurl 16#0255
-/cdot 16#010b
-/cdotaccent 16#010b
-/cdsquare 16#33c5
-/cedilla 16#00b8
-/cedillacmb 16#0327
-/cent 16#00a2
-/centigrade 16#2103
-/centinferior 16#f6df
-/centmonospace 16#ffe0
-/centoldstyle 16#f7a2
-/centsuperior 16#f6e0
-/chaarmenian 16#0579
-/chabengali 16#099b
-/chadeva 16#091b
-/chagujarati 16#0a9b
-/chagurmukhi 16#0a1b
-/chbopomofo 16#3114
-/cheabkhasiancyrillic 16#04bd
-/checkmark 16#2713
-/checyrillic 16#0447
-/chedescenderabkhasiancyrillic 16#04bf
-/chedescendercyrillic 16#04b7
-/chedieresiscyrillic 16#04f5
-/cheharmenian 16#0573
-/chekhakassiancyrillic 16#04cc
-/cheverticalstrokecyrillic 16#04b9
-/chi 16#03c7
-/chieuchacirclekorean 16#3277
-/chieuchaparenkorean 16#3217
-/chieuchcirclekorean 16#3269
-/chieuchkorean 16#314a
-/chieuchparenkorean 16#3209
-/chochangthai 16#0e0a
-/chochanthai 16#0e08
-/chochingthai 16#0e09
-/chochoethai 16#0e0c
-/chook 16#0188
-/cieucacirclekorean 16#3276
-/cieucaparenkorean 16#3216
-/cieuccirclekorean 16#3268
-/cieuckorean 16#3148
-/cieucparenkorean 16#3208
-/cieucuparenkorean 16#321c
-/circle 16#25cb
-/circlemultiply 16#2297
-/circleot 16#2299
-/circleplus 16#2295
-/circlepostalmark 16#3036
-/circlewithlefthalfblack 16#25d0
-/circlewithrighthalfblack 16#25d1
-/circumflex 16#02c6
-/circumflexbelowcmb 16#032d
-/circumflexcmb 16#0302
-/clear 16#2327
-/clickalveolar 16#01c2
-/clickdental 16#01c0
-/clicklateral 16#01c1
-/clickretroflex 16#01c3
-/club 16#2663
-/clubsuitblack 16#2663
-/clubsuitwhite 16#2667
-/cmcubedsquare 16#33a4
-/cmonospace 16#ff43
-/cmsquaredsquare 16#33a0
-/coarmenian 16#0581
-/colon 16#003a
-/colonmonetary 16#20a1
-/colonmonospace 16#ff1a
-/colonsign 16#20a1
-/colonsmall 16#fe55
-/colontriangularhalfmod 16#02d1
-/colontriangularmod 16#02d0
-/comma 16#002c
-/commaabovecmb 16#0313
-/commaaboverightcmb 16#0315
-/commaaccent 16#f6c3
-/commaarabic 16#060c
-/commaarmenian 16#055d
-/commainferior 16#f6e1
-/commamonospace 16#ff0c
-/commareversedabovecmb 16#0314
-/commareversedmod 16#02bd
-/commasmall 16#fe50
-/commasuperior 16#f6e2
-/commaturnedabovecmb 16#0312
-/commaturnedmod 16#02bb
-/compass 16#263c
-/congruent 16#2245
-/contourintegral 16#222e
-/control 16#2303
-/controlACK 16#0006
-/controlBEL 16#0007
-/controlBS 16#0008
-/controlCAN 16#0018
-/controlCR 16#000d
-/controlDC1 16#0011
-/controlDC2 16#0012
-/controlDC3 16#0013
-/controlDC4 16#0014
-/controlDEL 16#007f
-/controlDLE 16#0010
-/controlEM 16#0019
-/controlENQ 16#0005
-/controlEOT 16#0004
-/controlESC 16#001b
-/controlETB 16#0017
-/controlETX 16#0003
-/controlFF 16#000c
-/controlFS 16#001c
-/controlGS 16#001d
-/controlHT 16#0009
-/controlLF 16#000a
-/controlNAK 16#0015
-/controlRS 16#001e
-/controlSI 16#000f
-/controlSO 16#000e
-/controlSOT 16#0002
-/controlSTX 16#0001
-/controlSUB 16#001a
-/controlSYN 16#0016
-/controlUS 16#001f
-/controlVT 16#000b
-/copyright 16#00a9
-/copyrightsans 16#f8e9
-/copyrightserif 16#f6d9
-/cornerbracketleft 16#300c
-/cornerbracketlefthalfwidth 16#ff62
-/cornerbracketleftvertical 16#fe41
-/cornerbracketright 16#300d
-/cornerbracketrighthalfwidth 16#ff63
-/cornerbracketrightvertical 16#fe42
-/corporationsquare 16#337f
-/cosquare 16#33c7
-/coverkgsquare 16#33c6
-/cparen 16#249e
-/cruzeiro 16#20a2
-/cstretched 16#0297
-/curlyand 16#22cf
-/curlyor 16#22ce
-/currency 16#00a4
-/cyrBreve 16#f6d1
-/cyrFlex 16#f6d2
-/cyrbreve 16#f6d4
-/cyrflex 16#f6d5
-/d 16#0064
-/daarmenian 16#0564
-/dabengali 16#09a6
-/dadarabic 16#0636
-/dadeva 16#0926
-/dadfinalarabic 16#febe
-/dadinitialarabic 16#febf
-/dadmedialarabic 16#fec0
-/dagesh 16#05bc
-/dageshhebrew 16#05bc
-/dagger 16#2020
-/daggerdbl 16#2021
-/dagujarati 16#0aa6
-/dagurmukhi 16#0a26
-/dahiragana 16#3060
-/dakatakana 16#30c0
-/dalarabic 16#062f
-/dalet 16#05d3
-/daletdagesh 16#fb33
-/daletdageshhebrew 16#fb33
-/dalethebrew 16#05d3
-/dalfinalarabic 16#feaa
-/dammaarabic 16#064f
-/dammalowarabic 16#064f
-/dammatanaltonearabic 16#064c
-/dammatanarabic 16#064c
-/danda 16#0964
-/dargahebrew 16#05a7
-/dargalefthebrew 16#05a7
-/dasiapneumatacyrilliccmb 16#0485
-/dblGrave 16#f6d3
-/dblanglebracketleft 16#300a
-/dblanglebracketleftvertical 16#fe3d
-/dblanglebracketright 16#300b
-/dblanglebracketrightvertical 16#fe3e
-/dblarchinvertedbelowcmb 16#032b
-/dblarrowleft 16#21d4
-/dblarrowright 16#21d2
-/dbldanda 16#0965
-/dblgrave 16#f6d6
-/dblgravecmb 16#030f
-/dblintegral 16#222c
-/dbllowline 16#2017
-/dbllowlinecmb 16#0333
-/dbloverlinecmb 16#033f
-/dblprimemod 16#02ba
-/dblverticalbar 16#2016
-/dblverticallineabovecmb 16#030e
-/dbopomofo 16#3109
-/dbsquare 16#33c8
-/dcaron 16#010f
-/dcedilla 16#1e11
-/dcircle 16#24d3
-/dcircumflexbelow 16#1e13
-/dcroat 16#0111
-/ddabengali 16#09a1
-/ddadeva 16#0921
-/ddagujarati 16#0aa1
-/ddagurmukhi 16#0a21
-/ddalarabic 16#0688
-/ddalfinalarabic 16#fb89
-/dddhadeva 16#095c
-/ddhabengali 16#09a2
-/ddhadeva 16#0922
-/ddhagujarati 16#0aa2
-/ddhagurmukhi 16#0a22
-/ddotaccent 16#1e0b
-/ddotbelow 16#1e0d
-/decimalseparatorarabic 16#066b
-/decimalseparatorpersian 16#066b
-/decyrillic 16#0434
-/degree 16#00b0
-/dehihebrew 16#05ad
-/dehiragana 16#3067
-/deicoptic 16#03ef
-/dekatakana 16#30c7
-/deleteleft 16#232b
-/deleteright 16#2326
-/delta 16#03b4
-/deltaturned 16#018d
-/denominatorminusonenumeratorbengali 16#09f8
-/dezh 16#02a4
-/dhabengali 16#09a7
-/dhadeva 16#0927
-/dhagujarati 16#0aa7
-/dhagurmukhi 16#0a27
-/dhook 16#0257
-/dialytikatonos 16#0385
-/dialytikatonoscmb 16#0344
-/diamond 16#2666
-/diamondsuitwhite 16#2662
-/dieresis 16#00a8
-/dieresisacute 16#f6d7
-/dieresisbelowcmb 16#0324
-/dieresiscmb 16#0308
-/dieresisgrave 16#f6d8
-/dieresistonos 16#0385
-/dihiragana 16#3062
-/dikatakana 16#30c2
-/dittomark 16#3003
-/divide 16#00f7
-/divides 16#2223
-/divisionslash 16#2215
-/djecyrillic 16#0452
-/dkshade 16#2593
-/dlinebelow 16#1e0f
-/dlsquare 16#3397
-/dmacron 16#0111
-/dmonospace 16#ff44
-/dnblock 16#2584
-/dochadathai 16#0e0e
-/dodekthai 16#0e14
-/dohiragana 16#3069
-/dokatakana 16#30c9
-/dollar 16#0024
-/dollarinferior 16#f6e3
-/dollarmonospace 16#ff04
-/dollaroldstyle 16#f724
-/dollarsmall 16#fe69
-/dollarsuperior 16#f6e4
-/dong 16#20ab
-/dorusquare 16#3326
-/dotaccent 16#02d9
-/dotaccentcmb 16#0307
-/dotbelowcmb 16#0323
-/dotbelowcomb 16#0323
-/dotkatakana 16#30fb
-/dotlessi 16#0131
-/dotlessj 16#f6be
-/dotlessjstrokehook 16#0284
-/dotmath 16#22c5
-/dottedcircle 16#25cc
-/doubleyodpatah 16#fb1f
-/doubleyodpatahhebrew 16#fb1f
-/downtackbelowcmb 16#031e
-/downtackmod 16#02d5
-/dparen 16#249f
-/dsuperior 16#f6eb
-/dtail 16#0256
-/dtopbar 16#018c
-/duhiragana 16#3065
-/dukatakana 16#30c5
-/dz 16#01f3
-/dzaltone 16#02a3
-/dzcaron 16#01c6
-/dzcurl 16#02a5
-/dzeabkhasiancyrillic 16#04e1
-/dzecyrillic 16#0455
-/dzhecyrillic 16#045f
-/e 16#0065
-/eacute 16#00e9
-/earth 16#2641
-/ebengali 16#098f
-/ebopomofo 16#311c
-/ebreve 16#0115
-/ecandradeva 16#090d
-/ecandragujarati 16#0a8d
-/ecandravowelsigndeva 16#0945
-/ecandravowelsigngujarati 16#0ac5
-/ecaron 16#011b
-/ecedillabreve 16#1e1d
-/echarmenian 16#0565
-/echyiwnarmenian 16#0587
-/ecircle 16#24d4
-/ecircumflex 16#00ea
-/ecircumflexacute 16#1ebf
-/ecircumflexbelow 16#1e19
-/ecircumflexdotbelow 16#1ec7
-/ecircumflexgrave 16#1ec1
-/ecircumflexhookabove 16#1ec3
-/ecircumflextilde 16#1ec5
-/ecyrillic 16#0454
-/edblgrave 16#0205
-/edeva 16#090f
-/edieresis 16#00eb
-/edot 16#0117
-/edotaccent 16#0117
-/edotbelow 16#1eb9
-/eegurmukhi 16#0a0f
-/eematragurmukhi 16#0a47
-/efcyrillic 16#0444
-/egrave 16#00e8
-/egujarati 16#0a8f
-/eharmenian 16#0567
-/ehbopomofo 16#311d
-/ehiragana 16#3048
-/ehookabove 16#1ebb
-/eibopomofo 16#311f
-/eight 16#0038
-/eightarabic 16#0668
-/eightbengali 16#09ee
-/eightcircle 16#2467
-/eightcircleinversesansserif 16#2791
-/eightdeva 16#096e
-/eighteencircle 16#2471
-/eighteenparen 16#2485
-/eighteenperiod 16#2499
-/eightgujarati 16#0aee
-/eightgurmukhi 16#0a6e
-/eighthackarabic 16#0668
-/eighthangzhou 16#3028
-/eighthnotebeamed 16#266b
-/eightideographicparen 16#3227
-/eightinferior 16#2088
-/eightmonospace 16#ff18
-/eightoldstyle 16#f738
-/eightparen 16#247b
-/eightperiod 16#248f
-/eightpersian 16#06f8
-/eightroman 16#2177
-/eightsuperior 16#2078
-/eightthai 16#0e58
-/einvertedbreve 16#0207
-/eiotifiedcyrillic 16#0465
-/ekatakana 16#30a8
-/ekatakanahalfwidth 16#ff74
-/ekonkargurmukhi 16#0a74
-/ekorean 16#3154
-/elcyrillic 16#043b
-/element 16#2208
-/elevencircle 16#246a
-/elevenparen 16#247e
-/elevenperiod 16#2492
-/elevenroman 16#217a
-/ellipsis 16#2026
-/ellipsisvertical 16#22ee
-/emacron 16#0113
-/emacronacute 16#1e17
-/emacrongrave 16#1e15
-/emcyrillic 16#043c
-/emdash 16#2014
-/emdashvertical 16#fe31
-/emonospace 16#ff45
-/emphasismarkarmenian 16#055b
-/emptyset 16#2205
-/enbopomofo 16#3123
-/encyrillic 16#043d
-/endash 16#2013
-/endashvertical 16#fe32
-/endescendercyrillic 16#04a3
-/eng 16#014b
-/engbopomofo 16#3125
-/enghecyrillic 16#04a5
-/enhookcyrillic 16#04c8
-/enspace 16#2002
-/eogonek 16#0119
-/eokorean 16#3153
-/eopen 16#025b
-/eopenclosed 16#029a
-/eopenreversed 16#025c
-/eopenreversedclosed 16#025e
-/eopenreversedhook 16#025d
-/eparen 16#24a0
-/epsilon 16#03b5
-/epsilontonos 16#03ad
-/equal 16#003d
-/equalmonospace 16#ff1d
-/equalsmall 16#fe66
-/equalsuperior 16#207c
-/equivalence 16#2261
-/erbopomofo 16#3126
-/ercyrillic 16#0440
-/ereversed 16#0258
-/ereversedcyrillic 16#044d
-/escyrillic 16#0441
-/esdescendercyrillic 16#04ab
-/esh 16#0283
-/eshcurl 16#0286
-/eshortdeva 16#090e
-/eshortvowelsigndeva 16#0946
-/eshreversedloop 16#01aa
-/eshsquatreversed 16#0285
-/esmallhiragana 16#3047
-/esmallkatakana 16#30a7
-/esmallkatakanahalfwidth 16#ff6a
-/estimated 16#212e
-/esuperior 16#f6ec
-/eta 16#03b7
-/etarmenian 16#0568
-/etatonos 16#03ae
-/eth 16#00f0
-/etilde 16#1ebd
-/etildebelow 16#1e1b
-/etnahtafoukhhebrew 16#0591
-/etnahtafoukhlefthebrew 16#0591
-/etnahtahebrew 16#0591
-/etnahtalefthebrew 16#0591
-/eturned 16#01dd
-/eukorean 16#3161
-/euro 16#20ac
-/evowelsignbengali 16#09c7
-/evowelsigndeva 16#0947
-/evowelsigngujarati 16#0ac7
-/exclam 16#0021
-/exclamarmenian 16#055c
-/exclamdbl 16#203c
-/exclamdown 16#00a1
-/exclamdownsmall 16#f7a1
-/exclammonospace 16#ff01
-/exclamsmall 16#f721
-/existential 16#2203
-/ezh 16#0292
-/ezhcaron 16#01ef
-/ezhcurl 16#0293
-/ezhreversed 16#01b9
-/ezhtail 16#01ba
-/f 16#0066
-/fadeva 16#095e
-/fagurmukhi 16#0a5e
-/fahrenheit 16#2109
-/fathaarabic 16#064e
-/fathalowarabic 16#064e
-/fathatanarabic 16#064b
-/fbopomofo 16#3108
-/fcircle 16#24d5
-/fdotaccent 16#1e1f
-/feharabic 16#0641
-/feharmenian 16#0586
-/fehfinalarabic 16#fed2
-/fehinitialarabic 16#fed3
-/fehmedialarabic 16#fed4
-/feicoptic 16#03e5
-/female 16#2640
-/ff 16#fb00
-/ffi 16#fb03
-/ffl 16#fb04
-/fi 16#fb01
-/fifteencircle 16#246e
-/fifteenparen 16#2482
-/fifteenperiod 16#2496
-/figuredash 16#2012
-/filledbox 16#25a0
-/filledrect 16#25ac
-/finalkaf 16#05da
-/finalkafdagesh 16#fb3a
-/finalkafdageshhebrew 16#fb3a
-/finalkafhebrew 16#05da
-/finalmem 16#05dd
-/finalmemhebrew 16#05dd
-/finalnun 16#05df
-/finalnunhebrew 16#05df
-/finalpe 16#05e3
-/finalpehebrew 16#05e3
-/finaltsadi 16#05e5
-/finaltsadihebrew 16#05e5
-/firsttonechinese 16#02c9
-/fisheye 16#25c9
-/fitacyrillic 16#0473
-/five 16#0035
-/fivearabic 16#0665
-/fivebengali 16#09eb
-/fivecircle 16#2464
-/fivecircleinversesansserif 16#278e
-/fivedeva 16#096b
-/fiveeighths 16#215d
-/fivegujarati 16#0aeb
-/fivegurmukhi 16#0a6b
-/fivehackarabic 16#0665
-/fivehangzhou 16#3025
-/fiveideographicparen 16#3224
-/fiveinferior 16#2085
-/fivemonospace 16#ff15
-/fiveoldstyle 16#f735
-/fiveparen 16#2478
-/fiveperiod 16#248c
-/fivepersian 16#06f5
-/fiveroman 16#2174
-/fivesuperior 16#2075
-/fivethai 16#0e55
-/fl 16#fb02
-/florin 16#0192
-/fmonospace 16#ff46
-/fmsquare 16#3399
-/fofanthai 16#0e1f
-/fofathai 16#0e1d
-/fongmanthai 16#0e4f
-/forall 16#2200
-/four 16#0034
-/fourarabic 16#0664
-/fourbengali 16#09ea
-/fourcircle 16#2463
-/fourcircleinversesansserif 16#278d
-/fourdeva 16#096a
-/fourgujarati 16#0aea
-/fourgurmukhi 16#0a6a
-/fourhackarabic 16#0664
-/fourhangzhou 16#3024
-/fourideographicparen 16#3223
-/fourinferior 16#2084
-/fourmonospace 16#ff14
-/fournumeratorbengali 16#09f7
-/fouroldstyle 16#f734
-/fourparen 16#2477
-/fourperiod 16#248b
-/fourpersian 16#06f4
-/fourroman 16#2173
-/foursuperior 16#2074
-/fourteencircle 16#246d
-/fourteenparen 16#2481
-/fourteenperiod 16#2495
-/fourthai 16#0e54
-/fourthtonechinese 16#02cb
-/fparen 16#24a1
-/fraction 16#2044
-/franc 16#20a3
-/g 16#0067
-/gabengali 16#0997
-/gacute 16#01f5
-/gadeva 16#0917
-/gafarabic 16#06af
-/gaffinalarabic 16#fb93
-/gafinitialarabic 16#fb94
-/gafmedialarabic 16#fb95
-/gagujarati 16#0a97
-/gagurmukhi 16#0a17
-/gahiragana 16#304c
-/gakatakana 16#30ac
-/gamma 16#03b3
-/gammalatinsmall 16#0263
-/gammasuperior 16#02e0
-/gangiacoptic 16#03eb
-/gbopomofo 16#310d
-/gbreve 16#011f
-/gcaron 16#01e7
-/gcedilla 16#0123
-/gcircle 16#24d6
-/gcircumflex 16#011d
-/gcommaaccent 16#0123
-/gdot 16#0121
-/gdotaccent 16#0121
-/gecyrillic 16#0433
-/gehiragana 16#3052
-/gekatakana 16#30b2
-/geometricallyequal 16#2251
-/gereshaccenthebrew 16#059c
-/gereshhebrew 16#05f3
-/gereshmuqdamhebrew 16#059d
-/germandbls 16#00df
-/gershayimaccenthebrew 16#059e
-/gershayimhebrew 16#05f4
-/getamark 16#3013
-/ghabengali 16#0998
-/ghadarmenian 16#0572
-/ghadeva 16#0918
-/ghagujarati 16#0a98
-/ghagurmukhi 16#0a18
-/ghainarabic 16#063a
-/ghainfinalarabic 16#fece
-/ghaininitialarabic 16#fecf
-/ghainmedialarabic 16#fed0
-/ghemiddlehookcyrillic 16#0495
-/ghestrokecyrillic 16#0493
-/gheupturncyrillic 16#0491
-/ghhadeva 16#095a
-/ghhagurmukhi 16#0a5a
-/ghook 16#0260
-/ghzsquare 16#3393
-/gihiragana 16#304e
-/gikatakana 16#30ae
-/gimarmenian 16#0563
-/gimel 16#05d2
-/gimeldagesh 16#fb32
-/gimeldageshhebrew 16#fb32
-/gimelhebrew 16#05d2
-/gjecyrillic 16#0453
-/glottalinvertedstroke 16#01be
-/glottalstop 16#0294
-/glottalstopinverted 16#0296
-/glottalstopmod 16#02c0
-/glottalstopreversed 16#0295
-/glottalstopreversedmod 16#02c1
-/glottalstopreversedsuperior 16#02e4
-/glottalstopstroke 16#02a1
-/glottalstopstrokereversed 16#02a2
-/gmacron 16#1e21
-/gmonospace 16#ff47
-/gohiragana 16#3054
-/gokatakana 16#30b4
-/gparen 16#24a2
-/gpasquare 16#33ac
-/gradient 16#2207
-/grave 16#0060
-/gravebelowcmb 16#0316
-/gravecmb 16#0300
-/gravecomb 16#0300
-/gravedeva 16#0953
-/gravelowmod 16#02ce
-/gravemonospace 16#ff40
-/gravetonecmb 16#0340
-/greater 16#003e
-/greaterequal 16#2265
-/greaterequalorless 16#22db
-/greatermonospace 16#ff1e
-/greaterorequivalent 16#2273
-/greaterorless 16#2277
-/greateroverequal 16#2267
-/greatersmall 16#fe65
-/gscript 16#0261
-/gstroke 16#01e5
-/guhiragana 16#3050
-/guillemotleft 16#00ab
-/guillemotright 16#00bb
-/guilsinglleft 16#2039
-/guilsinglright 16#203a
-/gukatakana 16#30b0
-/guramusquare 16#3318
-/gysquare 16#33c9
-/h 16#0068
-/haabkhasiancyrillic 16#04a9
-/haaltonearabic 16#06c1
-/habengali 16#09b9
-/hadescendercyrillic 16#04b3
-/hadeva 16#0939
-/hagujarati 16#0ab9
-/hagurmukhi 16#0a39
-/haharabic 16#062d
-/hahfinalarabic 16#fea2
-/hahinitialarabic 16#fea3
-/hahiragana 16#306f
-/hahmedialarabic 16#fea4
-/haitusquare 16#332a
-/hakatakana 16#30cf
-/hakatakanahalfwidth 16#ff8a
-/halantgurmukhi 16#0a4d
-/hamzaarabic 16#0621
-/hamzalowarabic 16#0621
-/hangulfiller 16#3164
-/hardsigncyrillic 16#044a
-/harpoonleftbarbup 16#21bc
-/harpoonrightbarbup 16#21c0
-/hasquare 16#33ca
-/hatafpatah 16#05b2
-/hatafpatah16 16#05b2
-/hatafpatah23 16#05b2
-/hatafpatah2f 16#05b2
-/hatafpatahhebrew 16#05b2
-/hatafpatahnarrowhebrew 16#05b2
-/hatafpatahquarterhebrew 16#05b2
-/hatafpatahwidehebrew 16#05b2
-/hatafqamats 16#05b3
-/hatafqamats1b 16#05b3
-/hatafqamats28 16#05b3
-/hatafqamats34 16#05b3
-/hatafqamatshebrew 16#05b3
-/hatafqamatsnarrowhebrew 16#05b3
-/hatafqamatsquarterhebrew 16#05b3
-/hatafqamatswidehebrew 16#05b3
-/hatafsegol 16#05b1
-/hatafsegol17 16#05b1
-/hatafsegol24 16#05b1
-/hatafsegol30 16#05b1
-/hatafsegolhebrew 16#05b1
-/hatafsegolnarrowhebrew 16#05b1
-/hatafsegolquarterhebrew 16#05b1
-/hatafsegolwidehebrew 16#05b1
-/hbar 16#0127
-/hbopomofo 16#310f
-/hbrevebelow 16#1e2b
-/hcedilla 16#1e29
-/hcircle 16#24d7
-/hcircumflex 16#0125
-/hdieresis 16#1e27
-/hdotaccent 16#1e23
-/hdotbelow 16#1e25
-/he 16#05d4
-/heart 16#2665
-/heartsuitblack 16#2665
-/heartsuitwhite 16#2661
-/hedagesh 16#fb34
-/hedageshhebrew 16#fb34
-/hehaltonearabic 16#06c1
-/heharabic 16#0647
-/hehebrew 16#05d4
-/hehfinalaltonearabic 16#fba7
-/hehfinalalttwoarabic 16#feea
-/hehfinalarabic 16#feea
-/hehhamzaabovefinalarabic 16#fba5
-/hehhamzaaboveisolatedarabic 16#fba4
-/hehinitialaltonearabic 16#fba8
-/hehinitialarabic 16#feeb
-/hehiragana 16#3078
-/hehmedialaltonearabic 16#fba9
-/hehmedialarabic 16#feec
-/heiseierasquare 16#337b
-/hekatakana 16#30d8
-/hekatakanahalfwidth 16#ff8d
-/hekutaarusquare 16#3336
-/henghook 16#0267
-/herutusquare 16#3339
-/het 16#05d7
-/hethebrew 16#05d7
-/hhook 16#0266
-/hhooksuperior 16#02b1
-/hieuhacirclekorean 16#327b
-/hieuhaparenkorean 16#321b
-/hieuhcirclekorean 16#326d
-/hieuhkorean 16#314e
-/hieuhparenkorean 16#320d
-/hihiragana 16#3072
-/hikatakana 16#30d2
-/hikatakanahalfwidth 16#ff8b
-/hiriq 16#05b4
-/hiriq14 16#05b4
-/hiriq21 16#05b4
-/hiriq2d 16#05b4
-/hiriqhebrew 16#05b4
-/hiriqnarrowhebrew 16#05b4
-/hiriqquarterhebrew 16#05b4
-/hiriqwidehebrew 16#05b4
-/hlinebelow 16#1e96
-/hmonospace 16#ff48
-/hoarmenian 16#0570
-/hohipthai 16#0e2b
-/hohiragana 16#307b
-/hokatakana 16#30db
-/hokatakanahalfwidth 16#ff8e
-/holam 16#05b9
-/holam19 16#05b9
-/holam26 16#05b9
-/holam32 16#05b9
-/holamhebrew 16#05b9
-/holamnarrowhebrew 16#05b9
-/holamquarterhebrew 16#05b9
-/holamwidehebrew 16#05b9
-/honokhukthai 16#0e2e
-/hookabovecomb 16#0309
-/hookcmb 16#0309
-/hookpalatalizedbelowcmb 16#0321
-/hookretroflexbelowcmb 16#0322
-/hoonsquare 16#3342
-/horicoptic 16#03e9
-/horizontalbar 16#2015
-/horncmb 16#031b
-/hotsprings 16#2668
-/house 16#2302
-/hparen 16#24a3
-/hsuperior 16#02b0
-/hturned 16#0265
-/huhiragana 16#3075
-/huiitosquare 16#3333
-/hukatakana 16#30d5
-/hukatakanahalfwidth 16#ff8c
-/hungarumlaut 16#02dd
-/hungarumlautcmb 16#030b
-/hv 16#0195
-/hyphen 16#002d
-/hypheninferior 16#f6e5
-/hyphenmonospace 16#ff0d
-/hyphensmall 16#fe63
-/hyphensuperior 16#f6e6
-/hyphentwo 16#2010
-/i 16#0069
-/iacute 16#00ed
-/iacyrillic 16#044f
-/ibengali 16#0987
-/ibopomofo 16#3127
-/ibreve 16#012d
-/icaron 16#01d0
-/icircle 16#24d8
-/icircumflex 16#00ee
-/icyrillic 16#0456
-/idblgrave 16#0209
-/ideographearthcircle 16#328f
-/ideographfirecircle 16#328b
-/ideographicallianceparen 16#323f
-/ideographiccallparen 16#323a
-/ideographiccentrecircle 16#32a5
-/ideographicclose 16#3006
-/ideographiccomma 16#3001
-/ideographiccommaleft 16#ff64
-/ideographiccongratulationparen 16#3237
-/ideographiccorrectcircle 16#32a3
-/ideographicearthparen 16#322f
-/ideographicenterpriseparen 16#323d
-/ideographicexcellentcircle 16#329d
-/ideographicfestivalparen 16#3240
-/ideographicfinancialcircle 16#3296
-/ideographicfinancialparen 16#3236
-/ideographicfireparen 16#322b
-/ideographichaveparen 16#3232
-/ideographichighcircle 16#32a4
-/ideographiciterationmark 16#3005
-/ideographiclaborcircle 16#3298
-/ideographiclaborparen 16#3238
-/ideographicleftcircle 16#32a7
-/ideographiclowcircle 16#32a6
-/ideographicmedicinecircle 16#32a9
-/ideographicmetalparen 16#322e
-/ideographicmoonparen 16#322a
-/ideographicnameparen 16#3234
-/ideographicperiod 16#3002
-/ideographicprintcircle 16#329e
-/ideographicreachparen 16#3243
-/ideographicrepresentparen 16#3239
-/ideographicresourceparen 16#323e
-/ideographicrightcircle 16#32a8
-/ideographicsecretcircle 16#3299
-/ideographicselfparen 16#3242
-/ideographicsocietyparen 16#3233
-/ideographicspace 16#3000
-/ideographicspecialparen 16#3235
-/ideographicstockparen 16#3231
-/ideographicstudyparen 16#323b
-/ideographicsunparen 16#3230
-/ideographicsuperviseparen 16#323c
-/ideographicwaterparen 16#322c
-/ideographicwoodparen 16#322d
-/ideographiczero 16#3007
-/ideographmetalcircle 16#328e
-/ideographmooncircle 16#328a
-/ideographnamecircle 16#3294
-/ideographsuncircle 16#3290
-/ideographwatercircle 16#328c
-/ideographwoodcircle 16#328d
-/ideva 16#0907
-/idieresis 16#00ef
-/idieresisacute 16#1e2f
-/idieresiscyrillic 16#04e5
-/idotbelow 16#1ecb
-/iebrevecyrillic 16#04d7
-/iecyrillic 16#0435
-/ieungacirclekorean 16#3275
-/ieungaparenkorean 16#3215
-/ieungcirclekorean 16#3267
-/ieungkorean 16#3147
-/ieungparenkorean 16#3207
-/igrave 16#00ec
-/igujarati 16#0a87
-/igurmukhi 16#0a07
-/ihiragana 16#3044
-/ihookabove 16#1ec9
-/iibengali 16#0988
-/iicyrillic 16#0438
-/iideva 16#0908
-/iigujarati 16#0a88
-/iigurmukhi 16#0a08
-/iimatragurmukhi 16#0a40
-/iinvertedbreve 16#020b
-/iishortcyrillic 16#0439
-/iivowelsignbengali 16#09c0
-/iivowelsigndeva 16#0940
-/iivowelsigngujarati 16#0ac0
-/ij 16#0133
-/ikatakana 16#30a4
-/ikatakanahalfwidth 16#ff72
-/ikorean 16#3163
-/ilde 16#02dc
-/iluyhebrew 16#05ac
-/imacron 16#012b
-/imacroncyrillic 16#04e3
-/imageorapproximatelyequal 16#2253
-/imatragurmukhi 16#0a3f
-/imonospace 16#ff49
-/increment 16#2206
-/infinity 16#221e
-/iniarmenian 16#056b
-/integral 16#222b
-/integralbottom 16#2321
-/integralbt 16#2321
-/integralex 16#f8f5
-/integraltop 16#2320
-/integraltp 16#2320
-/intersection 16#2229
-/intisquare 16#3305
-/invbullet 16#25d8
-/invcircle 16#25d9
-/invsmileface 16#263b
-/iocyrillic 16#0451
-/iogonek 16#012f
-/iota 16#03b9
-/iotadieresis 16#03ca
-/iotadieresistonos 16#0390
-/iotalatin 16#0269
-/iotatonos 16#03af
-/iparen 16#24a4
-/irigurmukhi 16#0a72
-/ismallhiragana 16#3043
-/ismallkatakana 16#30a3
-/ismallkatakanahalfwidth 16#ff68
-/issharbengali 16#09fa
-/istroke 16#0268
-/isuperior 16#f6ed
-/iterationhiragana 16#309d
-/iterationkatakana 16#30fd
-/itilde 16#0129
-/itildebelow 16#1e2d
-/iubopomofo 16#3129
-/iucyrillic 16#044e
-/ivowelsignbengali 16#09bf
-/ivowelsigndeva 16#093f
-/ivowelsigngujarati 16#0abf
-/izhitsacyrillic 16#0475
-/izhitsadblgravecyrillic 16#0477
-/j 16#006a
-/jaarmenian 16#0571
-/jabengali 16#099c
-/jadeva 16#091c
-/jagujarati 16#0a9c
-/jagurmukhi 16#0a1c
-/jbopomofo 16#3110
-/jcaron 16#01f0
-/jcircle 16#24d9
-/jcircumflex 16#0135
-/jcrossedtail 16#029d
-/jdotlessstroke 16#025f
-/jecyrillic 16#0458
-/jeemarabic 16#062c
-/jeemfinalarabic 16#fe9e
-/jeeminitialarabic 16#fe9f
-/jeemmedialarabic 16#fea0
-/jeharabic 16#0698
-/jehfinalarabic 16#fb8b
-/jhabengali 16#099d
-/jhadeva 16#091d
-/jhagujarati 16#0a9d
-/jhagurmukhi 16#0a1d
-/jheharmenian 16#057b
-/jis 16#3004
-/jmonospace 16#ff4a
-/jparen 16#24a5
-/jsuperior 16#02b2
-/k 16#006b
-/kabashkircyrillic 16#04a1
-/kabengali 16#0995
-/kacute 16#1e31
-/kacyrillic 16#043a
-/kadescendercyrillic 16#049b
-/kadeva 16#0915
-/kaf 16#05db
-/kafarabic 16#0643
-/kafdagesh 16#fb3b
-/kafdageshhebrew 16#fb3b
-/kaffinalarabic 16#feda
-/kafhebrew 16#05db
-/kafinitialarabic 16#fedb
-/kafmedialarabic 16#fedc
-/kafrafehebrew 16#fb4d
-/kagujarati 16#0a95
-/kagurmukhi 16#0a15
-/kahiragana 16#304b
-/kahookcyrillic 16#04c4
-/kakatakana 16#30ab
-/kakatakanahalfwidth 16#ff76
-/kappa 16#03ba
-/kappasymbolgreek 16#03f0
-/kapyeounmieumkorean 16#3171
-/kapyeounphieuphkorean 16#3184
-/kapyeounpieupkorean 16#3178
-/kapyeounssangpieupkorean 16#3179
-/karoriisquare 16#330d
-/kashidaautoarabic 16#0640
-/kashidaautonosidebearingarabic 16#0640
-/kasmallkatakana 16#30f5
-/kasquare 16#3384
-/kasraarabic 16#0650
-/kasratanarabic 16#064d
-/kastrokecyrillic 16#049f
-/katahiraprolongmarkhalfwidth 16#ff70
-/kaverticalstrokecyrillic 16#049d
-/kbopomofo 16#310e
-/kcalsquare 16#3389
-/kcaron 16#01e9
-/kcedilla 16#0137
-/kcircle 16#24da
-/kcommaaccent 16#0137
-/kdotbelow 16#1e33
-/keharmenian 16#0584
-/kehiragana 16#3051
-/kekatakana 16#30b1
-/kekatakanahalfwidth 16#ff79
-/kenarmenian 16#056f
-/kesmallkatakana 16#30f6
-/kgreenlandic 16#0138
-/khabengali 16#0996
-/khacyrillic 16#0445
-/khadeva 16#0916
-/khagujarati 16#0a96
-/khagurmukhi 16#0a16
-/khaharabic 16#062e
-/khahfinalarabic 16#fea6
-/khahinitialarabic 16#fea7
-/khahmedialarabic 16#fea8
-/kheicoptic 16#03e7
-/khhadeva 16#0959
-/khhagurmukhi 16#0a59
-/khieukhacirclekorean 16#3278
-/khieukhaparenkorean 16#3218
-/khieukhcirclekorean 16#326a
-/khieukhkorean 16#314b
-/khieukhparenkorean 16#320a
-/khokhaithai 16#0e02
-/khokhonthai 16#0e05
-/khokhuatthai 16#0e03
-/khokhwaithai 16#0e04
-/khomutthai 16#0e5b
-/khook 16#0199
-/khorakhangthai 16#0e06
-/khzsquare 16#3391
-/kihiragana 16#304d
-/kikatakana 16#30ad
-/kikatakanahalfwidth 16#ff77
-/kiroguramusquare 16#3315
-/kiromeetorusquare 16#3316
-/kirosquare 16#3314
-/kiyeokacirclekorean 16#326e
-/kiyeokaparenkorean 16#320e
-/kiyeokcirclekorean 16#3260
-/kiyeokkorean 16#3131
-/kiyeokparenkorean 16#3200
-/kiyeoksioskorean 16#3133
-/kjecyrillic 16#045c
-/klinebelow 16#1e35
-/klsquare 16#3398
-/kmcubedsquare 16#33a6
-/kmonospace 16#ff4b
-/kmsquaredsquare 16#33a2
-/kohiragana 16#3053
-/kohmsquare 16#33c0
-/kokaithai 16#0e01
-/kokatakana 16#30b3
-/kokatakanahalfwidth 16#ff7a
-/kooposquare 16#331e
-/koppacyrillic 16#0481
-/koreanstandardsymbol 16#327f
-/koroniscmb 16#0343
-/kparen 16#24a6
-/kpasquare 16#33aa
-/ksicyrillic 16#046f
-/ktsquare 16#33cf
-/kturned 16#029e
-/kuhiragana 16#304f
-/kukatakana 16#30af
-/kukatakanahalfwidth 16#ff78
-/kvsquare 16#33b8
-/kwsquare 16#33be
-/l 16#006c
-/labengali 16#09b2
-/lacute 16#013a
-/ladeva 16#0932
-/lagujarati 16#0ab2
-/lagurmukhi 16#0a32
-/lakkhangyaothai 16#0e45
-/lamaleffinalarabic 16#fefc
-/lamalefhamzaabovefinalarabic 16#fef8
-/lamalefhamzaaboveisolatedarabic 16#fef7
-/lamalefhamzabelowfinalarabic 16#fefa
-/lamalefhamzabelowisolatedarabic 16#fef9
-/lamalefisolatedarabic 16#fefb
-/lamalefmaddaabovefinalarabic 16#fef6
-/lamalefmaddaaboveisolatedarabic 16#fef5
-/lamarabic 16#0644
-/lambda 16#03bb
-/lambdastroke 16#019b
-/lamed 16#05dc
-/lameddagesh 16#fb3c
-/lameddageshhebrew 16#fb3c
-/lamedhebrew 16#05dc
-/lamfinalarabic 16#fede
-/lamhahinitialarabic 16#fcca
-/laminitialarabic 16#fedf
-/lamjeeminitialarabic 16#fcc9
-/lamkhahinitialarabic 16#fccb
-/lamlamhehisolatedarabic 16#fdf2
-/lammedialarabic 16#fee0
-/lammeemhahinitialarabic 16#fd88
-/lammeeminitialarabic 16#fccc
-/largecircle 16#25ef
-/lbar 16#019a
-/lbelt 16#026c
-/lbopomofo 16#310c
-/lcaron 16#013e
-/lcedilla 16#013c
-/lcircle 16#24db
-/lcircumflexbelow 16#1e3d
-/lcommaaccent 16#013c
-/ldot 16#0140
-/ldotaccent 16#0140
-/ldotbelow 16#1e37
-/ldotbelowmacron 16#1e39
-/leftangleabovecmb 16#031a
-/lefttackbelowcmb 16#0318
-/less 16#003c
-/lessequal 16#2264
-/lessequalorgreater 16#22da
-/lessmonospace 16#ff1c
-/lessorequivalent 16#2272
-/lessorgreater 16#2276
-/lessoverequal 16#2266
-/lesssmall 16#fe64
-/lezh 16#026e
-/lfblock 16#258c
-/lhookretroflex 16#026d
-/lira 16#20a4
-/liwnarmenian 16#056c
-/lj 16#01c9
-/ljecyrillic 16#0459
-/ll 16#f6c0
-/lladeva 16#0933
-/llagujarati 16#0ab3
-/llinebelow 16#1e3b
-/llladeva 16#0934
-/llvocalicbengali 16#09e1
-/llvocalicdeva 16#0961
-/llvocalicvowelsignbengali 16#09e3
-/llvocalicvowelsigndeva 16#0963
-/lmiddletilde 16#026b
-/lmonospace 16#ff4c
-/lmsquare 16#33d0
-/lochulathai 16#0e2c
-/logicaland 16#2227
-/logicalnot 16#00ac
-/logicalnotreversed 16#2310
-/logicalor 16#2228
-/lolingthai 16#0e25
-/longs 16#017f
-/lowlinecenterline 16#fe4e
-/lowlinecmb 16#0332
-/lowlinedashed 16#fe4d
-/lozenge 16#25ca
-/lparen 16#24a7
-/lslash 16#0142
-/lsquare 16#2113
-/lsuperior 16#f6ee
-/ltshade 16#2591
-/luthai 16#0e26
-/lvocalicbengali 16#098c
-/lvocalicdeva 16#090c
-/lvocalicvowelsignbengali 16#09e2
-/lvocalicvowelsigndeva 16#0962
-/lxsquare 16#33d3
-/m 16#006d
-/mabengali 16#09ae
-/macron 16#00af
-/macronbelowcmb 16#0331
-/macroncmb 16#0304
-/macronlowmod 16#02cd
-/macronmonospace 16#ffe3
-/macute 16#1e3f
-/madeva 16#092e
-/magujarati 16#0aae
-/magurmukhi 16#0a2e
-/mahapakhhebrew 16#05a4
-/mahapakhlefthebrew 16#05a4
-/mahiragana 16#307e
-/maichattawalowleftthai 16#f895
-/maichattawalowrightthai 16#f894
-/maichattawathai 16#0e4b
-/maichattawaupperleftthai 16#f893
-/maieklowleftthai 16#f88c
-/maieklowrightthai 16#f88b
-/maiekthai 16#0e48
-/maiekupperleftthai 16#f88a
-/maihanakatleftthai 16#f884
-/maihanakatthai 16#0e31
-/maitaikhuleftthai 16#f889
-/maitaikhuthai 16#0e47
-/maitholowleftthai 16#f88f
-/maitholowrightthai 16#f88e
-/maithothai 16#0e49
-/maithoupperleftthai 16#f88d
-/maitrilowleftthai 16#f892
-/maitrilowrightthai 16#f891
-/maitrithai 16#0e4a
-/maitriupperleftthai 16#f890
-/maiyamokthai 16#0e46
-/makatakana 16#30de
-/makatakanahalfwidth 16#ff8f
-/male 16#2642
-/mansyonsquare 16#3347
-/maqafhebrew 16#05be
-/mars 16#2642
-/masoracirclehebrew 16#05af
-/masquare 16#3383
-/mbopomofo 16#3107
-/mbsquare 16#33d4
-/mcircle 16#24dc
-/mcubedsquare 16#33a5
-/mdotaccent 16#1e41
-/mdotbelow 16#1e43
-/meemarabic 16#0645
-/meemfinalarabic 16#fee2
-/meeminitialarabic 16#fee3
-/meemmedialarabic 16#fee4
-/meemmeeminitialarabic 16#fcd1
-/meemmeemisolatedarabic 16#fc48
-/meetorusquare 16#334d
-/mehiragana 16#3081
-/meizierasquare 16#337e
-/mekatakana 16#30e1
-/mekatakanahalfwidth 16#ff92
-/mem 16#05de
-/memdagesh 16#fb3e
-/memdageshhebrew 16#fb3e
-/memhebrew 16#05de
-/menarmenian 16#0574
-/merkhahebrew 16#05a5
-/merkhakefulahebrew 16#05a6
-/merkhakefulalefthebrew 16#05a6
-/merkhalefthebrew 16#05a5
-/mhook 16#0271
-/mhzsquare 16#3392
-/middledotkatakanahalfwidth 16#ff65
-/middot 16#00b7
-/mieumacirclekorean 16#3272
-/mieumaparenkorean 16#3212
-/mieumcirclekorean 16#3264
-/mieumkorean 16#3141
-/mieumpansioskorean 16#3170
-/mieumparenkorean 16#3204
-/mieumpieupkorean 16#316e
-/mieumsioskorean 16#316f
-/mihiragana 16#307f
-/mikatakana 16#30df
-/mikatakanahalfwidth 16#ff90
-/minus 16#2212
-/minusbelowcmb 16#0320
-/minuscircle 16#2296
-/minusmod 16#02d7
-/minusplus 16#2213
-/minute 16#2032
-/miribaarusquare 16#334a
-/mirisquare 16#3349
-/mlonglegturned 16#0270
-/mlsquare 16#3396
-/mmcubedsquare 16#33a3
-/mmonospace 16#ff4d
-/mmsquaredsquare 16#339f
-/mohiragana 16#3082
-/mohmsquare 16#33c1
-/mokatakana 16#30e2
-/mokatakanahalfwidth 16#ff93
-/molsquare 16#33d6
-/momathai 16#0e21
-/moverssquare 16#33a7
-/moverssquaredsquare 16#33a8
-/mparen 16#24a8
-/mpasquare 16#33ab
-/mssquare 16#33b3
-/msuperior 16#f6ef
-/mturned 16#026f
-/mu 16#00b5
-/mu1 16#00b5
-/muasquare 16#3382
-/muchgreater 16#226b
-/muchless 16#226a
-/mufsquare 16#338c
-/mugreek 16#03bc
-/mugsquare 16#338d
-/muhiragana 16#3080
-/mukatakana 16#30e0
-/mukatakanahalfwidth 16#ff91
-/mulsquare 16#3395
-/multiply 16#00d7
-/mumsquare 16#339b
-/munahhebrew 16#05a3
-/munahlefthebrew 16#05a3
-/musicalnote 16#266a
-/musicalnotedbl 16#266b
-/musicflatsign 16#266d
-/musicsharpsign 16#266f
-/mussquare 16#33b2
-/muvsquare 16#33b6
-/muwsquare 16#33bc
-/mvmegasquare 16#33b9
-/mvsquare 16#33b7
-/mwmegasquare 16#33bf
-/mwsquare 16#33bd
-/n 16#006e
-/nabengali 16#09a8
-/nabla 16#2207
-/nacute 16#0144
-/nadeva 16#0928
-/nagujarati 16#0aa8
-/nagurmukhi 16#0a28
-/nahiragana 16#306a
-/nakatakana 16#30ca
-/nakatakanahalfwidth 16#ff85
-/napostrophe 16#0149
-/nasquare 16#3381
-/nbopomofo 16#310b
-/nbspace 16#00a0
-/ncaron 16#0148
-/ncedilla 16#0146
-/ncircle 16#24dd
-/ncircumflexbelow 16#1e4b
-/ncommaaccent 16#0146
-/ndotaccent 16#1e45
-/ndotbelow 16#1e47
-/nehiragana 16#306d
-/nekatakana 16#30cd
-/nekatakanahalfwidth 16#ff88
-/newsheqelsign 16#20aa
-/nfsquare 16#338b
-/ngabengali 16#0999
-/ngadeva 16#0919
-/ngagujarati 16#0a99
-/ngagurmukhi 16#0a19
-/ngonguthai 16#0e07
-/nhiragana 16#3093
-/nhookleft 16#0272
-/nhookretroflex 16#0273
-/nieunacirclekorean 16#326f
-/nieunaparenkorean 16#320f
-/nieuncieuckorean 16#3135
-/nieuncirclekorean 16#3261
-/nieunhieuhkorean 16#3136
-/nieunkorean 16#3134
-/nieunpansioskorean 16#3168
-/nieunparenkorean 16#3201
-/nieunsioskorean 16#3167
-/nieuntikeutkorean 16#3166
-/nihiragana 16#306b
-/nikatakana 16#30cb
-/nikatakanahalfwidth 16#ff86
-/nikhahitleftthai 16#f899
-/nikhahitthai 16#0e4d
-/nine 16#0039
-/ninearabic 16#0669
-/ninebengali 16#09ef
-/ninecircle 16#2468
-/ninecircleinversesansserif 16#2792
-/ninedeva 16#096f
-/ninegujarati 16#0aef
-/ninegurmukhi 16#0a6f
-/ninehackarabic 16#0669
-/ninehangzhou 16#3029
-/nineideographicparen 16#3228
-/nineinferior 16#2089
-/ninemonospace 16#ff19
-/nineoldstyle 16#f739
-/nineparen 16#247c
-/nineperiod 16#2490
-/ninepersian 16#06f9
-/nineroman 16#2178
-/ninesuperior 16#2079
-/nineteencircle 16#2472
-/nineteenparen 16#2486
-/nineteenperiod 16#249a
-/ninethai 16#0e59
-/nj 16#01cc
-/njecyrillic 16#045a
-/nkatakana 16#30f3
-/nkatakanahalfwidth 16#ff9d
-/nlegrightlong 16#019e
-/nlinebelow 16#1e49
-/nmonospace 16#ff4e
-/nmsquare 16#339a
-/nnabengali 16#09a3
-/nnadeva 16#0923
-/nnagujarati 16#0aa3
-/nnagurmukhi 16#0a23
-/nnnadeva 16#0929
-/nohiragana 16#306e
-/nokatakana 16#30ce
-/nokatakanahalfwidth 16#ff89
-/nonbreakingspace 16#00a0
-/nonenthai 16#0e13
-/nonuthai 16#0e19
-/noonarabic 16#0646
-/noonfinalarabic 16#fee6
-/noonghunnaarabic 16#06ba
-/noonghunnafinalarabic 16#fb9f
-/nooninitialarabic 16#fee7
-/noonjeeminitialarabic 16#fcd2
-/noonjeemisolatedarabic 16#fc4b
-/noonmedialarabic 16#fee8
-/noonmeeminitialarabic 16#fcd5
-/noonmeemisolatedarabic 16#fc4e
-/noonnoonfinalarabic 16#fc8d
-/notcontains 16#220c
-/notelement 16#2209
-/notelementof 16#2209
-/notequal 16#2260
-/notgreater 16#226f
-/notgreaternorequal 16#2271
-/notgreaternorless 16#2279
-/notidentical 16#2262
-/notless 16#226e
-/notlessnorequal 16#2270
-/notparallel 16#2226
-/notprecedes 16#2280
-/notsubset 16#2284
-/notsucceeds 16#2281
-/notsuperset 16#2285
-/nowarmenian 16#0576
-/nparen 16#24a9
-/nssquare 16#33b1
-/nsuperior 16#207f
-/ntilde 16#00f1
-/nu 16#03bd
-/nuhiragana 16#306c
-/nukatakana 16#30cc
-/nukatakanahalfwidth 16#ff87
-/nuktabengali 16#09bc
-/nuktadeva 16#093c
-/nuktagujarati 16#0abc
-/nuktagurmukhi 16#0a3c
-/numbersign 16#0023
-/numbersignmonospace 16#ff03
-/numbersignsmall 16#fe5f
-/numeralsigngreek 16#0374
-/numeralsignlowergreek 16#0375
-/numero 16#2116
-/nun 16#05e0
-/nundagesh 16#fb40
-/nundageshhebrew 16#fb40
-/nunhebrew 16#05e0
-/nvsquare 16#33b5
-/nwsquare 16#33bb
-/nyabengali 16#099e
-/nyadeva 16#091e
-/nyagujarati 16#0a9e
-/nyagurmukhi 16#0a1e
-/o 16#006f
-/oacute 16#00f3
-/oangthai 16#0e2d
-/obarred 16#0275
-/obarredcyrillic 16#04e9
-/obarreddieresiscyrillic 16#04eb
-/obengali 16#0993
-/obopomofo 16#311b
-/obreve 16#014f
-/ocandradeva 16#0911
-/ocandragujarati 16#0a91
-/ocandravowelsigndeva 16#0949
-/ocandravowelsigngujarati 16#0ac9
-/ocaron 16#01d2
-/ocircle 16#24de
-/ocircumflex 16#00f4
-/ocircumflexacute 16#1ed1
-/ocircumflexdotbelow 16#1ed9
-/ocircumflexgrave 16#1ed3
-/ocircumflexhookabove 16#1ed5
-/ocircumflextilde 16#1ed7
-/ocyrillic 16#043e
-/odblacute 16#0151
-/odblgrave 16#020d
-/odeva 16#0913
-/odieresis 16#00f6
-/odieresiscyrillic 16#04e7
-/odotbelow 16#1ecd
-/oe 16#0153
-/oekorean 16#315a
-/ogonek 16#02db
-/ogonekcmb 16#0328
-/ograve 16#00f2
-/ogujarati 16#0a93
-/oharmenian 16#0585
-/ohiragana 16#304a
-/ohookabove 16#1ecf
-/ohorn 16#01a1
-/ohornacute 16#1edb
-/ohorndotbelow 16#1ee3
-/ohorngrave 16#1edd
-/ohornhookabove 16#1edf
-/ohorntilde 16#1ee1
-/ohungarumlaut 16#0151
-/oi 16#01a3
-/oinvertedbreve 16#020f
-/okatakana 16#30aa
-/okatakanahalfwidth 16#ff75
-/okorean 16#3157
-/olehebrew 16#05ab
-/omacron 16#014d
-/omacronacute 16#1e53
-/omacrongrave 16#1e51
-/omdeva 16#0950
-/omega 16#03c9
-/omega1 16#03d6
-/omegacyrillic 16#0461
-/omegalatinclosed 16#0277
-/omegaroundcyrillic 16#047b
-/omegatitlocyrillic 16#047d
-/omegatonos 16#03ce
-/omgujarati 16#0ad0
-/omicron 16#03bf
-/omicrontonos 16#03cc
-/omonospace 16#ff4f
-/one 16#0031
-/onearabic 16#0661
-/onebengali 16#09e7
-/onecircle 16#2460
-/onecircleinversesansserif 16#278a
-/onedeva 16#0967
-/onedotenleader 16#2024
-/oneeighth 16#215b
-/onefitted 16#f6dc
-/onegujarati 16#0ae7
-/onegurmukhi 16#0a67
-/onehackarabic 16#0661
-/onehalf 16#00bd
-/onehangzhou 16#3021
-/oneideographicparen 16#3220
-/oneinferior 16#2081
-/onemonospace 16#ff11
-/onenumeratorbengali 16#09f4
-/oneoldstyle 16#f731
-/oneparen 16#2474
-/oneperiod 16#2488
-/onepersian 16#06f1
-/onequarter 16#00bc
-/oneroman 16#2170
-/onesuperior 16#00b9
-/onethai 16#0e51
-/onethird 16#2153
-/oogonek 16#01eb
-/oogonekmacron 16#01ed
-/oogurmukhi 16#0a13
-/oomatragurmukhi 16#0a4b
-/oopen 16#0254
-/oparen 16#24aa
-/openbullet 16#25e6
-/option 16#2325
-/ordfeminine 16#00aa
-/ordmasculine 16#00ba
-/orthogonal 16#221f
-/oshortdeva 16#0912
-/oshortvowelsigndeva 16#094a
-/oslash 16#00f8
-/oslashacute 16#01ff
-/osmallhiragana 16#3049
-/osmallkatakana 16#30a9
-/osmallkatakanahalfwidth 16#ff6b
-/ostrokeacute 16#01ff
-/osuperior 16#f6f0
-/otcyrillic 16#047f
-/otilde 16#00f5
-/otildeacute 16#1e4d
-/otildedieresis 16#1e4f
-/oubopomofo 16#3121
-/overline 16#203e
-/overlinecenterline 16#fe4a
-/overlinecmb 16#0305
-/overlinedashed 16#fe49
-/overlinedblwavy 16#fe4c
-/overlinewavy 16#fe4b
-/overscore 16#00af
-/ovowelsignbengali 16#09cb
-/ovowelsigndeva 16#094b
-/ovowelsigngujarati 16#0acb
-/p 16#0070
-/paampssquare 16#3380
-/paasentosquare 16#332b
-/pabengali 16#09aa
-/pacute 16#1e55
-/padeva 16#092a
-/pagedown 16#21df
-/pageup 16#21de
-/pagujarati 16#0aaa
-/pagurmukhi 16#0a2a
-/pahiragana 16#3071
-/paiyannoithai 16#0e2f
-/pakatakana 16#30d1
-/palatalizationcyrilliccmb 16#0484
-/palochkacyrillic 16#04c0
-/pansioskorean 16#317f
-/paragraph 16#00b6
-/parallel 16#2225
-/parenleft 16#0028
-/parenleftaltonearabic 16#fd3e
-/parenleftbt 16#f8ed
-/parenleftex 16#f8ec
-/parenleftinferior 16#208d
-/parenleftmonospace 16#ff08
-/parenleftsmall 16#fe59
-/parenleftsuperior 16#207d
-/parenlefttp 16#f8eb
-/parenleftvertical 16#fe35
-/parenright 16#0029
-/parenrightaltonearabic 16#fd3f
-/parenrightbt 16#f8f8
-/parenrightex 16#f8f7
-/parenrightinferior 16#208e
-/parenrightmonospace 16#ff09
-/parenrightsmall 16#fe5a
-/parenrightsuperior 16#207e
-/parenrighttp 16#f8f6
-/parenrightvertical 16#fe36
-/partialdiff 16#2202
-/paseqhebrew 16#05c0
-/pashtahebrew 16#0599
-/pasquare 16#33a9
-/patah 16#05b7
-/patah11 16#05b7
-/patah1d 16#05b7
-/patah2a 16#05b7
-/patahhebrew 16#05b7
-/patahnarrowhebrew 16#05b7
-/patahquarterhebrew 16#05b7
-/patahwidehebrew 16#05b7
-/pazerhebrew 16#05a1
-/pbopomofo 16#3106
-/pcircle 16#24df
-/pdotaccent 16#1e57
-/pe 16#05e4
-/pecyrillic 16#043f
-/pedagesh 16#fb44
-/pedageshhebrew 16#fb44
-/peezisquare 16#333b
-/pefinaldageshhebrew 16#fb43
-/peharabic 16#067e
-/peharmenian 16#057a
-/pehebrew 16#05e4
-/pehfinalarabic 16#fb57
-/pehinitialarabic 16#fb58
-/pehiragana 16#307a
-/pehmedialarabic 16#fb59
-/pekatakana 16#30da
-/pemiddlehookcyrillic 16#04a7
-/perafehebrew 16#fb4e
-/percent 16#0025
-/percentarabic 16#066a
-/percentmonospace 16#ff05
-/percentsmall 16#fe6a
-/period 16#002e
-/periodarmenian 16#0589
-/periodcentered 16#00b7
-/periodhalfwidth 16#ff61
-/periodinferior 16#f6e7
-/periodmonospace 16#ff0e
-/periodsmall 16#fe52
-/periodsuperior 16#f6e8
-/perispomenigreekcmb 16#0342
-/perpendicular 16#22a5
-/perthousand 16#2030
-/peseta 16#20a7
-/pfsquare 16#338a
-/phabengali 16#09ab
-/phadeva 16#092b
-/phagujarati 16#0aab
-/phagurmukhi 16#0a2b
-/phi 16#03c6
-/phi1 16#03d5
-/phieuphacirclekorean 16#327a
-/phieuphaparenkorean 16#321a
-/phieuphcirclekorean 16#326c
-/phieuphkorean 16#314d
-/phieuphparenkorean 16#320c
-/philatin 16#0278
-/phinthuthai 16#0e3a
-/phisymbolgreek 16#03d5
-/phook 16#01a5
-/phophanthai 16#0e1e
-/phophungthai 16#0e1c
-/phosamphaothai 16#0e20
-/pi 16#03c0
-/pieupacirclekorean 16#3273
-/pieupaparenkorean 16#3213
-/pieupcieuckorean 16#3176
-/pieupcirclekorean 16#3265
-/pieupkiyeokkorean 16#3172
-/pieupkorean 16#3142
-/pieupparenkorean 16#3205
-/pieupsioskiyeokkorean 16#3174
-/pieupsioskorean 16#3144
-/pieupsiostikeutkorean 16#3175
-/pieupthieuthkorean 16#3177
-/pieuptikeutkorean 16#3173
-/pihiragana 16#3074
-/pikatakana 16#30d4
-/pisymbolgreek 16#03d6
-/piwrarmenian 16#0583
-/plus 16#002b
-/plusbelowcmb 16#031f
-/pluscircle 16#2295
-/plusminus 16#00b1
-/plusmod 16#02d6
-/plusmonospace 16#ff0b
-/plussmall 16#fe62
-/plussuperior 16#207a
-/pmonospace 16#ff50
-/pmsquare 16#33d8
-/pohiragana 16#307d
-/pointingindexdownwhite 16#261f
-/pointingindexleftwhite 16#261c
-/pointingindexrightwhite 16#261e
-/pointingindexupwhite 16#261d
-/pokatakana 16#30dd
-/poplathai 16#0e1b
-/postalmark 16#3012
-/postalmarkface 16#3020
-/pparen 16#24ab
-/precedes 16#227a
-/prescription 16#211e
-/primemod 16#02b9
-/primereversed 16#2035
-/product 16#220f
-/projective 16#2305
-/prolongedkana 16#30fc
-/propellor 16#2318
-/propersubset 16#2282
-/propersuperset 16#2283
-/proportion 16#2237
-/proportional 16#221d
-/psi 16#03c8
-/psicyrillic 16#0471
-/psilipneumatacyrilliccmb 16#0486
-/pssquare 16#33b0
-/puhiragana 16#3077
-/pukatakana 16#30d7
-/pvsquare 16#33b4
-/pwsquare 16#33ba
-/q 16#0071
-/qadeva 16#0958
-/qadmahebrew 16#05a8
-/qafarabic 16#0642
-/qaffinalarabic 16#fed6
-/qafinitialarabic 16#fed7
-/qafmedialarabic 16#fed8
-/qamats 16#05b8
-/qamats10 16#05b8
-/qamats1a 16#05b8
-/qamats1c 16#05b8
-/qamats27 16#05b8
-/qamats29 16#05b8
-/qamats33 16#05b8
-/qamatsde 16#05b8
-/qamatshebrew 16#05b8
-/qamatsnarrowhebrew 16#05b8
-/qamatsqatanhebrew 16#05b8
-/qamatsqatannarrowhebrew 16#05b8
-/qamatsqatanquarterhebrew 16#05b8
-/qamatsqatanwidehebrew 16#05b8
-/qamatsquarterhebrew 16#05b8
-/qamatswidehebrew 16#05b8
-/qarneyparahebrew 16#059f
-/qbopomofo 16#3111
-/qcircle 16#24e0
-/qhook 16#02a0
-/qmonospace 16#ff51
-/qof 16#05e7
-/qofdagesh 16#fb47
-/qofdageshhebrew 16#fb47
-/qofhebrew 16#05e7
-/qparen 16#24ac
-/quarternote 16#2669
-/qubuts 16#05bb
-/qubuts18 16#05bb
-/qubuts25 16#05bb
-/qubuts31 16#05bb
-/qubutshebrew 16#05bb
-/qubutsnarrowhebrew 16#05bb
-/qubutsquarterhebrew 16#05bb
-/qubutswidehebrew 16#05bb
-/question 16#003f
-/questionarabic 16#061f
-/questionarmenian 16#055e
-/questiondown 16#00bf
-/questiondownsmall 16#f7bf
-/questiongreek 16#037e
-/questionmonospace 16#ff1f
-/questionsmall 16#f73f
-/quotedbl 16#0022
-/quotedblbase 16#201e
-/quotedblleft 16#201c
-/quotedblmonospace 16#ff02
-/quotedblprime 16#301e
-/quotedblprimereversed 16#301d
-/quotedblright 16#201d
-/quoteleft 16#2018
-/quoteleftreversed 16#201b
-/quotereversed 16#201b
-/quoteright 16#2019
-/quoterightn 16#0149
-/quotesinglbase 16#201a
-/quotesingle 16#0027
-/quotesinglemonospace 16#ff07
-/r 16#0072
-/raarmenian 16#057c
-/rabengali 16#09b0
-/racute 16#0155
-/radeva 16#0930
-/radical 16#221a
-/radicalex 16#f8e5
-/radoverssquare 16#33ae
-/radoverssquaredsquare 16#33af
-/radsquare 16#33ad
-/rafe 16#05bf
-/rafehebrew 16#05bf
-/ragujarati 16#0ab0
-/ragurmukhi 16#0a30
-/rahiragana 16#3089
-/rakatakana 16#30e9
-/rakatakanahalfwidth 16#ff97
-/ralowerdiagonalbengali 16#09f1
-/ramiddlediagonalbengali 16#09f0
-/ramshorn 16#0264
-/ratio 16#2236
-/rbopomofo 16#3116
-/rcaron 16#0159
-/rcedilla 16#0157
-/rcircle 16#24e1
-/rcommaaccent 16#0157
-/rdblgrave 16#0211
-/rdotaccent 16#1e59
-/rdotbelow 16#1e5b
-/rdotbelowmacron 16#1e5d
-/referencemark 16#203b
-/reflexsubset 16#2286
-/reflexsuperset 16#2287
-/registered 16#00ae
-/registersans 16#f8e8
-/registerserif 16#f6da
-/reharabic 16#0631
-/reharmenian 16#0580
-/rehfinalarabic 16#feae
-/rehiragana 16#308c
-/rekatakana 16#30ec
-/rekatakanahalfwidth 16#ff9a
-/resh 16#05e8
-/reshdageshhebrew 16#fb48
-/reshhebrew 16#05e8
-/reversedtilde 16#223d
-/reviahebrew 16#0597
-/reviamugrashhebrew 16#0597
-/revlogicalnot 16#2310
-/rfishhook 16#027e
-/rfishhookreversed 16#027f
-/rhabengali 16#09dd
-/rhadeva 16#095d
-/rho 16#03c1
-/rhook 16#027d
-/rhookturned 16#027b
-/rhookturnedsuperior 16#02b5
-/rhosymbolgreek 16#03f1
-/rhotichookmod 16#02de
-/rieulacirclekorean 16#3271
-/rieulaparenkorean 16#3211
-/rieulcirclekorean 16#3263
-/rieulhieuhkorean 16#3140
-/rieulkiyeokkorean 16#313a
-/rieulkiyeoksioskorean 16#3169
-/rieulkorean 16#3139
-/rieulmieumkorean 16#313b
-/rieulpansioskorean 16#316c
-/rieulparenkorean 16#3203
-/rieulphieuphkorean 16#313f
-/rieulpieupkorean 16#313c
-/rieulpieupsioskorean 16#316b
-/rieulsioskorean 16#313d
-/rieulthieuthkorean 16#313e
-/rieultikeutkorean 16#316a
-/rieulyeorinhieuhkorean 16#316d
-/rightangle 16#221f
-/righttackbelowcmb 16#0319
-/righttriangle 16#22bf
-/rihiragana 16#308a
-/rikatakana 16#30ea
-/rikatakanahalfwidth 16#ff98
-/ring 16#02da
-/ringbelowcmb 16#0325
-/ringcmb 16#030a
-/ringhalfleft 16#02bf
-/ringhalfleftarmenian 16#0559
-/ringhalfleftbelowcmb 16#031c
-/ringhalfleftcentered 16#02d3
-/ringhalfright 16#02be
-/ringhalfrightbelowcmb 16#0339
-/ringhalfrightcentered 16#02d2
-/rinvertedbreve 16#0213
-/rittorusquare 16#3351
-/rlinebelow 16#1e5f
-/rlongleg 16#027c
-/rlonglegturned 16#027a
-/rmonospace 16#ff52
-/rohiragana 16#308d
-/rokatakana 16#30ed
-/rokatakanahalfwidth 16#ff9b
-/roruathai 16#0e23
-/rparen 16#24ad
-/rrabengali 16#09dc
-/rradeva 16#0931
-/rragurmukhi 16#0a5c
-/rreharabic 16#0691
-/rrehfinalarabic 16#fb8d
-/rrvocalicbengali 16#09e0
-/rrvocalicdeva 16#0960
-/rrvocalicgujarati 16#0ae0
-/rrvocalicvowelsignbengali 16#09c4
-/rrvocalicvowelsigndeva 16#0944
-/rrvocalicvowelsigngujarati 16#0ac4
-/rsuperior 16#f6f1
-/rtblock 16#2590
-/rturned 16#0279
-/rturnedsuperior 16#02b4
-/ruhiragana 16#308b
-/rukatakana 16#30eb
-/rukatakanahalfwidth 16#ff99
-/rupeemarkbengali 16#09f2
-/rupeesignbengali 16#09f3
-/rupiah 16#f6dd
-/ruthai 16#0e24
-/rvocalicbengali 16#098b
-/rvocalicdeva 16#090b
-/rvocalicgujarati 16#0a8b
-/rvocalicvowelsignbengali 16#09c3
-/rvocalicvowelsigndeva 16#0943
-/rvocalicvowelsigngujarati 16#0ac3
-/s 16#0073
-/sabengali 16#09b8
-/sacute 16#015b
-/sacutedotaccent 16#1e65
-/sadarabic 16#0635
-/sadeva 16#0938
-/sadfinalarabic 16#feba
-/sadinitialarabic 16#febb
-/sadmedialarabic 16#febc
-/sagujarati 16#0ab8
-/sagurmukhi 16#0a38
-/sahiragana 16#3055
-/sakatakana 16#30b5
-/sakatakanahalfwidth 16#ff7b
-/sallallahoualayhewasallamarabic 16#fdfa
-/samekh 16#05e1
-/samekhdagesh 16#fb41
-/samekhdageshhebrew 16#fb41
-/samekhhebrew 16#05e1
-/saraaathai 16#0e32
-/saraaethai 16#0e41
-/saraaimaimalaithai 16#0e44
-/saraaimaimuanthai 16#0e43
-/saraamthai 16#0e33
-/saraathai 16#0e30
-/saraethai 16#0e40
-/saraiileftthai 16#f886
-/saraiithai 16#0e35
-/saraileftthai 16#f885
-/saraithai 16#0e34
-/saraothai 16#0e42
-/saraueeleftthai 16#f888
-/saraueethai 16#0e37
-/saraueleftthai 16#f887
-/sarauethai 16#0e36
-/sarauthai 16#0e38
-/sarauuthai 16#0e39
-/sbopomofo 16#3119
-/scaron 16#0161
-/scarondotaccent 16#1e67
-/scedilla 16#015f
-/schwa 16#0259
-/schwacyrillic 16#04d9
-/schwadieresiscyrillic 16#04db
-/schwahook 16#025a
-/scircle 16#24e2
-/scircumflex 16#015d
-/scommaaccent 16#0219
-/sdotaccent 16#1e61
-/sdotbelow 16#1e63
-/sdotbelowdotaccent 16#1e69
-/seagullbelowcmb 16#033c
-/second 16#2033
-/secondtonechinese 16#02ca
-/section 16#00a7
-/seenarabic 16#0633
-/seenfinalarabic 16#feb2
-/seeninitialarabic 16#feb3
-/seenmedialarabic 16#feb4
-/segol 16#05b6
-/segol13 16#05b6
-/segol1f 16#05b6
-/segol2c 16#05b6
-/segolhebrew 16#05b6
-/segolnarrowhebrew 16#05b6
-/segolquarterhebrew 16#05b6
-/segoltahebrew 16#0592
-/segolwidehebrew 16#05b6
-/seharmenian 16#057d
-/sehiragana 16#305b
-/sekatakana 16#30bb
-/sekatakanahalfwidth 16#ff7e
-/semicolon 16#003b
-/semicolonarabic 16#061b
-/semicolonmonospace 16#ff1b
-/semicolonsmall 16#fe54
-/semivoicedmarkkana 16#309c
-/semivoicedmarkkanahalfwidth 16#ff9f
-/sentisquare 16#3322
-/sentosquare 16#3323
-/seven 16#0037
-/sevenarabic 16#0667
-/sevenbengali 16#09ed
-/sevencircle 16#2466
-/sevencircleinversesansserif 16#2790
-/sevendeva 16#096d
-/seveneighths 16#215e
-/sevengujarati 16#0aed
-/sevengurmukhi 16#0a6d
-/sevenhackarabic 16#0667
-/sevenhangzhou 16#3027
-/sevenideographicparen 16#3226
-/seveninferior 16#2087
-/sevenmonospace 16#ff17
-/sevenoldstyle 16#f737
-/sevenparen 16#247a
-/sevenperiod 16#248e
-/sevenpersian 16#06f7
-/sevenroman 16#2176
-/sevensuperior 16#2077
-/seventeencircle 16#2470
-/seventeenparen 16#2484
-/seventeenperiod 16#2498
-/seventhai 16#0e57
-/sfthyphen 16#00ad
-/shaarmenian 16#0577
-/shabengali 16#09b6
-/shacyrillic 16#0448
-/shaddaarabic 16#0651
-/shaddadammaarabic 16#fc61
-/shaddadammatanarabic 16#fc5e
-/shaddafathaarabic 16#fc60
-/shaddakasraarabic 16#fc62
-/shaddakasratanarabic 16#fc5f
-/shade 16#2592
-/shadedark 16#2593
-/shadelight 16#2591
-/shademedium 16#2592
-/shadeva 16#0936
-/shagujarati 16#0ab6
-/shagurmukhi 16#0a36
-/shalshelethebrew 16#0593
-/shbopomofo 16#3115
-/shchacyrillic 16#0449
-/sheenarabic 16#0634
-/sheenfinalarabic 16#feb6
-/sheeninitialarabic 16#feb7
-/sheenmedialarabic 16#feb8
-/sheicoptic 16#03e3
-/sheqel 16#20aa
-/sheqelhebrew 16#20aa
-/sheva 16#05b0
-/sheva115 16#05b0
-/sheva15 16#05b0
-/sheva22 16#05b0
-/sheva2e 16#05b0
-/shevahebrew 16#05b0
-/shevanarrowhebrew 16#05b0
-/shevaquarterhebrew 16#05b0
-/shevawidehebrew 16#05b0
-/shhacyrillic 16#04bb
-/shimacoptic 16#03ed
-/shin 16#05e9
-/shindagesh 16#fb49
-/shindageshhebrew 16#fb49
-/shindageshshindot 16#fb2c
-/shindageshshindothebrew 16#fb2c
-/shindageshsindot 16#fb2d
-/shindageshsindothebrew 16#fb2d
-/shindothebrew 16#05c1
-/shinhebrew 16#05e9
-/shinshindot 16#fb2a
-/shinshindothebrew 16#fb2a
-/shinsindot 16#fb2b
-/shinsindothebrew 16#fb2b
-/shook 16#0282
-/sigma 16#03c3
-/sigma1 16#03c2
-/sigmafinal 16#03c2
-/sigmalunatesymbolgreek 16#03f2
-/sihiragana 16#3057
-/sikatakana 16#30b7
-/sikatakanahalfwidth 16#ff7c
-/siluqhebrew 16#05bd
-/siluqlefthebrew 16#05bd
-/similar 16#223c
-/sindothebrew 16#05c2
-/siosacirclekorean 16#3274
-/siosaparenkorean 16#3214
-/sioscieuckorean 16#317e
-/sioscirclekorean 16#3266
-/sioskiyeokkorean 16#317a
-/sioskorean 16#3145
-/siosnieunkorean 16#317b
-/siosparenkorean 16#3206
-/siospieupkorean 16#317d
-/siostikeutkorean 16#317c
-/six 16#0036
-/sixarabic 16#0666
-/sixbengali 16#09ec
-/sixcircle 16#2465
-/sixcircleinversesansserif 16#278f
-/sixdeva 16#096c
-/sixgujarati 16#0aec
-/sixgurmukhi 16#0a6c
-/sixhackarabic 16#0666
-/sixhangzhou 16#3026
-/sixideographicparen 16#3225
-/sixinferior 16#2086
-/sixmonospace 16#ff16
-/sixoldstyle 16#f736
-/sixparen 16#2479
-/sixperiod 16#248d
-/sixpersian 16#06f6
-/sixroman 16#2175
-/sixsuperior 16#2076
-/sixteencircle 16#246f
-/sixteencurrencydenominatorbengali 16#09f9
-/sixteenparen 16#2483
-/sixteenperiod 16#2497
-/sixthai 16#0e56
-/slash 16#002f
-/slashmonospace 16#ff0f
-/slong 16#017f
-/slongdotaccent 16#1e9b
-/smileface 16#263a
-/smonospace 16#ff53
-/sofpasuqhebrew 16#05c3
-/softhyphen 16#00ad
-/softsigncyrillic 16#044c
-/sohiragana 16#305d
-/sokatakana 16#30bd
-/sokatakanahalfwidth 16#ff7f
-/soliduslongoverlaycmb 16#0338
-/solidusshortoverlaycmb 16#0337
-/sorusithai 16#0e29
-/sosalathai 16#0e28
-/sosothai 16#0e0b
-/sosuathai 16#0e2a
-/space 16#0020
-/spacehackarabic 16#0020
-/spade 16#2660
-/spadesuitblack 16#2660
-/spadesuitwhite 16#2664
-/sparen 16#24ae
-/squarebelowcmb 16#033b
-/squarecc 16#33c4
-/squarecm 16#339d
-/squarediagonalcrosshatchfill 16#25a9
-/squarehorizontalfill 16#25a4
-/squarekg 16#338f
-/squarekm 16#339e
-/squarekmcapital 16#33ce
-/squareln 16#33d1
-/squarelog 16#33d2
-/squaremg 16#338e
-/squaremil 16#33d5
-/squaremm 16#339c
-/squaremsquared 16#33a1
-/squareorthogonalcrosshatchfill 16#25a6
-/squareupperlefttolowerrightfill 16#25a7
-/squareupperrighttolowerleftfill 16#25a8
-/squareverticalfill 16#25a5
-/squarewhitewithsmallblack 16#25a3
-/srsquare 16#33db
-/ssabengali 16#09b7
-/ssadeva 16#0937
-/ssagujarati 16#0ab7
-/ssangcieuckorean 16#3149
-/ssanghieuhkorean 16#3185
-/ssangieungkorean 16#3180
-/ssangkiyeokkorean 16#3132
-/ssangnieunkorean 16#3165
-/ssangpieupkorean 16#3143
-/ssangsioskorean 16#3146
-/ssangtikeutkorean 16#3138
-/ssuperior 16#f6f2
-/sterling 16#00a3
-/sterlingmonospace 16#ffe1
-/strokelongoverlaycmb 16#0336
-/strokeshortoverlaycmb 16#0335
-/subset 16#2282
-/subsetnotequal 16#228a
-/subsetorequal 16#2286
-/succeeds 16#227b
-/suchthat 16#220b
-/suhiragana 16#3059
-/sukatakana 16#30b9
-/sukatakanahalfwidth 16#ff7d
-/sukunarabic 16#0652
-/summation 16#2211
-/sun 16#263c
-/superset 16#2283
-/supersetnotequal 16#228b
-/supersetorequal 16#2287
-/svsquare 16#33dc
-/syouwaerasquare 16#337c
-/t 16#0074
-/tabengali 16#09a4
-/tackdown 16#22a4
-/tackleft 16#22a3
-/tadeva 16#0924
-/tagujarati 16#0aa4
-/tagurmukhi 16#0a24
-/taharabic 16#0637
-/tahfinalarabic 16#fec2
-/tahinitialarabic 16#fec3
-/tahiragana 16#305f
-/tahmedialarabic 16#fec4
-/taisyouerasquare 16#337d
-/takatakana 16#30bf
-/takatakanahalfwidth 16#ff80
-/tatweelarabic 16#0640
-/tau 16#03c4
-/tav 16#05ea
-/tavdages 16#fb4a
-/tavdagesh 16#fb4a
-/tavdageshhebrew 16#fb4a
-/tavhebrew 16#05ea
-/tbar 16#0167
-/tbopomofo 16#310a
-/tcaron 16#0165
-/tccurl 16#02a8
-/tcedilla 16#0163
-/tcheharabic 16#0686
-/tchehfinalarabic 16#fb7b
-/tchehinitialarabic 16#fb7c
-/tchehmedialarabic 16#fb7d
-/tcircle 16#24e3
-/tcircumflexbelow 16#1e71
-/tcommaaccent 16#0163
-/tdieresis 16#1e97
-/tdotaccent 16#1e6b
-/tdotbelow 16#1e6d
-/tecyrillic 16#0442
-/tedescendercyrillic 16#04ad
-/teharabic 16#062a
-/tehfinalarabic 16#fe96
-/tehhahinitialarabic 16#fca2
-/tehhahisolatedarabic 16#fc0c
-/tehinitialarabic 16#fe97
-/tehiragana 16#3066
-/tehjeeminitialarabic 16#fca1
-/tehjeemisolatedarabic 16#fc0b
-/tehmarbutaarabic 16#0629
-/tehmarbutafinalarabic 16#fe94
-/tehmedialarabic 16#fe98
-/tehmeeminitialarabic 16#fca4
-/tehmeemisolatedarabic 16#fc0e
-/tehnoonfinalarabic 16#fc73
-/tekatakana 16#30c6
-/tekatakanahalfwidth 16#ff83
-/telephone 16#2121
-/telephoneblack 16#260e
-/telishagedolahebrew 16#05a0
-/telishaqetanahebrew 16#05a9
-/tencircle 16#2469
-/tenideographicparen 16#3229
-/tenparen 16#247d
-/tenperiod 16#2491
-/tenroman 16#2179
-/tesh 16#02a7
-/tet 16#05d8
-/tetdagesh 16#fb38
-/tetdageshhebrew 16#fb38
-/tethebrew 16#05d8
-/tetsecyrillic 16#04b5
-/tevirhebrew 16#059b
-/tevirlefthebrew 16#059b
-/thabengali 16#09a5
-/thadeva 16#0925
-/thagujarati 16#0aa5
-/thagurmukhi 16#0a25
-/thalarabic 16#0630
-/thalfinalarabic 16#feac
-/thanthakhatlowleftthai 16#f898
-/thanthakhatlowrightthai 16#f897
-/thanthakhatthai 16#0e4c
-/thanthakhatupperleftthai 16#f896
-/theharabic 16#062b
-/thehfinalarabic 16#fe9a
-/thehinitialarabic 16#fe9b
-/thehmedialarabic 16#fe9c
-/thereexists 16#2203
-/therefore 16#2234
-/theta 16#03b8
-/theta1 16#03d1
-/thetasymbolgreek 16#03d1
-/thieuthacirclekorean 16#3279
-/thieuthaparenkorean 16#3219
-/thieuthcirclekorean 16#326b
-/thieuthkorean 16#314c
-/thieuthparenkorean 16#320b
-/thirteencircle 16#246c
-/thirteenparen 16#2480
-/thirteenperiod 16#2494
-/thonangmonthothai 16#0e11
-/thook 16#01ad
-/thophuthaothai 16#0e12
-/thorn 16#00fe
-/thothahanthai 16#0e17
-/thothanthai 16#0e10
-/thothongthai 16#0e18
-/thothungthai 16#0e16
-/thousandcyrillic 16#0482
-/thousandsseparatorarabic 16#066c
-/thousandsseparatorpersian 16#066c
-/three 16#0033
-/threearabic 16#0663
-/threebengali 16#09e9
-/threecircle 16#2462
-/threecircleinversesansserif 16#278c
-/threedeva 16#0969
-/threeeighths 16#215c
-/threegujarati 16#0ae9
-/threegurmukhi 16#0a69
-/threehackarabic 16#0663
-/threehangzhou 16#3023
-/threeideographicparen 16#3222
-/threeinferior 16#2083
-/threemonospace 16#ff13
-/threenumeratorbengali 16#09f6
-/threeoldstyle 16#f733
-/threeparen 16#2476
-/threeperiod 16#248a
-/threepersian 16#06f3
-/threequarters 16#00be
-/threequartersemdash 16#f6de
-/threeroman 16#2172
-/threesuperior 16#00b3
-/threethai 16#0e53
-/thzsquare 16#3394
-/tihiragana 16#3061
-/tikatakana 16#30c1
-/tikatakanahalfwidth 16#ff81
-/tikeutacirclekorean 16#3270
-/tikeutaparenkorean 16#3210
-/tikeutcirclekorean 16#3262
-/tikeutkorean 16#3137
-/tikeutparenkorean 16#3202
-/tilde 16#02dc
-/tildebelowcmb 16#0330
-/tildecmb 16#0303
-/tildecomb 16#0303
-/tildedoublecmb 16#0360
-/tildeoperator 16#223c
-/tildeoverlaycmb 16#0334
-/tildeverticalcmb 16#033e
-/timescircle 16#2297
-/tipehahebrew 16#0596
-/tipehalefthebrew 16#0596
-/tippigurmukhi 16#0a70
-/titlocyrilliccmb 16#0483
-/tiwnarmenian 16#057f
-/tlinebelow 16#1e6f
-/tmonospace 16#ff54
-/toarmenian 16#0569
-/tohiragana 16#3068
-/tokatakana 16#30c8
-/tokatakanahalfwidth 16#ff84
-/tonebarextrahighmod 16#02e5
-/tonebarextralowmod 16#02e9
-/tonebarhighmod 16#02e6
-/tonebarlowmod 16#02e8
-/tonebarmidmod 16#02e7
-/tonefive 16#01bd
-/tonesix 16#0185
-/tonetwo 16#01a8
-/tonos 16#0384
-/tonsquare 16#3327
-/topatakthai 16#0e0f
-/tortoiseshellbracketleft 16#3014
-/tortoiseshellbracketleftsmall 16#fe5d
-/tortoiseshellbracketleftvertical 16#fe39
-/tortoiseshellbracketright 16#3015
-/tortoiseshellbracketrightsmall 16#fe5e
-/tortoiseshellbracketrightvertical 16#fe3a
-/totaothai 16#0e15
-/tpalatalhook 16#01ab
-/tparen 16#24af
-/trademark 16#2122
-/trademarksans 16#f8ea
-/trademarkserif 16#f6db
-/tretroflexhook 16#0288
-/triagdn 16#25bc
-/triaglf 16#25c4
-/triagrt 16#25ba
-/triagup 16#25b2
-/ts 16#02a6
-/tsadi 16#05e6
-/tsadidagesh 16#fb46
-/tsadidageshhebrew 16#fb46
-/tsadihebrew 16#05e6
-/tsecyrillic 16#0446
-/tsere 16#05b5
-/tsere12 16#05b5
-/tsere1e 16#05b5
-/tsere2b 16#05b5
-/tserehebrew 16#05b5
-/tserenarrowhebrew 16#05b5
-/tserequarterhebrew 16#05b5
-/tserewidehebrew 16#05b5
-/tshecyrillic 16#045b
-/tsuperior 16#f6f3
-/ttabengali 16#099f
-/ttadeva 16#091f
-/ttagujarati 16#0a9f
-/ttagurmukhi 16#0a1f
-/tteharabic 16#0679
-/ttehfinalarabic 16#fb67
-/ttehinitialarabic 16#fb68
-/ttehmedialarabic 16#fb69
-/tthabengali 16#09a0
-/tthadeva 16#0920
-/tthagujarati 16#0aa0
-/tthagurmukhi 16#0a20
-/tturned 16#0287
-/tuhiragana 16#3064
-/tukatakana 16#30c4
-/tukatakanahalfwidth 16#ff82
-/tusmallhiragana 16#3063
-/tusmallkatakana 16#30c3
-/tusmallkatakanahalfwidth 16#ff6f
-/twelvecircle 16#246b
-/twelveparen 16#247f
-/twelveperiod 16#2493
-/twelveroman 16#217b
-/twentycircle 16#2473
-/twentyhangzhou 16#5344
-/twentyparen 16#2487
-/twentyperiod 16#249b
-/two 16#0032
-/twoarabic 16#0662
-/twobengali 16#09e8
-/twocircle 16#2461
-/twocircleinversesansserif 16#278b
-/twodeva 16#0968
-/twodotenleader 16#2025
-/twodotleader 16#2025
-/twodotleadervertical 16#fe30
-/twogujarati 16#0ae8
-/twogurmukhi 16#0a68
-/twohackarabic 16#0662
-/twohangzhou 16#3022
-/twoideographicparen 16#3221
-/twoinferior 16#2082
-/twomonospace 16#ff12
-/twonumeratorbengali 16#09f5
-/twooldstyle 16#f732
-/twoparen 16#2475
-/twoperiod 16#2489
-/twopersian 16#06f2
-/tworoman 16#2171
-/twostroke 16#01bb
-/twosuperior 16#00b2
-/twothai 16#0e52
-/twothirds 16#2154
-/u 16#0075
-/uacute 16#00fa
-/ubar 16#0289
-/ubengali 16#0989
-/ubopomofo 16#3128
-/ubreve 16#016d
-/ucaron 16#01d4
-/ucircle 16#24e4
-/ucircumflex 16#00fb
-/ucircumflexbelow 16#1e77
-/ucyrillic 16#0443
-/udattadeva 16#0951
-/udblacute 16#0171
-/udblgrave 16#0215
-/udeva 16#0909
-/udieresis 16#00fc
-/udieresisacute 16#01d8
-/udieresisbelow 16#1e73
-/udieresiscaron 16#01da
-/udieresiscyrillic 16#04f1
-/udieresisgrave 16#01dc
-/udieresismacron 16#01d6
-/udotbelow 16#1ee5
-/ugrave 16#00f9
-/ugujarati 16#0a89
-/ugurmukhi 16#0a09
-/uhiragana 16#3046
-/uhookabove 16#1ee7
-/uhorn 16#01b0
-/uhornacute 16#1ee9
-/uhorndotbelow 16#1ef1
-/uhorngrave 16#1eeb
-/uhornhookabove 16#1eed
-/uhorntilde 16#1eef
-/uhungarumlaut 16#0171
-/uhungarumlautcyrillic 16#04f3
-/uinvertedbreve 16#0217
-/ukatakana 16#30a6
-/ukatakanahalfwidth 16#ff73
-/ukcyrillic 16#0479
-/ukorean 16#315c
-/umacron 16#016b
-/umacroncyrillic 16#04ef
-/umacrondieresis 16#1e7b
-/umatragurmukhi 16#0a41
-/umonospace 16#ff55
-/underscore 16#005f
-/underscoredbl 16#2017
-/underscoremonospace 16#ff3f
-/underscorevertical 16#fe33
-/underscorewavy 16#fe4f
-/union 16#222a
-/universal 16#2200
-/uogonek 16#0173
-/uparen 16#24b0
-/upblock 16#2580
-/upperdothebrew 16#05c4
-/upsilon 16#03c5
-/upsilondieresis 16#03cb
-/upsilondieresistonos 16#03b0
-/upsilonlatin 16#028a
-/upsilontonos 16#03cd
-/uptackbelowcmb 16#031d
-/uptackmod 16#02d4
-/uragurmukhi 16#0a73
-/uring 16#016f
-/ushortcyrillic 16#045e
-/usmallhiragana 16#3045
-/usmallkatakana 16#30a5
-/usmallkatakanahalfwidth 16#ff69
-/ustraightcyrillic 16#04af
-/ustraightstrokecyrillic 16#04b1
-/utilde 16#0169
-/utildeacute 16#1e79
-/utildebelow 16#1e75
-/uubengali 16#098a
-/uudeva 16#090a
-/uugujarati 16#0a8a
-/uugurmukhi 16#0a0a
-/uumatragurmukhi 16#0a42
-/uuvowelsignbengali 16#09c2
-/uuvowelsigndeva 16#0942
-/uuvowelsigngujarati 16#0ac2
-/uvowelsignbengali 16#09c1
-/uvowelsigndeva 16#0941
-/uvowelsigngujarati 16#0ac1
-/v 16#0076
-/vadeva 16#0935
-/vagujarati 16#0ab5
-/vagurmukhi 16#0a35
-/vakatakana 16#30f7
-/vav 16#05d5
-/vavdagesh 16#fb35
-/vavdagesh65 16#fb35
-/vavdageshhebrew 16#fb35
-/vavhebrew 16#05d5
-/vavholam 16#fb4b
-/vavholamhebrew 16#fb4b
-/vavvavhebrew 16#05f0
-/vavyodhebrew 16#05f1
-/vcircle 16#24e5
-/vdotbelow 16#1e7f
-/vecyrillic 16#0432
-/veharabic 16#06a4
-/vehfinalarabic 16#fb6b
-/vehinitialarabic 16#fb6c
-/vehmedialarabic 16#fb6d
-/vekatakana 16#30f9
-/venus 16#2640
-/verticalbar 16#007c
-/verticallineabovecmb 16#030d
-/verticallinebelowcmb 16#0329
-/verticallinelowmod 16#02cc
-/verticallinemod 16#02c8
-/vewarmenian 16#057e
-/vhook 16#028b
-/vikatakana 16#30f8
-/viramabengali 16#09cd
-/viramadeva 16#094d
-/viramagujarati 16#0acd
-/visargabengali 16#0983
-/visargadeva 16#0903
-/visargagujarati 16#0a83
-/vmonospace 16#ff56
-/voarmenian 16#0578
-/voicediterationhiragana 16#309e
-/voicediterationkatakana 16#30fe
-/voicedmarkkana 16#309b
-/voicedmarkkanahalfwidth 16#ff9e
-/vokatakana 16#30fa
-/vparen 16#24b1
-/vtilde 16#1e7d
-/vturned 16#028c
-/vuhiragana 16#3094
-/vukatakana 16#30f4
-/w 16#0077
-/wacute 16#1e83
-/waekorean 16#3159
-/wahiragana 16#308f
-/wakatakana 16#30ef
-/wakatakanahalfwidth 16#ff9c
-/wakorean 16#3158
-/wasmallhiragana 16#308e
-/wasmallkatakana 16#30ee
-/wattosquare 16#3357
-/wavedash 16#301c
-/wavyunderscorevertical 16#fe34
-/wawarabic 16#0648
-/wawfinalarabic 16#feee
-/wawhamzaabovearabic 16#0624
-/wawhamzaabovefinalarabic 16#fe86
-/wbsquare 16#33dd
-/wcircle 16#24e6
-/wcircumflex 16#0175
-/wdieresis 16#1e85
-/wdotaccent 16#1e87
-/wdotbelow 16#1e89
-/wehiragana 16#3091
-/weierstrass 16#2118
-/wekatakana 16#30f1
-/wekorean 16#315e
-/weokorean 16#315d
-/wgrave 16#1e81
-/whitebullet 16#25e6
-/whitecircle 16#25cb
-/whitecircleinverse 16#25d9
-/whitecornerbracketleft 16#300e
-/whitecornerbracketleftvertical 16#fe43
-/whitecornerbracketright 16#300f
-/whitecornerbracketrightvertical 16#fe44
-/whitediamond 16#25c7
-/whitediamondcontainingblacksmalldiamond 16#25c8
-/whitedownpointingsmalltriangle 16#25bf
-/whitedownpointingtriangle 16#25bd
-/whiteleftpointingsmalltriangle 16#25c3
-/whiteleftpointingtriangle 16#25c1
-/whitelenticularbracketleft 16#3016
-/whitelenticularbracketright 16#3017
-/whiterightpointingsmalltriangle 16#25b9
-/whiterightpointingtriangle 16#25b7
-/whitesmallsquare 16#25ab
-/whitesmilingface 16#263a
-/whitesquare 16#25a1
-/whitestar 16#2606
-/whitetelephone 16#260f
-/whitetortoiseshellbracketleft 16#3018
-/whitetortoiseshellbracketright 16#3019
-/whiteuppointingsmalltriangle 16#25b5
-/whiteuppointingtriangle 16#25b3
-/wihiragana 16#3090
-/wikatakana 16#30f0
-/wikorean 16#315f
-/wmonospace 16#ff57
-/wohiragana 16#3092
-/wokatakana 16#30f2
-/wokatakanahalfwidth 16#ff66
-/won 16#20a9
-/wonmonospace 16#ffe6
-/wowaenthai 16#0e27
-/wparen 16#24b2
-/wring 16#1e98
-/wsuperior 16#02b7
-/wturned 16#028d
-/wynn 16#01bf
-/x 16#0078
-/xabovecmb 16#033d
-/xbopomofo 16#3112
-/xcircle 16#24e7
-/xdieresis 16#1e8d
-/xdotaccent 16#1e8b
-/xeharmenian 16#056d
-/xi 16#03be
-/xmonospace 16#ff58
-/xparen 16#24b3
-/xsuperior 16#02e3
-/y 16#0079
-/yaadosquare 16#334e
-/yabengali 16#09af
-/yacute 16#00fd
-/yadeva 16#092f
-/yaekorean 16#3152
-/yagujarati 16#0aaf
-/yagurmukhi 16#0a2f
-/yahiragana 16#3084
-/yakatakana 16#30e4
-/yakatakanahalfwidth 16#ff94
-/yakorean 16#3151
-/yamakkanthai 16#0e4e
-/yasmallhiragana 16#3083
-/yasmallkatakana 16#30e3
-/yasmallkatakanahalfwidth 16#ff6c
-/yatcyrillic 16#0463
-/ycircle 16#24e8
-/ycircumflex 16#0177
-/ydieresis 16#00ff
-/ydotaccent 16#1e8f
-/ydotbelow 16#1ef5
-/yeharabic 16#064a
-/yehbarreearabic 16#06d2
-/yehbarreefinalarabic 16#fbaf
-/yehfinalarabic 16#fef2
-/yehhamzaabovearabic 16#0626
-/yehhamzaabovefinalarabic 16#fe8a
-/yehhamzaaboveinitialarabic 16#fe8b
-/yehhamzaabovemedialarabic 16#fe8c
-/yehinitialarabic 16#fef3
-/yehmedialarabic 16#fef4
-/yehmeeminitialarabic 16#fcdd
-/yehmeemisolatedarabic 16#fc58
-/yehnoonfinalarabic 16#fc94
-/yehthreedotsbelowarabic 16#06d1
-/yekorean 16#3156
-/yen 16#00a5
-/yenmonospace 16#ffe5
-/yeokorean 16#3155
-/yeorinhieuhkorean 16#3186
-/yerahbenyomohebrew 16#05aa
-/yerahbenyomolefthebrew 16#05aa
-/yericyrillic 16#044b
-/yerudieresiscyrillic 16#04f9
-/yesieungkorean 16#3181
-/yesieungpansioskorean 16#3183
-/yesieungsioskorean 16#3182
-/yetivhebrew 16#059a
-/ygrave 16#1ef3
-/yhook 16#01b4
-/yhookabove 16#1ef7
-/yiarmenian 16#0575
-/yicyrillic 16#0457
-/yikorean 16#3162
-/yinyang 16#262f
-/yiwnarmenian 16#0582
-/ymonospace 16#ff59
-/yod 16#05d9
-/yoddagesh 16#fb39
-/yoddageshhebrew 16#fb39
-/yodhebrew 16#05d9
-/yodyodhebrew 16#05f2
-/yodyodpatahhebrew 16#fb1f
-/yohiragana 16#3088
-/yoikorean 16#3189
-/yokatakana 16#30e8
-/yokatakanahalfwidth 16#ff96
-/yokorean 16#315b
-/yosmallhiragana 16#3087
-/yosmallkatakana 16#30e7
-/yosmallkatakanahalfwidth 16#ff6e
-/yotgreek 16#03f3
-/yoyaekorean 16#3188
-/yoyakorean 16#3187
-/yoyakthai 16#0e22
-/yoyingthai 16#0e0d
-/yparen 16#24b4
-/ypogegrammeni 16#037a
-/ypogegrammenigreekcmb 16#0345
-/yr 16#01a6
-/yring 16#1e99
-/ysuperior 16#02b8
-/ytilde 16#1ef9
-/yturned 16#028e
-/yuhiragana 16#3086
-/yuikorean 16#318c
-/yukatakana 16#30e6
-/yukatakanahalfwidth 16#ff95
-/yukorean 16#3160
-/yusbigcyrillic 16#046b
-/yusbigiotifiedcyrillic 16#046d
-/yuslittlecyrillic 16#0467
-/yuslittleiotifiedcyrillic 16#0469
-/yusmallhiragana 16#3085
-/yusmallkatakana 16#30e5
-/yusmallkatakanahalfwidth 16#ff6d
-/yuyekorean 16#318b
-/yuyeokorean 16#318a
-/yyabengali 16#09df
-/yyadeva 16#095f
-/z 16#007a
-/zaarmenian 16#0566
-/zacute 16#017a
-/zadeva 16#095b
-/zagurmukhi 16#0a5b
-/zaharabic 16#0638
-/zahfinalarabic 16#fec6
-/zahinitialarabic 16#fec7
-/zahiragana 16#3056
-/zahmedialarabic 16#fec8
-/zainarabic 16#0632
-/zainfinalarabic 16#feb0
-/zakatakana 16#30b6
-/zaqefgadolhebrew 16#0595
-/zaqefqatanhebrew 16#0594
-/zarqahebrew 16#0598
-/zayin 16#05d6
-/zayindagesh 16#fb36
-/zayindageshhebrew 16#fb36
-/zayinhebrew 16#05d6
-/zbopomofo 16#3117
-/zcaron 16#017e
-/zcircle 16#24e9
-/zcircumflex 16#1e91
-/zcurl 16#0291
-/zdot 16#017c
-/zdotaccent 16#017c
-/zdotbelow 16#1e93
-/zecyrillic 16#0437
-/zedescendercyrillic 16#0499
-/zedieresiscyrillic 16#04df
-/zehiragana 16#305c
-/zekatakana 16#30bc
-/zero 16#0030
-/zeroarabic 16#0660
-/zerobengali 16#09e6
-/zerodeva 16#0966
-/zerogujarati 16#0ae6
-/zerogurmukhi 16#0a66
-/zerohackarabic 16#0660
-/zeroinferior 16#2080
-/zeromonospace 16#ff10
-/zerooldstyle 16#f730
-/zeropersian 16#06f0
-/zerosuperior 16#2070
-/zerothai 16#0e50
-/zerowidthjoiner 16#feff
-/zerowidthnonjoiner 16#200c
-/zerowidthspace 16#200b
-/zeta 16#03b6
-/zhbopomofo 16#3113
-/zhearmenian 16#056a
-/zhebrevecyrillic 16#04c2
-/zhecyrillic 16#0436
-/zhedescendercyrillic 16#0497
-/zhedieresiscyrillic 16#04dd
-/zihiragana 16#3058
-/zikatakana 16#30b8
-/zinorhebrew 16#05ae
-/zlinebelow 16#1e95
-/zmonospace 16#ff5a
-/zohiragana 16#305e
-/zokatakana 16#30be
-/zparen 16#24b5
-/zretroflexhook 16#0290
-/zstroke 16#01b6
-/zuhiragana 16#305a
-/zukatakana 16#30ba
-.dicttomark readonly def
-/currentglobal where
-{pop currentglobal{setglobal}true setglobal}
-{{}}
-ifelse
-/MacRomanEncoding .findencoding
-/MacGlyphEncoding
-/.notdef/.null/CR
-4 index 32 95 getinterval aload pop
-99 index 128 45 getinterval aload pop
-/notequal/AE
-/Oslash/infinity/plusminus/lessequal/greaterequal
-/yen/mu1/partialdiff/summation/product
-/pi/integral/ordfeminine/ordmasculine/Ohm
-/ae/oslash/questiondown/exclamdown/logicalnot
-/radical/florin/approxequal/increment/guillemotleft
-/guillemotright/ellipsis/nbspace
-174 index 203 12 getinterval aload pop
-/lozenge
-187 index 216 24 getinterval aload pop
-/applelogo
-212 index 241 7 getinterval aload pop
-/overscore
-220 index 249 7 getinterval aload pop
-/Lslash/lslash/Scaron/scaron
-/Zcaron/zcaron/brokenbar/Eth/eth
-/Yacute/yacute/Thorn/thorn/minus
-/multiply/onesuperior/twosuperior/threesuperior/onehalf
-/onequarter/threequarters/franc/Gbreve/gbreve
-/Idotaccent/Scedilla/scedilla/Cacute/cacute
-/Ccaron/ccaron/dmacron
-260 -1 roll pop
-258 packedarray
-7 1 index .registerencoding
-.defineencoding
-exec
-
-%%BeginResource: file (PDF object obj_5)
-5 0 obj
-<<
-/Metadata 4 0 R
- >>endobj
-%%EndResource
-%%BeginResource: file (PDF Extended Graphics State obj_7)
-7 0 obj
-<</Type/ExtGState
-/SA true>>endobj
-%%EndResource
-%%BeginResource: file (PDF Color Space obj_9)
-9 0 obj
-[/Separation
-/PANTONE#20307#20C
-/DeviceCMYK
-8 0 R]endobj
-%%EndResource
-%%BeginResource: file (PDF object obj_4)
-4 0 obj
-<</Filter[/ASCII85Decode
-/LZWDecode]
-/Subtype/XML
-/Type/Metadata/Length 37294>>stream
-J.DnJK7S]qCGMF`"sYRedV^+^Sa3]YLd5Z06qZK;BY^'U+dl%/P!S<mALX4-`BtO,emf\f"@M_K
-.!TtW*Y#"LCa?k?SJr$Y3Qsn.A2hC2<&)npk[>:HV\>hVd+8jPdNO2D_).f-+e.QP!N<M?/MW1g
-,7sq.Cb?Qa#.EKHYWstO%#*^Ld(jHL\;m_%Toe%qLW!W>;d;TWjCC%VMF9cg!8Bi7A'E=66."h7
-*=KjLI3?&f1Da/Piphif?$j6nL-j\B[,uWm;pPO!(loF>`8U7>!RVJ$F"s2E2,d)Zg`XiON$]cp
-eEIPWE&^"l%5OoQcY,.70m+P#AJZ3.k0\J4_Jn'6L(tc]D\Ls$<=%ZLBqN2eZlse;o-'/ff(QfG
-MrrQL0C#:O5/@;<SVKNM:,%]\.#A?@U%7[iL7rA[(9jO-nA,<k6N at r.6%E>a4g:_51;f4/1C-1k
-Rm8<[iulc+%l(FQ&&^1B9,!&b9Tp41Z$^%%a0GPp%S%#aFUH"GU;SMjj*92u.k`kI,`RFal8alW
-PVB?n!gmd8"TiEILW`&PckOJ,Up1h26^5,79!/T*-E"a,0JLREo$nqfniU&#`BfGc(Jc`]#cH%l
-I1lD!e'P$M%\m^U2[gp%fK%;5bG$,=K;DKP_G5p>1qF/@$98T+.&]7g""GKD3:<a+0oW75 at 9?#q
-g\Mp#keQC=6d)#M3*AU3R:f\;jc7:40BK8l%&6A=cA05lE#`&)W-*&a=!b7k\51Yf*=U+&gC+>(
-:nT"gpJ'gsN`Wo"GMX,&QNiBn4?=:6,>_\b#U0PK.?.f`PUR%##_X=Zi[BC-j$HKb+pHr8U*,J*
-W/`\E_]XsZO$aC`4,G.(RQ?;8LhJ2r at pkfLKjf]\U#T786)%l*0Le/1+l4IfA6L<T+U-h2+<h8(
-0\.r_6;Z;WLuP:gLlB/p`#smtR*I+9\CdjjN8gdp+UmC5NZe`RaHRj.j$)leN8e6$+H>Aeq82B"
-@!3`(@W)H4n\PS"..CZAp)o+lIi'MiS!]p"#c#3'0aQgWO<b>;^s1AO?"[2"Ln[.f4,dWm"rI_0
-BS%es@]6(I$:B;Ee;W0XS(Dp,-^3-W?>l7ppjS!bkj5"_+sMn(aQt&0glRCBGhR>f.:PV^ag0sE
-%\ni:(mfBRCk%88,B?+AO,4,d5_^D at HoGHO6T[/Rb\d,>(*`N\_u"IkbVOu-Oq>KdD[DJIrIl%3
-g;4eN$uRf,5B,Bk=P.86b\SDT@$24U89bIb=agKMA._1"@s9(qO0Z!C*Wiu(%3[t[4qO_7!^LE*
-U#7L,ODkcJOEh8nfHQ'cU)noJ<"39S-&7Sf%)RN^$,KRhL>^VlJpAgT!K\dbTTBli+>=;!,UA&9
-h at j,GBFNj51bj3)*($#H$Gk(:"^mW-K91?_JA$BF&7Q<iTJ-a>?n6n<fGHrb0b4;H/-`n1'uJ<Q
-%0RA'LHsu=LtHm.iCFf?5hm4XTOeK3^`0kh at LC",1C<"S1^/uX&d(`'$"9VJ#EYGoK6SmP at B:B$
-0WZ3.kZJ at gC%-lm7M:96AIZH)-&/)N'#M1@#0/8SLD8%&JZs;,muatC<bgJ1H['`fmDfDZ$5rsr
-N!Ni+.>6:/&Y8Dd%07e9LPY()6d+F;+Wrk"@%%]0O>I;Q3$Er_X:h4c9FjE;+rN8X(daTi%j>17
-Kog0c+O!r]@?`&@:sUE(W,$=V`]8^Fe/!Wi7jA&91/EF4%KhYu%e1r,4qM*/_LQrmXACr<^o at i1
-J5Qi-O=Z*)X;h<R=9u^^<<F/((5$<lOo`?Y3^@-p>3)KDd\9`6a^$GDPdHb)ia#4!I4u`K.gU^1
-,mA7j)ZcmOWr^!sL+qBuJZraD at 6?E/:r40GTP^0kfK?$miX3T-0+9C"41I1E4Q*R,#`i(-KhuG&
-6+BAl!G9\^.nODk(i]b at KJeDoX:uZ<<sdi=49E$qf#!qJ%)CL4L*2Wg!E_(R+M9]<0Sg00!([J@
-Qnel]E"dh54V&^3/-Kq_%>3"q%7%!SYqUhOWXs7ViTN!$OBrA`-+sZE:_eb`_ at lu9@L]"n+G0*%
-%RM:`#p?<-#!4&$6Ss5uTpf:p@,H)-KO"n7cnRL&C)Xp:ZN];50SaUd*.k\3%AD]-"-D.TJQOf9
-X&'dhi*mTl%/Meh4=CDa_Y?JH:^Q)o-jNS)l3!\[$%]<(i%W:jJQOc;+cmkg5b8Ge5W8l*kTa0E
-g_.Gj10(#Y-j="A&:q&E%l-nr"#+*l"#*.J!SeTI+P%E_.!ESGe1:atACZ:I3IDt%2ZiL>*-,.9
-$t5MJ#%5Xo64d`6!Mh-q?tAanLe\0*ZoJlZ at rfK6AI5&h3JEQj$GqmN#lrU<LHO'+_gk;)@*kp+
-Hc?d&LbTDd5U(nQrY:$X0aSAD49dKY'EQ!f$Gkd["DpOG!LS0D2m>"?9`tn+]"/1KBIX/#iXt4f
-ljhER.;*%q*W^M%$3;Omm8m+"8f1Y9Tp.9e!8J"c:cSl.-oZj<aq92LG0Y<bTEQHGfl>A0"^t at M
-#@Q+%[(p/X!Os*O&=h9<*d\2:kU)!;Ql`5"<!tu+3O^\_%K]I&ha(?kb'c^N(fhCZ!LP29?.'G(
-6Y-_\c)&'rfF:,k<XHTU3s.a>'S2?d#/Q*M"@2Kin*[]H!8'C:0[q)ZTLT=I<&b"'W"]94)\54A
-4mRW5%)Z9g"^r3S9%_?#Jl"03!9>#9TW>R)E'\`]ZlOmoBG*X^>)6SI-\ZN6$c5/P$K3rZKlCW5
-6dRRr5h%=R0U`Ee5Y)<78=&(.<XqJFC(<NlY6.c%)hW)t#5OjZ"`6.7_k8No_&+YC5ZU1fE)#tT
-g$nA6Je3K`7LgSrCBFQu)oK`f%L\dT9J+i\GJ7GjJ_,JY?t9nf&7uBf0GT;7Sf301:^s*B,m>EO
-'#BB>%7*Z+#>P^=!LQ:[dL;Iqd-\BMQYZk6g`qKFDlc8R:_$];1L(K^F>#bjf/61"KJ<$.X$R=k
-*XG<l%fgVV at +Yhh7\4#Y%\V#R5fsEV`XO&F#"sIN:+umP:('>F%I;:K5fsF!kR.X4#p>09!9=L&
-jp'c!#3kKd at +5K5"JnAZh&p59+P$cJU('B[\q%'o+R"i9ndN=4#p>ZG5_KD5J-HI-%kCPc$Vn(P
-9*t*`ZmW`uNqU'mC^L5sfq at 1+6hh)*Wf2IE#_8i[^n;#WAdZ?D$tr]6TV)N4g8R`:$,E,>/c<]J
-DMI*3%Bnn(i1(/TnD.Y@%)D?:i*[%F`!W01Hm&%g+C\<#m\f0j%Z*#Ni)U0"U:4i/c_,"^Jjoq'
-OTFBN%k<5hN#iK`\.2o,%RAMJ+Gp>7fEa`X"cf;c5]5VAZAcTY#s`5/Cf7r!=E-U1$=Ke>^i'=*
-TFN6S%)CL$5_obTg]e0d$-d>l!2KmnbRTM^dbpi(JF(HSQj)VQ#6<'-!Y>]HbR&%jm6KM4mMt]2
-`XISS#cij07aMYGl3`<`"lRl>J=9a$C(,'OKe at NT!/LipZ4--1%=jfSYb;DCUC*/5,&9^Y?rk2G
-W"-V/9]3o"5iN./ecnD'"q6_)+P7+#_?j&W]]\^;i,\:ZmLMST%7'KYLnps,Sd`cC#YO.`;&$\$
-n-5P*!?g5,8GGloaN%\]#!eop at -IS4g._ROf*<Q//f=Z)i!,j-%n!@E+R0I[EgM<a#`SL+ at -.g`
-":eh`%o!2V+CYZXQjE4a#9`7]!3@>oQKaAk%#!+ii0>'CPbMPl$,C6PaX%&;5R at FJ$/j)50+%l%
-=:6bNHm#/Yi,T/2#S',l$UhWbTVMemBRN^7%`#.M+KWH\`X$LA%3X./n2q22W!sl<#b^K6a#Yh<
-bRP-jFH2LmTTF+cn-/mZ%j:4b__.C.E";s$#q*UgJ6iT at Ng6W61uP5:j5("'$k/ercE>I`^i0KC
-er%Xe#!g6ci,ZVkbR.b!C=C%`!7V>?4USO[$@o03i5DQa_NQ*O#!c3qi5G\Hj9X]-$"0)Pi3+)M
-Adj8Z%\T%LJB/5Yj9=In$"3647NfAL#3!@j%KOu_?s^2N&?u4e#_;@D^o at mG^m0g^*FNIgTU6)r
-1413`%mXq?Y at 7t55RLoP&LfOG!,)hgj:%\p#"(!J+RY):ZjT-4G6#k7+BA^]63aT)%cqjB^oj!]
-aM&d3%D^[+^uc"iKN`oQ#/Hl at i,T<8Qjc^?$/giWcI`Q`A.C!`#XHN>^n(bgM@<D8$uF)@@$V-b
-lNBKD=Fc]j#CHk2E!d_p%\W:uc]:rR+X=B:;Dft&Pp]I0/Q4MVHo3VQi85C0S-^<H"X(cA+Ku3X
-i!A7\'$c;+K9Qk]dgk;H`h8d at K@C@'mL15D$@qUn5aDjl"?-uTa^EUk:<3_AlRkHD%j8q#!8Ict
-8e,6D%j59G+J9/$OQunF"lR`;?tAc"kuO$V%"OiX+Nb2pOpYT/%fkAo!2'aUE"#"Ko]&CH1?&fe
-Ar2'#k$Z[JC;:)t`!Sct$P)7^!1+0<E!lYt%O]+#5b\[F5eS<4$&:>CJD:FGnQ)=8"^p6ui2%<A
-W"&g+$E\%Od,Jf*Pg(=P*C06).WH:*mL<Q^0`[RJ^lA]Y='?q/YJBK/c&<$.0^ZtN5 at EIU-\=o:
-?k/j$#9[UeT\'J,UkjQb%.[6b!-(eb?k5M[-5AH6i8P/qoF,,<"tI4k^mkp8JdB0Y#\A?U-8:=A
-F9t4>khq%!XKDk%"AFP<__.)Z5aW$HYRR]!Ij!O35c65"j?mhk%Ud@)2:)R.a:+&k#qVAK'T.k>
-?4T;aV_t+O^u,XFW!4AN$t*c!5k<g2d/Dm'%HkS:d;Zr&mKc(F"p!0^oF;/Jp^,r]9d%Opa!M4F
-Y0*EkgQq+/G3Z$aUrI#T#scE5J?fB0n:#nfLqqHe+GL&-aN8L`#U#cGnhA$7m486H%Ur0;/&Va.
-:n1p`K[m47+I3EYR9a4'$D=DO at +GgK@,to$#/fR25Z[,]TFG;_#%66u1.]<#U3iPb#;k'>J6i]O
-W-ZSsA[*5fi/6INoTH4l%A:!:^mko8lisff?;[6&1dHDT.tV5`cG5SO5[Fnmm,((,$+C.!i91B<
-lV,LG$n^.aG4+6S;hG=mK0ZYLe/mT,Yj\6)6"#cYZ+#'h4Ps7DE1iX/+HHP2_KA1)%g6Rke6W at K
-4:-OY%Tg8o9lLU#bQa`.1I0P$;[XmHf[gs'KG`<oXm]bm at mg<lNDMIWda^[7LP>M5L1");\8HW@
-*Xk=!%8H['5jAO2C^B/pK"-O@/oCrS">2S"%B%*ri15ndon:ujO-oi&@.%$RlG$G0L0//EfO\'m
-Fbbl$L\T>XGhYQB9&TMDPCW4[XpP?q_@;ktgRqRT!,`/VnW1322/5$cTTWlKJW#>>MtQ]O\ASRG
-ac+#9N`GP/flN/F5RGYD#8lck3(]?On!J>r"o4RIq4;oc=dMqH"lRtRO"HhpJ!%8`Os'/uH+`Ef
-ljdX-13kd>H%(S$8XP%!R+[Ui8&E"FW"#UqDN3nL+RPVBf:&G-PrNi?@%i at dC^1io._ohP/=21g
-"dg2ER&r$8i6 at unqkBJ^O?,+k=M($S_i/i`UH/HkJCgHLXdi?=#b"bM3&c\]SVdF3HZs(AQsp>`
-qkD=?M_?X9)=@d`o9"=npt6mTAk>D%JY7uWP>2LZ)Hb`T?'tGOVE1EJROkbNSF)&63>i9g).TH;
-Bnt1d$$dp&q(*%Y0o4JE7N.EspmXp&QjOu$4ojDu at ."4AV at P_>%Y1>bF#"63Stdc5%0]oE,B*ip
-B66n0:fVB=RL(^!A:b6;?,0t\^t9+(JdEV4#5H>j/C"GD<!]/P%H*<WLnG+u<eZ'op41Qui0Xhd
-kZm7Z#"QN?!+PcD)@Jgc%]gc^^u2Z:SdiK<$)#B+@'U4alj1DT#f)<,T^!!O-4,4%'nF:Ki5>hm
-kRPD^#f*.,LeJ"qS.39`#4eu/!7ZcHEX'=KP$7me=bQ12K:og"6lB?NHNg+3*!Y^kf-CMM?u"7e
-27k!dW^,4:-Y`jd#RR]XHD'g7:A+tfIL-DV:LMlcp.,Ktk9%26nq\Cq@$`+rW at uGW.uI%qnIc&u
-WI:Fm#[hXf at -&O?7O8&1%5o+7+Q"FjoORGN$8NY35a2`])@b%J7Gq^[.]Kpcf1)#FrZL13@%IXB
-j9V+31#QXL?ucH"WEiBj[SRJ%:>HlIU^&bUBu&:,#h002Jde<<%(@eEc;RB/EbGHH$\4TS at .4O(
-Qq,,7Hm#Q>JEPA=dT7GHe"&5B]ee.94pl+l#_:qGT[oFeb0GO!$m=o]+MnIB$;DY%#9_q8+Pm=<
-X:=8&_gmRV^n,p2I2h,&#U$@4Cjl[5Z@^*u%I3j#/n%qc at LD&P.q$R15_93uJe(-6!C25C5b5Vk
-7L<p"#-Vk#Xn2udEuZ<`VoF)kn/$0hd_+b[mjG6Yl^"!1bDgei%nTq/5bGj-Wjf?%$PC4R@*1<*
-9*V%q#u9paH*l<?^;p<EO+?g4dI7L9ljjO/6i7R:=YL78#N%ddM?%F^[dF<,Amr3pfmp3"4lj9D
-o#Z=uiPYnO!/&AFf?8\OEPhDoi8[3H2<04,j4XFNmb-ZLalL/1f,abth>uP@#su'^JcZK?@#0[W
-Ol?'X$(`Gd!*57jO[=Se#,%1b^uD3kKEiIE%cESF^op'Zq!ETL#`d"SJ?fH2AJ's*CTHGY*[g:s
-DnFr[\".=kiY0T;l7Hgi$)/;dbp:%hNonW[_r.6nZ$Ho\hPPhq"osMe5fS_4_dUjD$k30^i1Nde
-i9Vu:%=mFESRjUmYCm)R2PBCH4IQa"8SCB=%"RUME^?[tn-/l)#1!Pa?uQE$"`C!hO)>(1J:cM>
-E"<n:"p!Ke!10^1T(2lg$'_\d]T*@"YQci?%KL=%+J''WljQp,<.L\OT[ni?cRG_*#%4CP+J0\G
-*OnA[U#Phi#-k^Lnj>2B`WItEXDVJcPRZd'31*0[+HFYkZRH`UD_)XGA9+qCE+:_naMi2)TW1^0
-PKi0Pd7Dhg*0a!K+s=OM6n/jDL1.n$RWLIt8`laeLkJ>^*(^@_$(Q$=,8a-cj-`T63>[niVfAs#
-.2EqgL>u3 at A>FDtPKJY*af&6`)AC3sidmo(7j]2d7_uXbc7::Oaet<1/>@,?OGY<ol"569.3=B,
-K!CEcE]N:R\aml#j[V4db!b54f#njm(ec::Lu>:6(`X"gU*1N>![O"b7P]hAP^"Sr`^QU^5c.^2
-)G]ARE>Mq?,#X;1_m&'*FX\"6K/:luC/Q#m%\j+TX("OR'a\EWBb4rrerIbI&g>2h80s(e(t9FZ
-,KQH-$A6^p(Q+qhZl07f^sY?!ifKHC"_5X+4Ga-\iZ!]j`&eLJ0_ at XC7+!PW&]E\Eg+s2a'CH]k
- at aODO$R.ju3X?nEkTgM0E1AG8_Dp%+L#[u04:G^:niMjTODlNQD4%7_%g$u^1Ch<9mMH-qE:18q
- at t:R8%&+#D2[\NJlmdo:W+$p,!\f]t%HDDF2SS0sKHS.JGk=$#iNUlO"mQr%+UlL)@N(590\.5$
-$MoK<#_P[l\W0;GW#(1TB^?Rr0%,J4Y(Ik9"HDB-eeejJ]-oO26R\`ILdH^7MPB(>Sgt0LW8&q^
-+s>ek$3J"P(Q9Odn/I6.LpSF]iuhYILuP(<3sic[EZi>2LfQ%Q/XY0Q>X<V)2%"rF`\T!ZE3(2m
-UCafRM.9Z?0T'AUL,TK9\?7*81I[+p$:1nP-jGRM=+Ub[\?6YY_a(R`#m#SI)5i'?k3``=(re>3
-i[EFrN'a2[.h"_JW&=rL#i[EGJoJ+B6_Sbk,g]tuL,+Wp=CV0`ib4]?$3I!PTF at S,juSP*+L!s6
-K=LOj#,<Sa*0!9]TXg)X2C:/4 at gMEJN`ddp>7*rXgLO$R#i6^1BS&K-M]l>Q+c.D!DE!:0-u/Y:
-iIL2?L8&A:1L^CsnhQ1Kd*=\5/E8k>El0IHItj`6ln\s#0\@YSiP<esNkrf622,P%Uac\6!0AH:
-!aqlQNWHY[.?,QOiZ!eCE5ML.MBsM_MD[q83=[7+dQ at r5E82cJ6,sBr$R9'6+UR,+PsU5!J>bSR
-Q8nFnqP&N$(QH/ekTl'Q_!&<7j3ZD(#iWe5.h1KGdNp;\W-uQcE=(RI,_LWG%GdCj%A>11"u,BT
-Jd=mW%:hJPnFRA\6]_R^0K4`JS5f[,1(:ui(P]/M*eH(B#,.P,,lk)<Js^3XJD;%F5aW!I&9CnR
-"<*#f`^<*I71.<H?%]B")+&RV8)V`N">I4oK-3\p+j_N!_YOn'a>!oBckuu%Or2)]@h!t0-+*0D
-)5BT7%hYZp`n8r`UKC/!@9%EdOK?NT\b?F3-oqH,iY_iC2@^&g-%u$W&)fcG#p at U@#!gZPJd?Z2
-5cc2aTUm(>]3GeR#!Rf]EZ'Lc6k'1T,D?\D%RNEo#lqUaK!<H?QC'N<6"DbQYgs[Y?n2\[Lc6Dp
-<YY_(=:B`@3<u=f*5SR,LESJn!q;E`_8%f5!AlS:d$PlLk\pjee:e'(p_CWTFpoOQ/;"M`'Ea/9
-%:M(D!jIOn_mJH%!PCPu5[o_*5\cO[TG`HFEh;8MA.AW:4HtAV)$:aG%Y5TRSeis>6caESiOC.g
-@&OM:K[:(Bcn^8Wn/-bE3I.:A1BrAq)M<lf==Rp0"e`pU6C;dPi64"[!+$Lp(ebFtbSc(DmL:?g
-8Hp?b*/%Ilb<q(o1Z;RVLJhr)6RYP;6/4 at QJDVf.&8Fr%(aF_Y*tlG at 9Ep'4/#j/N%DoE%%7+Ye
-K[@^XK4&^,aTOU*Y]BYo\5WoMg`k6eg_tdK;@\68)?k*P9rD,o$49<I"!EO9aXD'4/5/,0;!fA+
-Qt24sbW at ic<Z&_C at g4EA/-a0&$plp/$DGs)+!@!j_6 at PZa4qqpJCoN@\IA`$$p0/^ll?D;a9i4&
-.YT##_?6`T#2t4sL="'UcqsuW@?tO0+BB5/J8Pl`=??[?b12-SFCbIU-No<9'\hP^$@o2p"JpJX
-_E]V8iQ*PQk)QN1GW63Vg"@@3UL<5W<t>[M9a3u-$j0H^Zf/,)LEP:k!Lc]m at 8&V5 at +f>55\*iF
-0J\<#llH4CJd*_F2hpgg+<)/+O)Z3F']=u[_53V)iP72eTVN#!cqb$7c=b9RPRGCMGQn2Wb(F[(
-)?UO_%KQhZ"CU4$J]LH*!FRX9TPTd&PYhnrE&7_PJtjZs<Y%J3"p[u!%'QHsA\cqF+5ibr(.^q+
-+db*i:okU at 4&'bXHms\eYRA<]<t-;)+Zk4k)A5Rr%=u?_L(K#s!n2#o5ucS&0QJ&JBQF[uBIX/C
-V1o).H9U;$2hd?,D$*U3%�K/e.hm9gb95`?V_HLqE&A1Yc/mLXrj;@S1G,DU5o)Zt%S
-%RHm0KWpOJ!n>$qiQdt at LLi6YMTZM2V-KX3?a9^JGFp$D.iSIt)T,SK"p#]"KFk""K0WHEEjQ_h
-+IZ:4BJ^2AfK+\ISd^7>?4QQl2\WulO?oiL"r8ID"%X+IJl"`BTsQ?R=J#b0AHFF1Hm42^`Z<m.
-;HTXB.H?dld6ari%A>%.KQ(9s_oOM at _2'T*0]j7hTMu,1:20r_X;6Du/]k>LR"I)G&?b5>+gJmC
-`usl"_QZ!)"UH$"5fsq\/#['$1Id%jo21*TJ>U._>DH%[SJ4=K"pQ&-S,i1!Bo#oS&RNZ`3N<r!
-U1tt42)nV:<h^_(1M9550nUUu)oGd'HD-)<L(K:`K;C'$.r6dun<]@@LdqfG+biFY[&ClmGmOAE
-ie5[WahsK9eH")UKog+j_f[2k5iaDkn7??eaD2'Tco<+daCt]p6NuUo1ktc2*WeT:Oo`'=Kg<p!
-6X27.!6d;cd.,*Xamflb0IK=tlk9$u7&%f5,_l*k7mbel"sqCp3dOO56WPE?g9TH7]pBU3:cJo7
-j?%u:-ioDIJp9;-Es)S$mtbp$JoDY2O>hbN3.l59K<RKOfj96>-j+u=,KaNu&@_h02l$-c!\<+;
-fH>g6-*ONj!N7RmGVt)',S.CHJdGS43#ePi#6J+Z!f/6AaMXXk_ZFjY.9mDccmaP`3!(c^Jri$F
-(a9&q1]o-bK+k.-QoY:n1p9aXK6etu&1\,kGq=1c\,[h9]G(\a3Lq!7QsoT=QlA;h14m:[!NKr<
-aHZjp4N"I_!QZdC\l42oNZ-P""1h-X0H,r71:R/[J[dM03%4nWmX_AU]!sX!^s7Q>8qOS(,!+e9
-YVn7e3j=\cO!$6\;nN06)4;<rJiG!,:cc>s-&d?uUTcNV3&Ukp2$1Q;-]/"YBcn(f1oSbYT;aB4
-^bc/7/H\6rYt-_\q9"[.qkNqi4[AIf;(rs4<e7KY!a0"8F:BUR. at 00DK5`gQ\1*'7.g&TfJh\bX
-BIX+8RM)(7!l-Rl-olj73J(ogK+KF:J0Y6<*5jnU!sfg@!trV1BLKWoJWLcP3&@7a1kS%APK4r#
-$PJ%'XZ>;eK-2B at 5WaR]DM*5*%>ZMG5UiYY,QZ+?K$Z3Vcm>.M)Sb;$!ubp*J1H7[14tB6St([h
-TK<[o,m.O6_rr<H(a+GZ,aa+SK?-$(J0BQ<0n[7]K!YhBJ0Mn*S#csM0C_l(?n)l;1o=ZbP.2[#
-3%0F+2M3t5!h<2 at ckumV+-=jjJU/OK0I3H]."fZiK"C;6coV:o)$;!;K1Q$'0JWZl1pgpN!k9uf
-OK3uC3Nd<=!Iu>MHrbh1.4c;b%#?&-THXGN0W+n#!mr?HBIJgi)P]88!b>pG9)=MY//ocK"$pc+
-=UG3le,j(a556:R at jM4r14qh2,e4(K(`GE549L*l)/(K$5UIf01kKs,"#qucGUp2NiY_e"K5h<P
-)iK9iD$!NgO1U=&:aq%F%"WpdK:"Yp>9/TI%"b7<!gk]nYUG)/+M?np`/l8TO>aUn.Y;t)J\#-=
-MTg]L-3D9iTm/8DJ0kB8nkN:+!lF1&OQNE*+p5%e+:ootGT+h_3Wj(,!g?i@<>,J`Il at WVb)eA<
--p!!20nZD`'2TMI&2pB.%#jBgK,>DVHjVXo++_3EK4l-sYUDZE4T_-OK<_;*+^]k++IX,rTr9/f
-3$j/!)1i\]T)^Bo3'2a@,Q\tX"'_dVO?*K$gc:l5K2=TJa>F'=21f3aQ7t'b(b5]=3/`kIK")^L
-!G-jb- at o8Y!_GTY3lm=[dE`^Uc,"H8\24SE+th[?!K]#aXLLIX,m/rJY"1="cl8II2G^=9"+qZs
->OT2V(kO=`!Efg4UHjD:+k:]HS\QTRNA-P^r5\qZO176p#i^KP*!1pN[7P*6=kWt^4On\HK1nL"
-pcJSU1]q\?Ji"-n..DkZg&aea9W0BB:tpPO.&=/<*lpDDJ1M!T]n(tp0ZZ3T)L[`j711iSV%e6,
-X\o7H%M;8J=4n;9W$$^t[":=+UM04cEF:D8GCgY\K+(+&]2/NbL]Us8<sU+'P0pme^da/+!I,e,
-d,Y8<2Sd*d0^piM\Y,,\3]$ndJ]K1I1)b`V]Rdo);o7Y3C08`;<`6dYTI;+<\1j5"Y)4&D[s/bl
-3&(NV,(^@MO1?AVE'$0dG_/TEK+K=1MO?Q#2M&(g$/d/<8/i(JD,0.:Of0T-Ql+Kn+XF!0"'F;7
-CN+kVdAsbo(hB76oB$G?8V3lrK:)P>BJY:F3!0aVgY?GJkUQ_U1`1=%(XON:5WOc_3<ESCK*XL>
-Ci7&82Z]R/!K\K-a=<:iS.a9W:/jmgS32FC'p&tf]SJ<F+lS"a,SN=tNs#dk2/!#H/-F6B",RDp
-l0/5Q3WY2!JZpjATJ\WSJ4a2sK5?PhE%*)B<Zh5J/!)Xk>U*=S0`ttX(BG,/\^++J(TV42!mj%m
-L`1o=3eE#3!_f>?\/?_t.frtQ%$2f10Hs'l*iY%QJ\0eXL`%+=qL^Nk!lJdUTIc0,c4<dBMAS+I
-gPuQQ2V2+N"+fam81Oe(2$&[A"'?eLO;PKp`I]QJ!`aq at n2>j%,7G\?9)(,m6%f:F)6bM(SZqbf
-Lb++m-it+Ha=&tr,#*Z1`\UFJ"#=7#ELd3!2URmI+ilSMYSDb/4TgP5((_ajlDF`G.YGu<R0)5s
-&PlDW.0@=<?8sCaYTf8td0%`8J\?j at a;G[G,_9&C]$%Gn3&#p*Tn=I3K-ILMLa$<-pO\bYaD`)M
--mF7/+^a5CVRRRr==TKEXAO3t!sf_Z?p(fHN<63&PL^Zdb93U#Y(O5C"/E;Vai-&W68_,.K.nfc
-=?N/\1BPo_-X](>4nV5]%t\1OYA29OE%%s`!A.+nRk>$LL`.=Z2oLtFJri!L9^AGr,W1u]$udbM
-+Q*>G-n_GUO0U!tQn]Al,D'1^S,PL$c#Wp%8]V)HK!6GML`(e at 3!5X*Jlj:NO?0'DEJ(M_V%>'X
-3&<pH+pqG')YNZQ^`.oF1'5NXa2!C]Y_*\9/>`SY4,WoeMQORB3AKm(P&UW6W3It:P(UP%!mXrB
-BJ]h</@@8,K5;S2W<TpF)(b&2U[Taa^`)9Q3`<R.JflS7W;FP+G68>"-YPF>L44be2%V(.R0thQ
- at _Q.[]E*pE!E^ZM$*t>=-]dIL?^:N%M,dfR-A#Lk6C9N[-*?JK#*]re$_TE[DP)M7jLZ6Z:m`bq
-W at 3rb\J0]5ec6rt=K&tP#QrK2K6dFWeeC::)i>2dV&1HZ-o1nF0nG--="$'O7PiaP.KU7]K.&,M
-(a9k84!L%OK.%QTEa"*1aof4Z7J+o#C!.As2?Tr4JZpt`W&Xqd[K@'tJeN7.^aObbp_JB1BD+[o
-bDF3-ToMqq?%nTuf_a3M8dZa_!sm/^&1`lXp)efDcc@%-5U3XU<e<lYK8:@s$$?9Y+G5anVh'/[
-0]3$E,_H`$^/uA,Ec(o>/:s66!mp'I(cYPQ2hK-JK*X>Qr1TM)-Ncc8VBFq%a?9oU3J1!#-#b?j
-[Z#g&C+PD5Jo:Mh4;!FCO;"jf^aLT5TI`-3(#77.!ssbc(`WY)3B(mlK+Rq)0IDE_<eFL._)OH,
-dkZN:/HU%>a9Wa.TKIfLpH]o^K.nUT!'<VQ.YEYuYYZeO'ZVe3K;\XBVnW%Hr?SU6BFdp"SbO>f
-_BXY\aZ(CdK9D+&5T0^>1HFY<ZA9C&n14Tj)hFP`JnQq#cl>`!@0'K+!u!gcI/o?o27QiR!a]I@
-@/9r7,&MNq%+tH9m99V,2jDl=[hp!7XN3bR+cfVV/!(tW3#J]p(^%8r!f3Of).eF8Ee6P3K5QC^
-%A^NHen@#tW!\ojZ6^n!,T,/VZZm;t\2Jt1,g7ON!]8/R#fd"JquN&[-u^>9!':69.h1_i".1eE
-PO3rg+;"g,o3XrgN/%_Li<$GJ\UZT@^u9o5)`j?FK7oD^-orra,lsLsdN]m[cm1c7JBgp<"#(WD
-LcnMAFD%i^!MX"R>6cO&LP&t_'i?BZX,DTEZbFN?!\bnoVAfU_]Y];t:71ppYVZBZ)ZlrehmtU&
-OUd"Ji.?J'K=EW#a;ANm2<6ke!mIEW9RVOTj8pN7!t[L\Zr2Jpf,9r4Jup!]X87Z--5oE!!m=C_
-&H;g2/e,$&K4lMG"hB5Y2$4s`K7`#eYSr*Q,6KVEZ;;`sa>\\q$_=g;^3/5Da>Q(e3fSqU!h^uo
-Qn!Zn_juP)T;XRq!_k73.b3LGMeG-&c0c06a0%MV.9)?!60A?LMZT9=_n\?cGShp_ScUq&!^IoA
-TJbo*UB2Pa7>O"#?lY\U-7/^DW2LX5SE>H>iW5\h!_Jf$Xt>5B.]>$;O7>q]Og5$R,r#U-K!7?T
-GWK=e<Y'F5LfcV<_+=[;- at uotP.CaJPbX?Bpb?Hg"30d2J0]`F)C>b>K.KY<9)$s<3[9^]3d<-,
-3^82+a;l4#NPnCGakd:(<9?+dR7u^OO]9mg+d>R=PKBb\CD[_<_DB"2G'P'u"m!QTi.=NN*_$<S
-LoeO12p4\oo2u36DE<mgA6B4,O>%E3bU0'hOPVWPN<SJ'=hniE.#q"go>,0.5q.`;6LkF"TOTp?
-/&q+9W7;]CNln/l3LkhB1muER@]9d]5p2/C-)6%PY\tqPL.&AIi2qLEQ&RV@@,a:A)4ODIPAsR?
-=Xad(j`=Rjpb4.b$m\1HaNS`^R7N$Ad3S-g38#NG;LtpjFW-hX`C"ppb#ut+LEc;nd&8f`<X<r4
-R+RF$2[fp;!J0179IcK'@m%[t?;!*p9&fB7&D1h<S`iKUEQlX*jr"MY,(Zuf2qJPc"-TgG<`D4%
-"p6!0/I;KWiYr?%:mO2HJrjFb#Xct31(%KPXum'MT\_F5,EV&\_f4s"%R\VX6P)WT*)-o,Ys^]6
-L8$*;)2c9\"<30W8E)Rg,+,;G/q^s:+Uk-Uau"f]W1Z80Ttk7oL4ZA[#.akTZ6P>1B\5D,!Q_W)
-"li^Z)i;][bTmLh+J9S]!ZUDLNoA'T1(Jqh!ZV]ETZSeq"&O#"%jNK?15^]<nem2bONK&-K/gq"
-Ne=R93soG!VD*u2E24D,6]bb"N$D_f+U8'&i&6Rictk\g6Yg9PL;I>s0StBHcm1fMJ;tG)_2,HI
-%AJ)^0h!u?==K&Yd$,H)@DLeVMb;?4.u")/Q8$eI&BH/T!he:O"_#3D2$i5b(cdVo^qqq:!O/F>
-#"(33.>p,=@`+5D.'26b_-"]3$N^mV/.Wo6i\QE7\?7jt!a(O'#t&t,W(UTE`$@"Y\=b)X,9WL8
-#3$J9)?urjJu](7ba96.6,V2#8>@$U4$KDa+>AVh+S7D*iQ0.hNPe;i1kqbBUoOitd'>3X,/D\e
-%jGE at 3JM"nhBWV!8B`nE,8e]^NH(VS)$qL3Zm&E-aPn.p_T(!2D4=;PZp)*FgUQYjIafm.iY\O8
-Lf/c/+RKGjU7qoRBZl):j-]&O$K<c'4:G]7JfKSlnBrP at JY7!9%QRQH0TO"8Lc1.sZ7q84j)D at F
-%Dl53'oCtt?o;>,^mfNXU7KLdM1W26)30=\MCU^ieVpR9.H&u/%)ZIj.g=sHL`2;IMp+!dK,E0$
-%,ueH(Ult/^*JU=A*PBO+d.R/B>Tb)4URs/`&J2,YgtoA"#+=E"sIM-"+Z%F"))ff+PCl at 8.\J3
-&9%rL>UBP\KGFTUE!>4)+pP@\@13hi0P1 at r_?<pFMth5u_8ml+`0)0oO@]cZfIDLRl3sAR at LPN?
-,m9=^'14eW"p!.1"(T7f_ItV-LTDqXE9%Xa3-Ys!X>klpQk7TZ0/fK9OU$tS*J,,S$K^LJZf2<0
-_k8jr+lkGMYd+tm#Vc`rj;J4fi3,MpD[rcA1'XCb&t7`]"_AN2#=[-=_mi)@kq*nX+PI9UZA:sN
-kTIPeiXu<C0*nhrV$@QPI6kYN#_BK'"@-9,K4$YKiSZhM\?$_PYW)gF>T/:rh@[ZPFpL at O,R4=J
-&V?Z/%j>%*Ka)c;Jgb17!9$V(+HR1&?nr$]F<lWq-l)nAYmeIV=GG2R)c!V\#([cjKV2uu"#+0f
-iK,c!7'[4eO@:W"4=>k]3#"]47h1J7(^D2=%O(%I#pBF$/<tAj6<J.4JM]HD5dVIsW'Na99Hs\%
-nnQ']7h!2[1]rRKcpQ/J"^qfj+&MMB6>1Og!FQfN)F,#=@!)e7fI@*@KG$YFAe)Xb,mL2X*J,D8
- at tC^,",]\h_QZN;JP8*F=3_G1e9)6%3$<ooe/6%>G'9Pf,p+gKklPO.#(a9&K_!.J6/;8C_'gf9
-:o"MP)[$Ft6oG41AeIIm3=$eegk1]))M05jX8sjh5&bBT!NPBb'XT<Dk*\oZLenSa:beH4E*<Zh
-811JE-%td6564ktS2(d(1,*/L6]?^*@H)tF^oA:-YX<X9k$,oGbT7h(F>cE%2MD3#&;":I#sl?\
-L1&RB6!.:s^q_XX-6*ZOpf\%+Ubo!t734gXC^X1G,+i(O'8*eR$&CDSL4E;5"#+a&L'CZ#csFK(
-5]Ti_bWK"SiZ<\+:CeUB.tpH;'j);P[[1)NL6/&D6Ye(\5nkZ#TO85O3(Hgg^bH!hkSXH0g'HY"
-)$Y+H9>S/7,[m_.KYZde"04`s at 6?Wr:gb;r=@W_b"l'f*/doPCC^T.N.YgjA'S=Ul%!(dBUi;J8
-6'+)q_5JgcE2F[DE,5k)N;A=&OF.-iC(ET:kX=q")cj1>#,+n["(7Q/JR-[A6-(KKcuKi;GY/</
-->S7"a9ogiAj:iC2^\Ti)$<-=%cM"EKge<AK,AW9c.06E<pub>ArG']dmpla+f+arQ#@RD\Q2ER
-V=`o0ds?@7BcT:6Rq_QF3d`oA^lTL$I#t/>bWLLhbRK,R=UK_=1I!Qo(dkfGLZ(.I"]1'clI\]<
-!E>YaI;kU+O>dA56nM?Qn/F_K:HkJB46m0q('1p$%\_!GKOEdJK2=<-Y19s-JA_l4aCblH-m8^d
--?Sq]<sW6]3J7s>*<CsV%3[PjLH-%i2u%M$Ys9]@&F'j[3&(i8?29,'WYC*";(p/g4&S=U%9658
-$%U)D;s7[&2JfV%+\4Tu!5oS(G]9jZ`#@tBBG<h,7h0hF*/AL3A:bqKecB:u#$SSO6I8Yd:RE&R
-l`QBFOnB1B80J21Jdar$F%]qp159>t*CDZF%UhUL#@M&2_[oHG!5KG)_OM6*3(=D:W&fZ``!cb"
-$O/o5_O_m7$j4"0#r:!bKei376*PD>dN3K5E1deoW,Or1n`bYpb'5MbG6Z4UL]jC'$j10&.3Q`&
-dK$=9")(^B_([baH=O5_]Ba,R+>ecpdLcN+1_&Cd0SH;>)s*/t$@J_T,[eP"_\X)S at C-cVTUm.@
->*#_X8*5Jt`3NEM4Eq<b-XM-"%Ke+uQWEX"LS0A9K00JLT]@HlT\'jnS<j\/.R/Q9fFm2Z5n?F1
-)BW$U%Deu\$p^OaT]TECoFEJ7;#oegTV`'(L0uWc%)Cj.i0qp+aAP:/_1:SN8PY"*RL!;o#d%tJ
-BRgD>YR<^NFeFWOJ7o*oa:6<,^`^RfDUL_Dk$UHQ%"Mjq^t]3gjpML*#0.k,CZrrlP6AcG#:W1M
-?t*kYiWuK7$)#]Q^lA_Og'D*1%I"9.i9X'o at .HRC%`$'h-ENoVg(*&F%n/6M_!VOSl<fI^+sr$S
-N^CT*PQp'c#%4G9+S6)XS-^>#$#;:'`CRl(X:2ni#/G+O&,<r5kl\_7%n=VH^p"1(o\I<'$I4J$
-6KXYcYYW'3%'"m`A>m+*nl[R`%3Vk^J7tg1_?L!pL^Fh#J=[*uTF=I7%F0nA@&aMUZ3mat%Yb1@
-i+++PW!X&E%7&,I!7hI,_TU0O#(W-HT[jC#g'f7n$R>l;+Cb,GaHXTt$m90j8^[pg2"Q66SNts>
-!6X9?NXEpb$KCo[%&OAh9YnN)ZQhH%^l/dHkR#&UGlZ^:i2$aQi(ce>bK[[.^m<[3A.&BH9qYr&
-i,GroWWqD6$rJ>\+P$iaXpLbi7R5[&KSBs:WdAVG%KQ#D5itS`7LJ'i/#(Z*!6/(?c4,fnRc&u3
-9?:)nOT]C.%m]=d/)1Y#jpt+l%RA)Bi.q_JS-Ydn"t>)dV9CVYh?IAlI]O<N.t.re6k-q`%D]sf
--a(L_YR1C"$AWFMJBeN5QjnSqf3i2"^tRFkA-O/q%fi at 0i5CK1Y[Du^5+nDTT]cl;mKT_<$D<=b
-B$(H'aplRd;Iua#J at +@PU]uj%)K0?r_tFF&L^nrk$%S<J+PM4YJe'!b$o&:tc"mf]apuJ-#:222
--Ck*dbRSB:5,sViYLj';_@'6-%V[c1!8%]&kQZRE$K.HlX=kJ%%Ltbh$p^b++CG[ejtD=*$@o>e
-k^Jf4b%$5/%R=&%^hsHpPYFF.$.((.6`0MBSj&q[8RTsN+P$g+JdA$@$H\SBi5@"9X:-5i#XFIX
-:n at jSP$n at -%B(BTj%`_WJdt>a?0OTYP?JJL\IUr]#_7j=+N=jUkc'aJ!0>J6MVnqOZp(/"XWYXb
-+BD]f4:6].VhLjd+QN`h(de:<Z=K+++P[ALNXJ,3Q,(rY%-.T_-jq=b#lrrnD"n=\,.M-U%KNh+
-ES`fS$4J1fZc^>n5dUijkQjG2$UC;LM*)23dS(d`%=ji/TO8(`;FknU#%5IZ5`h4<dK[Lk#6=B,
-!,;lITFVU8Y!A'Q+HcqCE+r]rQ%6(FK_Q$DT.u9=63(=UTRmG]:^I-Olp/RUT\Oiad-INA"s@^j
-5iMt*T$Y8Z$*!VY^nq>:hRKeM>&]W5i7]Q/BFQ;W%a(/LW1j_$g'OFj>QEgj;eQV*_@>Wo#1)oK
-8ot=]g'97/No6Np!0.B$api&i5jCHjLb+ljILI?R#%5^_Vk-lGS. at ll@6hpnTSa&+V?R%O"^m^N
-^s!!]Gc3=p59O!HJC-P'l3W+/&)^bJ2<7)sA-PUp#',/$5f+p7l40J'%`h?r^s5Q(O:FP:$%Tr(
-d/"4pOJm\o$Qu#Ji.;,H:K"NlUnF:g1/K/;MJ(kq#(q"%!k8\-fW9\7%g_lZW,<*<DTdQj"sls:
-T]c['BFO-G$G`B?NUdQhBF-q7%(#R55bJGO2 at Y2Z1bmJa.Gt]o@&`(G%&@2:^gI at SQ4$*lM*Qk$
-+JoSqd&_cO#f+T++H?r)Zisjocf!pn5a&D:GRd!/#tCZb.pXoqI!REV9OO at tA\KTnb&R*/$:(hP
-+H$k)SdA7b%7&8K/g_j0?4ML at 3oK(:@'adk+S@")$NS4UJ8P]N^^;9k#:"t6'<b0hbjfAK:<7#n
-'MJeOYW[Nh#%3DVVd]uuW!r`oU*++W.]@s;WX?OX$Bi\i,O/qF)LC=P%Q(s,,s_Zai!E3+o?OWG
-i8b7Ga\L%(5GI`E+Q[7]i!/O_%:IhG!9ObZ-C4,3#,#<tm`)p3[LL%1#6:J-2OY&TZYd$P%PIP8
-^p4JKg'OWQ$QtB5!-/RBg]l5:%<`3c09V at a/e#pUA(BgP-<pgod(8/QA*Yl\+J22tjpE]n?=9jk
-^haFpN!NgS+lhk]T]UN:^KdG=W.9m;j:7%)n;^)@=J59pKD#_hRK[*a$37pI5\pX4Sdb[3#_;=I
-7DQQ$L^kQc$LuOS85>AN!-XF[%;!IX!6u)td,cQiXFQ6=EuG95Aj9[n%`"BMBGBS/[-i`F%1DG1
-_!DIpaLCZ-%S7!6i0P<J'^gL/%mZipWLaDMIu+8:8RTP'5iUiK<6]4":hP5 at Y9XN*+U/\6O&XsA
-FuN_0<3[m>$6r#Q[(m!IF9jG!$NR4Yi/S(88h!$l,T-$@KV"r(_Nun7$Obr"N0rXUW!4OLijRT`
-5bJKMk%%D)-D6n.J;a\_D[A[f$t*TPnX3(87L3D[o"]9RL,]KimX'Ji%cEmhi7\BcOFdiG2h8gQ
-b(ACKKEe9s%"PA)TQ1Ct at LAcIDKNT!5hl\HiX)TY%hE3fGUhOVOp_9:%@>r/8#?b]h@>(3 at _dd+
-5aQL!S2;A*%h"7%!;&:X.LQO)%KnfsZF10ln-K;@%7`/XM1EICa:5q>%:Ib*TWHA"Fq3[o0n>c&
-i/]"48dZ\[$A/`r./^Y4S-YrÜZ@$hHk%"1Chj<1b[d>eL,1(93\$*u(B+PK>B<(k$.apQ2r
-R+Ma\e-5)_M'0#2/fY5mHj6Lc$%S1Y at .L0;P=r^\:"mAg^l&mRHj379#!fJj_U.W\@.BnE$K/k`
-JF,r/`_t`SOA%?f/Zc%(L'_V0Eo>WFi9d;TNX"EqZL%0NanuJGXq".Fc9S<=+J]<C_3_rX#_8m!
-1]F)@EX)rR+Fs&4+ui-[XT]A)2]uuJ at Yhp$1-VA\-#l$O+IiYXA"c/X#3r;S5\-. at -3g6/'7aOK
-5d!($dY:4%O78n<.,8jMWX^>bLMYW2@'^b>rX/^BKgS*RM$uSB*"@`!C%M>5ncT at dnt;?"NZb&*
-W7+Dt`:)"F%MQTU'TlinA1J".L82"sqGK'Ke-R8?W5,JB+G^=>o^JN0T?-ReTO8*'$n=S3%=lJk
-!es&nIkclllb!9-^kKC.<XT/X%1M;%!8Rk"g^[mZ8?L/@@#>53-a0_C<Ihpm+EP;%82r#V%SEhF
-/7&e$Qq.4?MBe;p_`S8+KTtDJS76XH#AjSjRKf[k%WX]2?ttBq]jF\s1Z6?^:J;7Q<XjSO81$G(
-*-46oXW!k$5-11`(Q&FYfEpeJ(/[m:,odETTEmfKJ^ZLd+Q*\OWn at rrPenQGMu6pmL>E3l<']jW
-5cC3lAe..9p@?pKJ=MjW)?rIX$mY$Ei)U;U3^LRN;';GQJ8)4FY,)I�?eX1DuqFokm$24r3>l
-+OCQ?@-A`$"^nP=8n=&Lh61UMh-et(.hi;?j9dNZ$R!k-?t'TahCPg0%tMe/@*FP*-I:Vk#/ISP
-C\S49$%O/@#6ZM-5`-&6g.hlh#.ES%4Xp[_/.Nem#&fY/@+c=REou#\dpV#>dq^[X6`,r=Uc)s5
-?uHY8Sd<5db;9!cS%#ld1.VDt#p=3ids))4o0ZC%#iL==5_9DPX`=R6$IqHIWbPpU?,kBB at U80S
-m:^oUeG3V>c_EQ(TW':=E!_Na:_bK-VZLO>`X`(8KPn"$<"i+OP%#:3%_V39cD`QaRB$VG/j4rN
-2u5<qLG>I"HJ&E1Ga<.$*i,YO%4QT/4+>HX+qE_Y%Id3cJ<C3=BFR56c"0'Idd\1bW9^ol1B<nJ
-W%9[qc45A*rkR:s2JrsHK2e&o=[8,V5bNhHg1GHtK`bnCFbej'H4#BFSA9^_\R#X3#aq at 1PJC3K
-i.JYZmL#uB%)D<B5ZS=Zn-SW^]HClE+EDlqfOSP^G^s+]5Z[l7d%jh at Hm"nkatehCp;gY*%dAeS
-V?W%<XpjkNBAhPS@*k(0KFE=N$,Q[:1D(-%d93R?.l7Zlk9EPTl<ts$#6f-]`Y;!#*_.FfGu1M$
-'*une&_SF99d,NkB+iU"?q)W7b9N1;i2gi:(l?.n;,$7W)]M?O6=Ck,2DYf#"As`7Y]qFZNWao9
-A=tn)R*CC1\VO:33g:.%;8KWV<$E"_"J^ebChY-8jJ/t_aHh*0*QTIVYe5j3-k]3DPE<lTBHin&
-"S0B&lnKh*c"'1mbc4Mq$KFVY0gqUP(Y4EGj/BUk9dZ at 6"[d"*e9W;I%VJ\5i9a\o&IN/$UmQm9
-.%H.SK37($1H$22A>:S5nP:NlbsnJ$e>>_dREQp$@5-nk)\L<s1XUkrD^lG,V'EO at DIXV'#m2BF
-Ul]7HQ3eBo_[[E=@^*^3N.WmmhhPZS?8dUlcsebb_U..!"sXEG15Z+RN$\sb@)aW&,=lDsL.QW)
-3/qEen=,ET4(^#I at X,%,KjmGf,H/LFTI:8%d-*EL+i)5NN2!?c4>$^Ijroa.>S7j3cnK4UN8_#5
-'oG;%fI;_'aNQ^MK:nqpNe1*1qMg+5L*_eQ8;\.:U9L at 0L&mr\,`H1lhDYZ!Pi=G*N]=!j_;V'5
-*fD5hN#IL>R)Cp="4RtDNoLDPW!\._jT>tNYb!>!_go`LL#TUs3\(5uauflZ^s"YB!tn]f%82MO
-2@]b\efg"T0UNcW,Ckq8LuXTP,)sK2THXesE82976BLOPMCfZt"GpU#(a9.BOCB)]iM`D##i^qT
-3sGc-?5jBs(sFQA_8p at L"njor-4`JjVAtD%#](Ii,:LVo4!T9[3Y%lnDDkA/aH^!?9ebO_#i`(Q
-0b-cK&giZ+ct^4N+u"g-N,,ra2iAn/Qm3&mA6:&`@pnG[L-`=g3\)B[fH?%$../7:,$:3KN?WVa
-2[[GVAiYmh-uKo[>$.5hNT/M\DiTGmXrIn48E_dh!`5OE%mjBu2 at TajW[<]l=NJ#[Tt#t*$"=1;
-+q#V4g<>F at OD<U2j"T+0%jGuN-]R,)`\<8PJ9!UT6SQiRLBAZ[[IW;_irKA#J=ME+,1I5cNFP5R
-1lNXbROaAm^nU$%+pb82akDi>.h>!$S2cDdJANfE>0s--/A;+Y3si`*kUVJ7(lB;f_bp[_$DPnA
--&=m,OuEj[:t6<j69:\U5pK:#,,<a4A2B2H\5k,:,)E$G6JXns0Ss6]YVcc?0M=l$O>2FhU`@4d
-:C.%=49H.2*C7bE%Y26e";W*g'"E';!B_4!OMjZlBMAte`#s\/WZ2l8,mf,Z3<l_5$q&*6%k7i5
-PJGNV6b7IMiMG"Y:s9kG5]d:Ii&HHfU(0LLD at Ag1-Np[9E<2/=#m&g+X]IJ&Jm`X*iFFkOTW/kr
-3Gf50`L)=OR#TH`E!HDDOp)DK'uQ\H/Fa9,"^$!X",'#N_-A^IM!WGRJ2mm$kTkdmp(2f]=U*iH
-*#ba5&j`0f$=TkZ.Q0?_67?XU_1W`)+E6eu:fiP\,f?'`+;TR5;[*b+*.or,&],AN$1DCRL at C3E
-6Vq6SdICLsd$,33E,,sBA/^+4L<+rX<X&RjCBVP`7>!QR%3Z3bLG7X$afnVQ!RMeh5b&h3U'V7%
-80n at gQ52f#D$j^1nN9Y=*WjM6%fk<A1,,jK!YK&pi64$35cbV$#VZH+$nI"8hAR8><t/R@)[<O4
-'nUs/%De<=KQ*k&K2Dj_ at 5K]o<,NVj=DnIY,UnL0*YJQ_CCD at +K`o:G^Oh[?$UHHo"^l!_gG!g[
-A6^F^Qrk#RQt6Ii&i9cBN#@8(<!?i$*!CeF*Q(]e#2u\/!q<3&6:nNm5tEqe'MA;`3'e!Illq,p
-K_>JOEXmZE-AI&:*eUCmE6[I\"`S>k*Iq*!JP\<-YiZuRY]qjq'IJKpQl:TJA.K8[.YN>m'LG?9
-$L3.#L<sTR_\d.q+]4V[(Z^0=;t(:5/2i6*#S_ms;@>cq(l#iG'a$EcIW>99#/H6.*8ja"+[A,E
-E,$%RQo1mp:<8+(K_PRm;[=N\TSJb at f,a?6I\=IqKg9#dN1`0<+Z(R>OFj^R,lsm)ZlFj)hM+C*
-EFM3n1BUIX&Ah7R$NUe`K+Q6A6a1h?V\u97@&OhAa=e#(('OnB";@=/&g78Y+G2B)'S2G0%0=Gr
-U(Ep[O at V8:!>m/90U<><:f7S8^c.$Y^@;MsFq.Ao)7?M=LB=ta$N[Y5L at F[P6V;_:!?a=S at +5qm
-\8qqYPT#3/eCDE\:Q1teVM#M6ADJXn%`#.q)raC[K2)"K5h$\T`]b&fOD+uo*&n1rK]F\/5n3V'
-/d!e@)M0A@$)*kJL*P[s+@&F(B*]K2J=ms8XbADnf'e9rT/K#5`!-7nA-7pd'a'gpKqV?HKRDhu
-6<GoM/EAWei1+TbcuWgWaq+^VdMi7D8I.T.1<u2JLe6ib6:&O5C/EBRJ]]bQ6'*mU0Pha1>5Jcf
-4;EQXn!l`V6ju@<.0d#J&Pu"Y$HE8u"TXo/_16?'iTM-]MQRA-TLTHb\2AmGaq;Oa5m_Kd>(hXL
-HibuV#2mQN#(WJKQ0<Ds+m($b%B5^^GVT\CTJ2.?jANk7AI at je4G7[<l*HN?#U.8/L="J#_E^Hs
- at E^ie5dUrO=DA,.,U.mSRMAL6KKW`p1Bt);$q!_idBPY[KZ^;'\TgRO+ga4^TT`2WgdYqm70JBr
-neFI+1(#/B/HkQT&q`G;$@pJ[#!dbX6]c-p@).bT9a%6F0J<pp#UY0(g'eTB9a;Q[1^.9Fg<V0E
-%Ui]Kk0T,+6\'FfTi<Ip;JXa687Kj!-RsbQg`1Lea::q%15+$4'gk5@$Gi5MLOJk7"3>=D!@0\c
-^rRHE85KMaO;S8XBGCC^Cm4s^(PWLe\EY6B$:)D+]AW5hcQn+To2*!m0PV8o:g([:%D7FWQk7.]
-Vp-BX)f1&(BnI.'#!lEC'ejAC_l.c7 at 0@eZd$XGWTN2DNj=,i1a<#sHYR^b+6j592l's/$#.0a7
-#4TJF&4f--iS$kY3tMlh&0h:U2$,HhK"3t93&86&,S%%9K?uOZa<?/AQ5'rk2ZPr_(a4K'Vi<Ym
-NJKOrE&J^*(ofPGK"@kRBJ>"11mdDTOH;9(TXoc[,(^\<!P.WUckV,B4G+MRK0U6*5VX$^1Tu$R
-!['>/L`:q2.@'ZCK2=[j:`G#m."f#I3Ff[m>64mF+cF,u!miu[OJB8"1o*Dj"*0-^_ngo6g*k;n
-K":4MZ6'0X+TY[pK9JcV at Wm<)3!6Z=K*X47LaE43)hZ3WSM2>k^bGql4FrkZ"'@WD!PAL_)?Ru;
-/gqpY@@2VE'qJ/=1#n:^CQ9Je_1J_=JWMblW&'$opB**0K8D)[#a^-HE?HqQ"3Y7;a=!d63t_6I
-3RL\)W%%h(.KZ98"(3+#6U-2o+X(:1K=En1J1EbgLoTAp0d&Ba^atR?1':oH[)a]u(b2Vn)FC)F
-M81)GZ`YCK+b?:''Sr*93u"&+jT68=!N7l at _]OLr3eE<9JX at p=ZFtn=]`EXCJnQ#&OW]^pUDNtc
-K<`i,,7pDV=L2r_K;q*:+<3HC+I.I/)^%-BU,%AJX!-`bK"sAK(c++$.KR%.Zgk-7 at 6=Ua+T`KC
-"*br?O;3>&,e>*UJs[pmCi>epU`0"i!bh$'LcMH=*4t,k!Knj_(aB>Y_TD9n!LaW%RrEt@)4H1#
-!K]8BLckjU+T[B;!Z9Gh)('u428Sc5!`1SF8X4pI+TmN]")''na>]?f.u_RQK+K:iBJW3dbQDfI
-!`0fA$cIX:`rgAk"$u%$\2T&%3QrU,!j%jlGU%hq+G.*]!MDK*+=.-"*!*Pu4 at gZIWqZWV_LfQA
-)#tP,E#D$Sq_)>.'#=^Klh5tT\gRh%JhT=+@,$]F;hBfRJl!GC:`G#5,QaXIJYF*F^cXBA0=M)0
--[Njd5U77VXol0OT`\X-Yq<&M/;'TC"*cSRYW%3)gCQB9K5lT5LtDcZY_(&q!JGd1O>=HKME*H!
-Jp8Ih3'3oY)?\>&`_[D2HAo&K4LN6k(t"uY1EJLM3?38u1eI59YW79&"G1*>)@.Sj==#Br-NhF,
-Jfl%b#h]et-Ck,g0Q>JCa?:`/.MXuU5tEC*<*]T'7Y<rG%:a2TW&]mB3B)IFY,R9[\s/=59+0Z/
-8N?p`+=dP9aFh'ubNub at TcZ@H0`t+,!g#Bma<[q:0S0QU!m!7E^bHih(P5a8LnmFk+<lFd(a-2G
-!cT<6O;`_t)p+fhagmXgBHi(_++l6rd*,?:O>rK3qL^N\OP;3.\PIeo2hP6b""E#XGT;9r'nLTU
-(MGeNl1`!o/-@"6/Rcj)0K2]&C)(\=N0#68+;p^QUOl#]JuCKK&2GlC"G:A5Js!Kob`*D`Q3+iO
-aES[1^ak$k-d$rc6,4H at R\Bh],6K&GJ[ci/^bI_!4BAOeK9.%'a>=!9 at kL:j!gl(u\06KD2M7aJ
-_It?Ma?7Pb306[tUYm!jH*RL=)QUq!7*mYJ(c?q>;1bOnK7GF$3&)!@l2j4627PPrZ"H+R1!&H0
-K.o#'Qo]eS*!4Z4`^goi8;72F^On!FTF_pBgVJJ.G18c3"'CT,^bD*WXTC80K5A4'17-042&UWY
--#tVq@%iRE32b_?1LM#MLc>JJ)M44q$@k/>0l[9)[Dm/G!O*E.n1#%KH%XWg$-HQVE%n6mKRpaC
-OpF2PJS0QYh2lS$$65*78s9[&\J<aQ%A4MgH=?q83e=lb+I"5T/9<99*PLqdK"@QVLaC=a"O)No
-"!BV<YS\l52?Iqd_8nL7co`K84?EYJ38"8F=<]G4*!<de"%YESO<Y=Qq1>7WK/HC+RN.p/-^_\,
-,tWbYTGPtkm=WIu9AgfFQmMiq4Vc<f2dutVTGoZ-4<b?8!Qf52;YksC*26mOK$Z7SLcSi2ZPqY)
-*jmRVKljZj)1u$G"+W1[\>i!u+L>e*K#I'qpo6`EHid\4!\sJ$GVXk)XFmGp++_T;Yu-'S2NO?b
-!N7s[5SuQ_+\a7Ge<gu<:b&O+VN2>(O;]BM(`7k?1qGq%!O*mO_?U/fql4$RJtSn?\30pZ)N&bY
-K/8dF>cPOu2Hi'c")odna<LeC-NTUDes&Q;QnsA2aIL%("&LKL'[m+>?:W)8P*e=55WStN3.l`4
-b!7)*3<XpV21_D<?oTX(0Hc!^qVqhuK-2q%81-p#4T^K8!I_9mlLd at MI]/>I9C;Y0(c5\?N.T>!
- at .?\gST9:LEWSc_[7Oh[+>H/))hP%]:D5CeG_#rF1<:RX5#a-8Y_:=YmR*Wq/]]o&L&cg5V#uWk
-!i<M\?mu.".fr%)R)h.;+=R?tkhLd_JXrgQ+=P52hguuaP(5WG,9VRQ2$'t.- at djN$S__00S+[`
-K2=+aQm!Co07m<]jbP3o;1/_[1V/Z!!k9O`j_QoD,Qg"OZtg0R-1uk4/R\I-O at .k>BK:]Q1QtW\
-QR`ZFi&k84lVsf>K7Go^Q;Por.8(7eK<&Ltb^G,Bd6$#)!OAMQE/FaRoI<S%)k\%BQo]iH17KsT
-!c\?p]%6t=Z%H)5daQ9gRi[/P0U;D[!`8l`^_`1a$q&b*!b`k^3%';</3&kXJ[$dF!'4=mE.S?B
-K=iK__@;-+"f"UG!PS\g<5&COpp90#K8:=rHWo%4gTRW4SA_#\Y"hKUpaAZa\_AA3\0Zd#0S2PM
-P<JJf]k'1=3eMjh,Q%lLW%<Lm1BY/#(R2miL`m=(2h?Jsd23UN0Iqr]ncQZPX@\C9Jhg<s,0]^O
-j9R6$82,[`-)*@UJliqC at 3i<#<06l2lCjIT\0D*;/<!>qZls4RBGg#]_1I;h]^RDB at Qk?8*+>So
--#hWRd;OZbNe)`"!Iu-j^bCog-kJ2JJm]JueWp;V-]M0W+F0g=Qm7JR,n]VqOq@%mW%f00"G1pj
-TRl`fEZl?ON^`%P5UtH>=>GN=3s(qU+.sd/&BBB:S\t962>AEuBJ>&e2hP`B3,/JH-lTRV.>!EE
-Ni4f:@/OM:0`ik?&4e#HcDlGomK7DHK+S'8#W;`$4/j>LCt<K at +TWi[=Fqq]"&RdD`E.VX0peOb
-D,Hr=49jDf,QXT7Je0_jF.*3P1eUGYaZqV5cm+1R-iuXq%/hE&QI[*LZ\+P]!Nbl4:a+`LItO[:
-A2ksSnhjB30[C"\3>a7WQlK at R?&YlpJn6>4<h_F+%uPa3ZH6l!i&P:G&cl)Pi52Ss]:'<$#(j`0
-JoDZ]L`(gj__1^/,]GOA80]*J"Tb8H!dHG9dpn#/\ibnT!Iu^cKZ)(P;D"P$!g)DoQ*q5p,20!4
-K>8CXb#G.o3CV:O"*bQGa>lci_h6#lK4tr!W&0.$/V;*Z>gkWa#U%UJA-45-PF^Oq\1('A14go1
-M!-l1ZhOVE!0Ng3(uQip22?f1egcZ<"-QkVdPi-`XXo8g\KDb!YSi#/4mbKRG at 2bLW$.k]+_6Z`
-!Q[&L-oM0 at -j"?E<s%B6UMqE^a0o7LN*nEmRqc)61nI8">/8]"`ur0k2+bBY!JIo+-0oA.Wrdm$
-,FIg=;cG?&o7NZbDNc-jKcd>Q,]7G0K,>kb^apd_"G+Q;JQ\n4E#XA1jTALb,aT!F\0?P?_oM/O
-K"jJMPh-5G-RQXRV_Lp&;iDn[2?QW*3iF?W`?l<*3eBI:"#qWc:c&8^/B%n+]\(53.D_DM&^c\!
-PORPcA+Oe-3Wfp<Y(LX<(b?+M2$/Rk/N=R\r#C9T,P!fO!K=VYrqD#+-U`bOJlGX#HJ\b%)5D*H
-&4p7($W.5X//hDn")o!,dDu?e4TU-EiKaq!C*O;'^R-,hYtMBS`3+_!KrYV(H3Ruma<C^R,D)!q
-4]_a!-1ehN1Y8!F_CohZYS`sf+i^0%03R1g^ap%)/#WG/*mriDZ'ud;%obe<^I[FDa<uVE34Oq/
-?)L'UGUckEh5=p5U*(A,E&.c\SI-P+!cRW:8:VZcV,D<[ct5&&L1=.:@%_C#'aEb$R?3"T.NV?;
-P+g*e;^)VV7maG]lnTP$$3`do.'.S?RZ8UK_9 at LR4W''s, at N^m7jXCVU1"qtJibo_Nb7=&86.`4
-$k-c'JOkei3Q6ee+ebQ at A3?$/jQ"W]?;2:WKk3QLOH__gRLZ5?B]Rf\.?+T[ZUps+G9rYN7!"d;
-P"ll0MT544i:9Z#S#DQ[faOHO1n)W9")uENGq'j at jRR"iW&[!Q9Z6Kee<5&=$Hg<(d?p;8.LaD]
- at _%;hCb$?F`?U3Ne4D-P:IcThZsIu4*DNB)Gn at 213K=Nc"**DBPG=?L`^=.Hl=_(R#6lsifNrS9
-7Rkgi.;3a!Z^Qq&!NjF\+GiGkY3?G50]G2$UKEm,YTgT;/;_5/n0/4W(rdJO,$<hJM5,le.u9r;
-WkAVs>JM86j"RbWLnVVU.>m.>O>Vk<OGYMG_T6+8M1[4N-k at QDE#Jqt+BC'#U+gI>L-mXq)@5B=
-S/I-8#d?)p6AXh?L8,T_16$k#Jh`<20T%Fg at CYA9O$ZBH-]UR0ob3AfW/)B%6D2[E$3H0t16(=]
-e//I$\=CSgii$6>%jB/Wo?6/*`%]8"W0f<SK/hRC8Kk<Y)iR*Sjsc="d%\)Y"'G1C$DNns3"CR#
-gbk,`RYmkpJfAI5#fC&u4:EH2N\QLQ:kf^AUN"F6M#j!4(X,7fl5U97R-Z_.K0[?o9&b*F)3"`#
-ei&N:38ucSU53\5M!IU.%#&+lZ7Cr&d"itW at VF+N`8_ui2i5Cr`[?TeOJ!s-JU$T*L7rjZ-]XrM
-Z58@,C(_Hl_[t(=%YG>X-]4\7`Yo&4Gg7fG!YD#tNFK]_4,2^qqAP88TPue",&i8pN_*8NgP1=(
-:*GZc#ilnYTtoqIO$e`Y)N*OACa9B3PMS!R+c,J:%g.p4+bh.GfIMeGE0)FVU9L.DN<-P&-OL6q
-c9)C8 at -eVfK4*apM5,T;0ok9e`/TM'W6?PUiJ at +EL>nl)3XOM at NMm"jHpAncUS-6e- at 6#12MQcb
-eZXeSfSUp\+i%V<LgrRp3f7Foe0GDhE/l[_Tt'-$e)DLI4HDf7UbiC05cY<Rd63jFN/^STV$6hC
-BH.LK^h13QU0ser%R[I1:^[?GjI(n^4N&(n,CkS4MARa^fS2IYei\\K8FS!a>PR2)4W#5H%2H.4
-%7-P@!s%Dg6824G5eJ5 at P6;j-Y^-R?i&:iOlkBLL9Fda=.>)\2&d#:Z$6^,.#&n/c6F]l"@5K0^
-OQ+[iBJDW.`$kh>TFaH2E&9hu2[,Bt9#AqC7,bYr"Ro_0!^L6!@?;aeE24M+=>Dgg/Y[lZC)WV`
-AI.7n/-eNt&VH`e%&EeVKi$4LJd?B,i=I5f&BkR"TO\DFgarYZPT)t\A-r>W,<8S^%RUe$#flEl
-,&jV)K?-IiTq"5!d-_Ik-rgc9Zl-,>+rWhT1^ZNS;$LF*%KjL%$/rh6LHq":!k;l.+Xe62#=`([
-\2Q-N>Si*eoY].6.ga%R(!+2K*Q#rf7,][E"Ou36_8'dlAiLT^0W5U, at 4i!Se2W4[?62HFFCE at K
-+balG*<N`*#(XW/"Mhkg_N7+jm at 5*u^haoUBJp,>Z'RHf())>17h+gL)?ps6*^VnA7,b3l[h+u?
-_0I:9P'jYABG_<`'@dPC<#Z'-h@'K7Ba.Hd-A8%ZkQ5]X#_>)i&WkES!Ph."i>=8ld$>Dt^h""Q
-=>9qddMd^fBFT]P/3biD);kfk$UE8C"Lr=^=HejWT\LE<Yj*1F#XiAL^cOTMEYUmU0jB;c0`qF>
-(.,qj$t0hqK!=MT_8p^+&%j'?TUdh>cts'i(cSd_ at NE=IH&!PR+TsL!*Dndb8`@0=Kj`[S6dS[7
-+]LIW0X;P4Le04M#T*\pC`:0bnnt/"4U/]:*!([!#U.P6"&OXj&V,!6JV5EtiZ\h`8Z2ofj=:A[
-dn:!V_ at .T`+U(,A$GhTINe&<&"e`jQ6>1WR6'+25Yau^70Q.=afK03YfH-V$9fR]_+pMho%>-?I
-.NlqtZOgLQ6]a9tTb'?k5i`TrA,-F49J$Ga3Y[.,GRgu82MEi`\:]St7,_Z5KckCU6Ps\LTsQn:
-GCIX8aXdlEPU)!fEXY;hC0Y0e+p>^4$pk?;%8o;6LDRNBJ[flc@>KlP[ZZs$W(mb9]JkOD"q at RP
-=:?Lc,9h*l(.-)4%3[,TKcjb7K"_ at 66!tskn7P-V=>dV)PUV8^K5lKBe!Rs^Zq"nJ'EUNi$UNE'
-KH_BVPk[f[_;m;`5\rd at phpYY_!D49L((tu1WR>I,mK4XIt=7`$:+eC#*>Q!_m!0#2^g3\T\^,E
-:c!!ur#CI<_AP]lJe$c#)$JmT8cu.k$5LW2!r.^qJuC[:7&r\09)kLc&46k%TZJ^'GH-6SFU:?A
-+Tk&o'19!J%\XFR"V?\/!Jjec+Z)360S0l=W'[M_!'(,]T"-Q=CCQ%A,m8b:%7=TP%A<tR>[p)8
-ktO5GVW]=Z@'7"l#\XOspKIetX:gm#.h/1'`WpHl%)SEI$I=MWL1"I'JiIENi7&p&J?`:oJ2Iep
-aYO&B at Z,l>#Rhl\/>R6*&G)8C%.&'phr(ES_N7D"_$E,W:rX-c6Y6iB$mgU(KFNQRn.+Bl1kPe.
-)af-2$+0%SKlCiBeA-)1+Y5>Q#h,N7+AN?@cmp,Y"q\=q=^j[Y,QeU4(ft*k%^MdJmi_67_?alc
-+j;?h0^oPn:f at h^";RGWhKjcm8Ig=$49H.$'\;)P$%X,loJVRG+lHJ^+WEiQHLMgTd\[HS,V4S0
-e6XKsF"Hk>/-aOdNl)DaW;u!8KqMln_aMBPTtof)ONnGj3>Vsi"=&ZB_ at VW'WojC:3&f)U$H#+q
-fmum7KJ6dCJVa[=F''m]REQ#T?rmbrTI3qDC)"S$0P9:"3J8N:*()tW7-Lp>;4s![nW6*r at 8J@,
- at +EO(11'0470%sZoF_1TE!jE,)^"]50&U[T5\(6-HjP>AWds`EJ6&,?fF5R8 at pk<(5`?.e1'ulj
-FJ-!/mPYN)Jd=gI%D]4AT]c[`,$j-r@,R?eabZ/=e.,m'#Y3%oi04Hhcj\j0%>R>X5]R.OGf'\#
-%"O(O!+8"K`X;iW%=hhQ-?]ioD#>EC7-k]T@$Cj@?jc.ad_MrVTN2O&Y($G1#f)6g7rE^ID?Xo[
-$E>W]^hBt1kQZo,%3W"fTUH4\Q4AG0:!UK1JDpodU's;.%VI?]T]?H1Qj$lt:6"*7@,_N((^XS`
-#p<p2-ZlWOhRDF+#_:pVcpIHAiX\McK:qe:^uPc/A6be[#&<//i/Dngn-MPcl+ht=WEQ%3NXS2F
-%YeX+%#T$6D#i`s$:*1=5hZP&Xps^)&g3hWD_)=ti3%TC%04J"^o6r,_?K&D-K)*r+J9$1aEXXO
-#U!LYDH?64jpo2,$p^Bg!7q[Qj>R(a#9[Ub7PMm&.L`BW#bYQ0925t)Snp[Uie?S("5jJqGY\=h
-$K/9Ei.t2pM at M34LJ""eT]celXP#kW%OM%WVtLTCo"r2F#U&7?+OKrj1_(#`%AnmC.*`<^O:#lK
--NM:A!Z9HuBF'-]$:uX95`Q?tc4+0!%D_BB!3?MMln%82#!e+V$bI;FXuhA]k-4:dlQ1+TM at ./I
-$"26n%X&:,:'M*k$NS0Pbao/1S-VBI$7hA6!47G&edT?1%SVua!7[TNmL90W$LKAQ^n;)Ym\cej
-%:JP)@%SN=X9dnf#f)`7i/.ejD@/)IX2*d&M,4EGT&--]5qLAK,4Z0mHFEn0#[l"?JDLYVjp_<r
-#_6OsE!crH/-[53$,E\RC-2]NapgUV$NQt3+PmO"L.2I(6%J0]-1V=lL-)'t3<r.d!6lf%H3u09
-%?R[D5gXqPE5d?\-7dLM@%`kjAe!\V#7'f+!6co8n.#H:$L9YYJDT;4r2!,F#/JLio4SS+[LE6'
-Oe?(dJAr)7_YM8(%"Q2_i+<H!a:840Mu_c?-glhlb(5)5W.<<hWSGe7h?@<<#(W!HJAO%6X9`Pj
-C1(m$L_L.%g^_,9#b^O&@*Km'Sd7SreKA[^deX1Kk<rq!7-?lHTZ./qY*\(jU5ECe%?_2$BEoZO
-#9_"qN3b5=?IBs*$NOKi@,,im)@Sl;rJ.C*!144GQk&%]!+:ln!1(JEnd6M2$p^<f+GaGur!n6r
-%m\?,jZF"%*"!fh@)_W37N;d=n8ALd"^pBq+EL(=K[i])#U#N2T]Q`:=ZA+b$UBmB?uZ6ui!&&g
-+fH6&XQYTi_JqmZ$L%a_i*Hk2Nt#LJdGWji_tFT@?>9^;p]+V/U.c%L\m"$h.=fT2TVr'FX9IX;
-#:t%d_"%i*`WcFIJd2tni7L69Zm=SR7gKq<!gjK'$3fPf"lQNlTUl?=G"j[iUFNDm!8^laR[2l<
-m-#2q!/ai#f-#fOJUimfT]cUP^7;,;aro/#T[:'d.Np1?8aA^&@+8AQO9S:2NSqm-24i6hfF/n.
-%=k05^tUH_Zn&qm73J60J7&]aie!&.^u`a9ABY?la]VW4#0Qs7+RHDLD?h;]%Y2d=^lV?0$k,DL
-22"_SJ5ukf$k!F?$:pa]X.g(r.anCI3T+:TE,fIi`!'Q=/`ICZ1Dj)&ndS at lNFk]go99I[mLEq\
-,[faD+GpV[]EYX@$D=$r%oV!%TF.Zf8)Ta at L:(UnAq]Z^#:L>o?uQFflsAVI$R"q/i7?IoW^7G1
-7tBq5M6$msSgUF.3q)PAFM=uTedbWU#sb:;TVr5"U6*/s%3hAgP(<#pd,dZaZRO^,5bJGoe4&]U
-NhBD]+P]`cc!(0S,d&O&^pF:-S>+qK5[\=5J9)>m!X[p)$V_i)Lj0Ai`X8A?AcQ_d!3QNi"&4K4
-%H-%I'O&4],-'RA0M=a=+Qg;OEb;I!:ghQQTO7t3C^cFG.fdY!erC2iN+B@"D?Rn0J;J,Q-k0S0
-#q!@s2\H;RS68+\*7tN$F;. at UUBk83#2k;FBm'ujj9i\g#W/H,?uQSucKh.Q73LFn7_/c]m!I<T
-Ttl8O@%'2P"\N1!""eA4@%\$"7Kq^gF9&NOO3eD&mmsg7"lRJ`oq,4F96`^^,D[2ikSB<=e>8hn
-q#G0<JE.&Fm%WcI%%pqf'CrSgg<F6b\fblYp^V#Rijp9**YWHo!8U16qc5/a73M1-AObaRogXJU
-%P=Oe+Hd/KX:Co*D'6,W'Z3?^app[qI[&MhPlq<p&dgnG$mV?3kQsim4+LDa9;Ba%MTpQh#C:ot
-Arq3gl5jlZAsYc at KS6Q6.09`"6817[%(2l8^t9(J2 at btk#XIrY+CGE878AM2#!emfTR$iqT'-07
-#p at q1i,i6)_ at 5AF#J_#V)5WdIWLCAR%SNH"7=CUBX.,bJRea7\@-O/K]pnhT%KLTH6_k,].LdNQ
-%XH0bRD96HF9n.P$ut!%'6F]:j-jA$Ri1I^c't=R]mB`FTE')+^tuIaH3?K%RQ8Q[@.7*&g^[_7
-U0umcTUVXJcjkTjSH*"8^ubgEFq*BJ%%pi6@,<o_JPr.M"j94AURe+T,GJ?jU=C"d5fsMh3MY:o
-Ufp:tRSBUs<Mb=+"o;Q421uGVZ)9kMTk=#>\on4&Br7OhU0uZKTQO+R:_&q at UYp9j3\.-iLS[%4
-3Vnf9. at MJBR=LQDWXFkV!YQ!3WLp`'UDc"]T\^)eV64ej#MLj8^rVQZF at e`9#D^$YTPas0NiOcb
-#!c])+H$[oE!B^'#V=g:TRmAnM6?oKY?L]1])2i&m at INE#=+KIX&]\QO0AE^0;-FkTPq'mA$J%<
-Z%M5JVcC#a->)!aZN:rLHTL@/o<gFlG$A1XRN\09H*lYj%3WqO/iF!(pTL7FPhSc]Rg9G>g'0q-
-%7",,5fO$/>IM%n"e``&S&bdAc:&jd%%FoL?u`]&1UHtN\gT$;S#NbV8$oi*[/+kRgBXCX5 at LT2
-#L?K]ohl#o#RoJPY<2p&H1mC$_nc/9S%G0"Rm3Llg;Q=u#f,PuH4QJfi+Tph*lI[[\f7X&i!c8I
-^Y,`e3d7!=<OiMe[$tF,MpB"?C2M^DZ+G,T85;D-CGc*HB#').H&9ODkV>5\[@D0T)<JtjFf8O?
-]),ar)[48W0"h'uZ$_,G].2Tj)9CTqa[qp2RWY3lXh*8lb$"\cN[MCWV8$68Zs9lJ+R?Xd]=[!8
-]JK5nS'2:fdCheL]na<1gY]^t0?JUl`dHsa)lM!Yqni0O#Fq_&65.4;Z,3"A_)rOM]cG@*FjjRu
-%6OsGg#:B4jdc2=_hg&U]Ka=WgWEbW^7]QS%b at Aij:=B3RT]Z[,eaaOJ"BgT=56<;S4X8r:T^-d
-"C,%]CQHI5=fU/iX+9OHRM$$V#RA^^_qc?6]slb0X/au0%\:S\gK1pI!R"\T#@)JrgjRBcF3Hm]
-#<>llNk>Xgpb,i3brsOq]V2P-bGMu!gd(<E=o#=^s3T\8]V'#m!,)U,8_sGc]V&]i!+FYGZ3O\K
-+[(b$*O4@&T1*/UBY_ar3M!b>HjDceUu4KE-LqYS((O"(ia>&2TPO`2:^Nf3$tCKUdn0d-3TQH'
-%\?JF?<+.W6cM::j.OC$(M0#Ma9TLfkb*(`5,Zt<S"/;p%6hDV3U,38&_VT%`B75(rM at Ki]?WU4
-gKoBa]t`-)Z0jXHmCe)3Htg_$fuH0ahE6.i>B-p`E!U0s)useH5`4Rh4p]p+i#Xu9>]&DiXlNgG
-j5(IThAOZ0o=UeP28F@?*\HCn2<u;JT:QFb4qH\f9BdKpl$cdsg5"fSBBHpG%UO0j??t_jJ\'qE
-%3CAs*f]7<?fcRRofXts?F6X0\a'3KlTV0 at Su_Z->O2:+li!$`S5$s at RI*&-m<tu)^7F%cm<\h]
-V*NhT7XOQqTDZH$r*6/jrK[jR6k5UmScl=:6T,DXHp*u*+9M.c]]O;rR*J0bJ^?Z(2i%ki"+d])
- at kaG_-M)2hlu"QdN$^o;Lrq>,Rgk-T.EX8]3=c;_;CU8^3]IsfL=7Tub&TM'JO0\Y%Z*WA*/oV\
-e5CidVbm\`MH!D<;O^DkAl>>`i+3scMFLO4]]sMlR7($.IBJ5cR8!oU'-(I<4uo!*``"/"h_hrM
-%G%Rk52:7JbtTPK.>6Mi,`r>PK5&1rBeg0Q"$s`<@PJg]"p8k,^hc!UNWqip#n13!+q-qo;BY%V
-1)\t'f*kD-)J-tIY]O[EkjE+>i,j;HDMON<.L\eAXWCk\/JsF&!tE6lM8m?XGVnb?ElM]P*TmW)
-$(m6"*tVs\5li<0.QU3G`utHlVD\th!c$f7Tu38E'YA.5b4E;">MA!t.r0koN=9=L1'bXC&=UIT
-Wq?V$C-%NSNA14]W5M<&XIH-1d^ZJ3$PLOe/J0LbnZE8r1;L'Yb4_43/+VjD7^3&Mh2[G(*69m/
-T[M">!K/k]ZgA,id^7t`E#FHT\:W<:@N.-I#bfI!*D#`oI)nD]Jqk;BXt,MS3?bGh)[2psDWccu
-ctF<.6(=tB"qK.3mS5D4g8HuM;p[Nf:LMuP4p`(Kq7`h3>5^[HoDntj80eX#;6XUUpJ$lOhAnt9
-F=dnpeR`#c7_sDPVH.[?Cc&/s'NV<9C?iO;XD9<2[+>ft<?/0:)Do*e8`Y9XflTq'#fm at aEh0,-
-prk`-j(]]n,)EQ*JKTb(&;;9`Fi9-2W4[54,KU&IP,.>:1AoAD=MgUVM=cVo<j>%aA1_d^Vd786
-`*6Wh(*mO&g=EmHC+d]HoeU(P4H"#M%I8Kj19A!E)i!?/VU..o,>BSo+pa&F1I7C]+GR_"C*9tW
-1N^T-)%>,S";OoK3O=pM8N]dDQtdNE>'0u7bh=s:'2aC/bstYCFX[&LQcnhl5B#lf!/tk;6NcMN
-X[u%![$ClK6;XL_%mrEi=1Zs_:'lVl=sj.f$=bLE+smq1RO3eV5gk7\_ot=VWBqfJFWkcGEJ0*P
-WXa^R#h=0r$mQD+3\0/)XJ%C:@h]plK,VH\%YLG4*<kX>au0FFE6]9n!I2aF%&qc&3JHFJ>Sr1i
-Se9T[6S_n)U>bYfGMKZj#(lHu>%-Uj,F><,`85eo3d?#W2B\!O*8A`<SRRomX5h!!1(9p3_E.XR
-9#e+ at 5e\2TY[IulI%CRnkSSq[D[^'U09^J0*5b<n%'E;:^6]!!he at afiJ\d at B@,e2':j1+!Qc'i
-8E\2!U+S'_3kB8ul;%ehFic<e"TZj7SYNW;"t=kt:gC=oBJ0l!7H=O.?jjlG!dE#4i57hB%YuN$
-%3`/#4'-;-iUJ(I&IK^MB9NrqR_T?)^+)6I,Y!ER,DjDM-j-94&`UGcMa>W1P":27,5?,5nKoTm
-G\mokcqXoKL'WFi at c@fd2[o6e6HF=2%jVRC#m#]>KkDAD?r:)RL+*k-E5ps*1^#<a-oac<)'u)s
-&sHa%:5:hn at pFtTP&dEmadG%#ep)-W/]LYBa\*3k>_8-EhGua!FAHK-"-=0+7\C=_,Jtp.JneGC
-,07j0Oc%+INiAaA33$s!n2,t/&p#"JcT%flKq0B[*s4OH3Ku)Q%A<!1::]QuK;`Ys-b(Fhdu5:0
-7,abZou#!&:EZNfd[H7qB$cqa'E_b[%&#\2(+7O1S0NcXagk[Zi.`:HA/852VN7Ab9GhIg#,KHW
-*sJ!b!lM]%E"mVb"=bc$Br)h%[!X8)&=aI:GYSO;J/OdhpJ0:4JtmE/>1"fK7>]DVQBO>FSq-$X
-_E-QaTu*f\RP`u;XZ^'rZ!T3G?Ehh?`iN`<3.mmM<s+.S%&!F=^R+X]!hEF[@"PMH5iF/D4`IQ(
-d^H%<hcst#A-^6m`7HLW:FgFKY[Ir!^puKlX>rbO1i]4\-$<@XCtW84Y&;qd&R3/DHjpi..u&oX
-"_^>W[:EPLfP;b<CNs\*n(s-/d'=;N&3@:dqV7i\hAm2I4ph<]-\O12'Z-EY\OC\dU'fd+9P'3T
-1S3:"\jWrC5t8>()"r\'\NH*&_g6F%l_8.N*bgFK%eljn>W_"=0;\-F2GbDZU?!6][.:_O!X at Q!
-T\ue$j/e1hd7o:"2OKJ?\G'J4>?\@KBXg7((^AsXMf4@>Xmj*W(:o/\JT.dk-G]qEjP7A:F7,%:
-]D#@;i]HuV/03Fu+N!R']>'C]D</XER7U_DI<qu<7D7 at 3_I"8FI<&'V]D(HUA320!YPgJs7pd_'
-9>?%^(/@TV.[FJ^M.gM4^VVmpDEQ_$>A[BAYea!WK^biR!<kFm[`^\cCc"nm`JD:]fH18NTG,2=
-e at Bjg,%[K&giE*Qaa-9cB^E'5nRa2Z2mV<#I,gnUej9Tae/&3pF#ef:_oQ"k;/*+jOsE:O"i/1t
-jpT at rFUiH,fin?,0QX50J2u84hY^q*#Hoo6@[pi9)s-F;>P;ZrWEGqhYdJgko5/6eq^%tLr%hc5
-3+[Z:5+#]WB6WkMJ^bV+8SD=pU,5o0]%Xc-=?RjT[%9n$RU9 at fr(EsTrgh#U$[Zh%7sJq02`#Z(
-m-q.g]COM>]^d:TK5I;+EF,o`*(MDpJ:%i>JYLeIj;Voa6-$2&bffoGQ0$5p[;]a0_>1?kmD^H]
-\<XGHQu8PG)M_1)3&dfuX.JN-<MVR6M:$S"7dp>##NfXqb*OK*DX2M^Jm^kM>'f4O$JlFDGW5lK
-pt0F&rRe\UK*WUp(=[\dgO!$`#[OqYChpfAG,Alf&6bsi>DHdk_2P^$9:6u=R968E#aH.n5Zdfo
-=3<?EEmUf0g&shO='@Y=NfhdOM7jkGJOtlAAhC3"o+:j;Ar,Biju at ik%YB;i%"Zp7LEkZhJH/LP
-JJ\q15f?:tOEgs6?6jNoA*iUO[O84Nb!!d2GbD9=pS at o/7ft*Qq!S1ZT64pgJ%bVQ&)d at mPc+LV
-c2($Kkl"kXp3to<qu;H.ra4">Ip_TGs2Xr\5O\S*A,edie3FEC)B8fD/+:8A"[>*Q^hBFW49l97
-#XF3R^mk`=F:1 at DU,Y+9!T5&P^mh!1SUge$K-7 at M\.Jc:*rou)J,~>
-endstream
-endobj
-%%EndResource
-%%BeginResource: file (PDF Color Space obj_11)
-11 0 obj
-<</R9
-9 0 R>>
-endobj
-%%EndResource
-%%BeginResource: file (PDF Extended Graphics State obj_12)
-12 0 obj
-<</R7
-7 0 R>>
-endobj
-%%EndResource
-%%BeginResource: file (PDF object obj_13)
-13 0 obj
-<</R5
-5 0 R>>
-endobj
-%%EndResource
-%%BeginResource: file (PDF Function obj_8)
-8 0 obj
-<</Filter[/ASCII85Decode
-/LZWDecode]
-/FunctionType 4
-/Domain[0
-1]
-/Range[0
-1
-0
-1
-0
-1
-0
-1]/Length 82>>stream
-J0)pi;h0C-+?#cbJcdI[`b5oKi1g<le6k'MN(5RX<&,I*M$P;fTn)'<*/2:=nf_tfA2>3c#3.-t
-JGT?~>
-endstream
-endobj
-%%EndResource
-%%BeginResource: file (PDF object obj_1)
-1 0 obj
-<<>>endobj
+end
+systemdict/setpacking known
+{setpacking}if
%%EndResource
+currentdict Adobe_AGM_Utils eq {end} if
%%EndProlog
+%%BeginSetup
+Adobe_AGM_Utils begin
+2 2010 Adobe_AGM_Core/ds gx
+Adobe_CoolType_Core/ds get exec
Adobe_AGM_Image/ds gx
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndSetup
%%Page: 1 1
-%%PageBoundingBox: 0 0 612 792
+%%EndPageComments
%%BeginPageSetup
-/pagesave save def
-10 0 obj
-<</Type/Page/MediaBox [0 0 612 792]
-/Parent 3 0 R
-/Resources<</ProcSet[/PDF]
-/ColorSpace 11 0 R
-/ExtGState 12 0 R
-/Properties 13 0 R
->>
-/Contents 6 0 R
->>
-endobj
+%ADOBeginClientInjection: PageSetup Start "AI11EPS"
+%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0
+%ADOEndClientInjection: PageSetup Start "AI11EPS"
+Adobe_AGM_Utils begin
+Adobe_AGM_Core/ps gx
+Adobe_AGM_Utils/capture_cpd gx
+Adobe_CoolType_Core/ps get exec
Adobe_AGM_Image/ps gx
+%ADOBeginClientInjection: PageSetup End "AI11EPS"
+/currentdistillerparams where
{pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse
{ userdict /AI11_PDFMark5 /cleartomark load put
userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put}
{ userdict /AI11_PDFMark5 /pdfmark load put
userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse
[/NamespacePush AI11_PDFMark5
[/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5
[{ai_metadata_stream_123}
currentfile 0 (% &&end XMP packet marker&&)
/SubFileDecode filter AI11_ReadMetadata_PDFMark5
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:CreatorTool>Adobe Illustrator CS6 (Macintosh)</xmp:CreatorTool>
+ <xmp:CreateDate>2016-12-26T20:34:28+12:00</xmp:CreateDate>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>256</xmpGImg:width>
+ <xmpGImg:height>188</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAvAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQV [...]
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>792.000000</stDim:w>
+ <stDim:h>612.000000</stDim:h>
+ <stDim:unit>Points</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Cyan</rdf:li>
+ <rdf:li>Magenta</rdf:li>
+ <rdf:li>Yellow</rdf:li>
+ <rdf:li>Black</rdf:li>
+ <rdf:li>PANTONE 307 C</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>PANTONE 307 C</xmpG:swatchName>
+ <xmpG:type>SPOT</xmpG:type>
+ <xmpG:tint>100.000000</xmpG:tint>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>50.196083</xmpG:magenta>
+ <xmpG:yellow>19.215687</xmpG:yellow>
+ <xmpG:black>2.352941</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/postscript</dc:format>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
% &&end XMP packet marker&&
[{ai_metadata_stream_123}
<</Type /Metadata /Subtype /XML>>
/PUT AI11_PDFMark5
[/Document
1 dict begin /Metadata {ai_metadata_stream_123} def
currentdict end /BDC AI11_PDFMark5
+%ADOEndClientInjection: PageSetup End "AI11EPS"
%%EndPageSetup
-6 0 obj
-<</Length 27047>>stream
-q 0.1 0 0 0.1 0 0 cm
-/Document/R5 BDC
-q
-0 0 2769.4 2033.78 re W n
-0 0 0 0 K
-0 0 0 0 k
-763.895 1344.86 m
-806.582 1387.05 806.09 1455.02 762.996 1496.75 c
-719.82 1538.36 650.25 1537.87 607.645 1495.59 c
-565.051 1453.39 565.453 1385.52 608.633 1343.8 c
-651.82 1302.16 721.27 1302.65 763.895 1344.86 c
+1 -1 scale 0 -203.379 translate
+pgsv
+[1 0 0 1 0 0 ]ct
+gsave
+np
+gsave
+0 0 mo
+0 203.379 li
+276.939 203.379 li
+276.939 0 li
+cp
+clp
+76.3896 68.8921 mo
+80.6582 64.6733 80.6094 57.876 76.2998 53.7031 cv
+71.9824 49.542 65.0254 49.5913 60.7646 53.8193 cv
+56.5054 58.0391 56.5454 64.8262 60.8633 68.998 cv
+65.1821 73.1621 72.1274 73.1133 76.3896 68.8921 cv
+false sop
+/0
+[/DeviceCMYK] /CSA add_res
+0 0 0 0 cmyk
f
-/R7 gs
-19.9182 w
-4 M
-/R9 cs
-1 scn
-/R9 CS
-1 SCN
-763.895 1344.86 m
-806.582 1387.05 806.09 1455.02 762.996 1496.75 c
-719.82 1538.36 650.25 1537.87 607.645 1495.59 c
-565.051 1453.39 565.453 1385.52 608.633 1343.8 c
-651.82 1302.16 721.27 1302.65 763.895 1344.86 c
-h
-S
-611.477 1498.85 m
-668.375 1554.95 742.355 1518.06 742.012 1504 c
-770.492 1414.57 702.438 1378.34 v
-634.195 1342.02 599.727 1369.02 590.668 1372.13 c
-545.941 1434.25 611.477 1498.85 v
+1.99182 lw
+0 lc
+0 lj
+4 ml
+[] 0 dsh
+true sadj
+76.3896 68.8921 mo
+80.6582 64.6733 80.6094 57.876 76.2998 53.7031 cv
+71.9824 49.542 65.0254 49.5913 60.7646 53.8193 cv
+56.5054 58.0391 56.5454 64.8262 60.8633 68.998 cv
+65.1821 73.1621 72.1274 73.1133 76.3896 68.8921 cv
+76.3896 68.8921 li
+cp
+/0
+<<
+/Name (PANTONE 307 C)
+/CSA /0 get_csa_by_name
+/MappedCSA /0 /CSA get_res
+/TintMethod /Subtractive
+/TintProc null
+/NComponents 4
+/Components [ 1 .501961 .192157 .0235294 ]
+>>
+/CSD add_res
+1 /0 /CSD get_res sepcs
+1 sep
+@
+61.1479 53.4932 mo
+66.8379 47.8833 74.2358 51.5723 74.2017 52.978 cv
+74.2012 52.978 77.0493 61.9214 70.2441 65.5444 cv
+63.4199 69.1763 59.9731 66.4761 59.0669 66.165 cv
+59.0669 66.165 54.5942 59.9531 61.1479 53.4932 cv
f
-2582.72 1112.02 m
-2569.91 1119.36 2559.41 1177.22 2541.57 1189.81 c
-2535.49 1183.28 2503.46 1164.24 2469.55 1194.77 c
-2398.87 1258.57 2323.03 1353.8 2293.36 1483.24 c
-2293.36 1483.09 2151.97 1483.51 2151.97 1483.24 c
-2118.09 1292.32 1928.95 1153.36 1857.03 1112.02 c
-1809.78 1084.93 1772.72 1068.67 1716.57 1061.91 c
-1662.58 1055.38 1562.74 1077.48 1491.54 1124.23 c
-1435.26 1161.23 1424.63 1218.23 1434.44 1267.79 c
-1444.71 1320.23 1506.24 1338.87 1567.66 1331.35 c
-1558 1336.55 1478.06 1445.29 1314.15 1370.75 c
-1199.38 1318.48 1053.72 1071.08 668.672 1071.08 c
-492.34 1066.04 370.266 1085.88 v
-248.148 1105.84 173.832 1150.97 y
-672.797 805.672 1256.43 805.672 v
-2028.54 805.672 2640.48 1078.98 2582.72 1112.02 c
+258.271 92.1763 mo
+256.992 91.4424 255.941 85.6563 254.158 84.397 cv
+253.549 85.0503 250.346 86.9541 246.955 83.9014 cv
+239.887 77.521 232.303 67.998 229.336 55.0542 cv
+229.336 55.0693 215.197 55.0273 215.197 55.0542 cv
+211.809 74.146 192.895 88.042 185.703 92.1763 cv
+180.979 94.8853 177.271 96.5112 171.658 97.187 cv
+166.258 97.8403 156.273 95.6304 149.154 90.9551 cv
+143.525 87.2554 142.463 81.5552 143.443 76.5991 cv
+144.471 71.355 150.625 69.4912 156.766 70.2432 cv
+155.801 69.7231 147.807 58.8491 131.415 66.3032 cv
+119.938 71.5303 105.372 96.27 66.8672 96.27 cv
+66.8672 96.27 49.2344 96.7739 37.0269 94.79 cv
+24.8149 92.7944 17.3833 88.2813 17.3833 88.2813 cv
+17.3833 88.2813 67.2798 122.811 125.643 122.811 cv
+202.854 122.811 264.049 95.48 258.271 92.1763 cv
f
-7.26577 w
-1 j
-2582.72 1112.02 m
-2569.91 1119.36 2559.41 1177.22 2541.57 1189.81 c
-2535.49 1183.28 2503.46 1164.24 2469.55 1194.77 c
-2398.87 1258.57 2323.03 1353.8 2293.36 1483.24 c
-2293.36 1483.09 2151.97 1483.51 2151.97 1483.24 c
-2118.09 1292.32 1928.95 1153.36 1857.03 1112.02 c
-1809.78 1084.93 1772.72 1068.67 1716.57 1061.91 c
-1662.58 1055.38 1562.74 1077.48 1491.54 1124.23 c
-1435.26 1161.23 1424.63 1218.23 1434.44 1267.79 c
-1444.71 1320.23 1506.24 1338.87 1567.66 1331.35 c
-1558 1336.55 1478.06 1445.29 1314.15 1370.75 c
-1199.38 1318.48 1053.72 1071.08 668.672 1071.08 c
-492.34 1066.04 370.266 1085.88 v
-248.148 1105.84 173.832 1150.97 y
-672.797 805.672 1256.43 805.672 v
-2028.54 805.672 2640.48 1078.98 2582.72 1112.02 c
-h
-S
-2514.22 1690.53 m
-2296.42 1877.05 1853.97 2004.68 1343.7 2004.68 c
-617.766 2004.68 29.2695 1746.43 29.2695 1427.75 c
-29.2695 1109.13 617.766 850.809 1343.7 850.809 c
-2069.59 850.809 2658.2 1109.13 2658.2 1427.75 c
-2658.2 1511.61 2617.35 1591.49 2544.06 1663.34 c
-2637.08 1663.55 l
-2721.94 1579.82 2769.4 1486.14 2769.4 1387.34 c
-2769.4 1030.31 2149.56 740.859 1384.75 740.859 c
-619.941 740.859 0 1030.31 0 1387.34 c
-0 1744.3 619.941 2033.78 1384.75 2033.78 c
-1914.09 2033.78 2374.08 1895.12 2607.05 1691.36 c
+.726577 lw
+1 lj
+258.271 92.1763 mo
+256.992 91.4424 255.941 85.6563 254.158 84.397 cv
+253.549 85.0503 250.346 86.9541 246.955 83.9014 cv
+239.887 77.521 232.303 67.998 229.336 55.0542 cv
+229.336 55.0693 215.197 55.0273 215.197 55.0542 cv
+211.809 74.146 192.895 88.042 185.703 92.1763 cv
+180.979 94.8853 177.271 96.5112 171.658 97.187 cv
+166.258 97.8403 156.273 95.6304 149.154 90.9551 cv
+143.525 87.2554 142.463 81.5552 143.443 76.5991 cv
+144.471 71.355 150.625 69.4912 156.766 70.2432 cv
+155.801 69.7231 147.807 58.8491 131.415 66.3032 cv
+119.938 71.5303 105.372 96.27 66.8672 96.27 cv
+66.8672 96.27 49.2344 96.7739 37.0269 94.79 cv
+24.8149 92.7944 17.3833 88.2813 17.3833 88.2813 cv
+17.3833 88.2813 67.2798 122.811 125.643 122.811 cv
+202.854 122.811 264.049 95.48 258.271 92.1763 cv
+258.271 92.1763 li
+cp
+@
+251.422 34.3252 mo
+229.643 15.6733 185.396 2.91016 134.37 2.91016 cv
+61.7769 2.91016 2.92725 28.7354 2.92725 60.603 cv
+2.92725 92.4653 61.7769 118.297 134.37 118.297 cv
+206.959 118.297 265.82 92.4653 265.82 60.603 cv
+265.82 52.2173 261.734 44.229 254.406 37.0444 cv
+263.709 37.0229 li
+272.193 45.396 276.939 54.7642 276.939 64.644 cv
+276.939 100.347 214.957 129.293 138.475 129.293 cv
+61.9941 129.293 0 100.347 0 64.644 cv
+0 28.9482 61.9941 0 138.475 0 cv
+191.41 0 237.408 13.8662 260.705 34.2422 cv
f
-2122.07 1563.16 m
-2112.26 1563.16 2104.27 1555.88 2104.27 1547.04 c
-2104.27 1538.09 2112.26 1530.69 2122.07 1530.69 c
-2316 1530.69 l
-2325.94 1530.69 2333.9 1538.09 2333.9 1547.04 c
-2333.9 1555.88 2325.94 1563.16 2316 1563.16 c
-2122.07 1563.16 l
+212.207 47.062 mo
+211.227 47.062 210.428 47.79 210.428 48.6743 cv
+210.428 49.5693 211.227 50.3091 212.207 50.3091 cv
+231.6 50.3091 li
+232.594 50.3091 233.391 49.5693 233.391 48.6743 cv
+233.391 47.79 232.594 47.062 231.6 47.062 cv
+212.207 47.062 li
f
-0 j
-2122.07 1563.16 m
-2112.26 1563.16 2104.27 1555.88 2104.27 1547.04 c
-2104.27 1538.09 2112.26 1530.69 2122.07 1530.69 c
-2316 1530.69 l
-2325.94 1530.69 2333.9 1538.09 2333.9 1547.04 c
-2333.9 1555.88 2325.94 1563.16 2316 1563.16 c
-2122.07 1563.16 l
-h
-S
-2410.15 1607.79 m
-2420.91 1607.79 2429.58 1615.42 2429.58 1624.76 c
-2429.58 1624.76 l
-2429.58 1634.08 2420.91 1641.67 2410.15 1641.67 c
-1737.93 1641.67 l
-1727.3 1641.67 1718.56 1634.08 1718.56 1624.76 c
-1718.56 1624.76 l
-1718.56 1615.42 1727.3 1607.79 1737.93 1607.79 c
-2410.15 1607.79 l
+0 lj
+212.207 47.062 mo
+211.227 47.062 210.428 47.79 210.428 48.6743 cv
+210.428 49.5693 211.227 50.3091 212.207 50.3091 cv
+231.6 50.3091 li
+232.594 50.3091 233.391 49.5693 233.391 48.6743 cv
+233.391 47.79 232.594 47.062 231.6 47.062 cv
+212.207 47.062 li
+212.207 47.062 li
+cp
+@
+241.016 42.5991 mo
+242.092 42.5991 242.959 41.8364 242.959 40.9023 cv
+242.959 40.9023 li
+242.959 39.9702 242.092 39.2114 241.016 39.2114 cv
+173.793 39.2114 li
+172.73 39.2114 171.855 39.9702 171.855 40.9023 cv
+171.855 40.9023 li
+171.855 41.8364 172.73 42.5991 173.793 42.5991 cv
+241.016 42.5991 li
f
-2410.15 1607.79 m
-2420.91 1607.79 2429.58 1615.42 2429.58 1624.76 c
-2429.58 1624.76 l
-2429.58 1634.08 2420.91 1641.67 2410.15 1641.67 c
-1737.93 1641.67 l
-1727.3 1641.67 1718.56 1634.08 1718.56 1624.76 c
-1718.56 1624.76 l
-1718.56 1615.42 1727.3 1607.79 1737.93 1607.79 c
-2410.15 1607.79 l
-h
-S
-2722.59 1690.88 m
-2742.17 1690.88 2758.04 1701.83 2758.04 1715.29 c
-2758.04 1715.29 l
-2758.04 1728.72 2742.17 1739.49 2722.59 1739.49 c
-481.785 1739.49 l
-462.152 1739.49 446.262 1728.72 446.262 1715.29 c
-446.262 1715.29 l
-446.262 1701.83 462.152 1690.88 481.785 1690.88 c
-2722.59 1690.88 l
+241.016 42.5991 mo
+242.092 42.5991 242.959 41.8364 242.959 40.9023 cv
+242.959 40.9023 li
+242.959 39.9702 242.092 39.2114 241.016 39.2114 cv
+173.793 39.2114 li
+172.73 39.2114 171.855 39.9702 171.855 40.9023 cv
+171.855 40.9023 li
+171.855 41.8364 172.73 42.5991 173.793 42.5991 cv
+241.016 42.5991 li
+241.016 42.5991 li
+cp
+@
+272.26 34.29 mo
+274.217 34.29 275.805 33.1953 275.805 31.8491 cv
+275.805 31.8491 li
+275.805 30.5063 274.217 29.4292 272.26 29.4292 cv
+48.1787 29.4292 li
+46.2153 29.4292 44.6265 30.5063 44.6265 31.8491 cv
+44.6265 31.8491 li
+44.6265 33.1953 46.2153 34.29 48.1787 34.29 cv
+272.26 34.29 li
f
-2722.59 1690.88 m
-2742.17 1690.88 2758.04 1701.83 2758.04 1715.29 c
-2758.04 1715.29 l
-2758.04 1728.72 2742.17 1739.49 2722.59 1739.49 c
-481.785 1739.49 l
-462.152 1739.49 446.262 1728.72 446.262 1715.29 c
-446.262 1715.29 l
-446.262 1701.83 462.152 1690.88 481.785 1690.88 c
-2722.59 1690.88 l
-h
-S
-69.3906 418.77 m
-96.457 418.77 l
-96.457 406.488 l
-96.457 396.5 101.324 390.25 112.145 390.25 c
-126.484 390.25 130.004 397.75 130.004 407.531 c
-130.004 420.219 129.195 424.398 101.051 445.82 c
-83.7305 459.148 69.3906 471.23 69.3906 491.621 c
-69.3906 516.18 84.2773 526.789 113.77 526.789 c
-128.379 526.789 138.938 523.039 145.43 518.469 c
-150.035 515.129 153.277 509.93 153.277 499.328 c
-153.277 485.172 l
-127.844 485.172 l
-127.844 497.031 l
-127.844 505.559 123.242 510.559 112.691 510.559 c
-101.586 510.559 96.457 505.77 96.457 494.109 c
-96.457 483.922 99.1563 477.672 124.047 457.699 c
-150.57 436.461 155.445 429.172 155.445 411.07 c
-155.445 387.539 143.539 374.031 111.332 374.031 c
-86.4336 374.031 69.3906 382.148 69.3906 400.871 c
-69.3906 418.77 l
+gsave
+0 203.379 mo
+276.939 203.379 li
+276.939 0 li
+0 0 li
+0 203.379 li
+cp
+clp
+272.26 34.29 mo
+274.217 34.29 275.805 33.1953 275.805 31.8491 cv
+275.805 31.8491 li
+275.805 30.5063 274.217 29.4292 272.26 29.4292 cv
+48.1787 29.4292 li
+46.2153 29.4292 44.6265 30.5063 44.6265 31.8491 cv
+44.6265 31.8491 li
+44.6265 33.1953 46.2153 34.29 48.1787 34.29 cv
+272.26 34.29 li
+272.26 34.29 li
+cp
+@
+grestore
+6.93945 161.502 mo
+9.646 161.502 li
+9.646 162.729 li
+9.646 163.729 10.1328 164.354 11.2148 164.354 cv
+12.6484 164.354 13.0005 163.604 13.0005 162.625 cv
+13.0005 161.355 12.9199 160.938 10.1055 158.797 cv
+8.37305 157.463 6.93945 156.256 6.93945 154.217 cv
+6.93945 151.76 8.42773 150.699 11.3774 150.699 cv
+12.8379 150.699 13.894 151.074 14.5435 151.531 cv
+15.0039 151.865 15.3276 152.385 15.3276 153.445 cv
+15.3276 154.861 li
+12.7847 154.861 li
+12.7847 153.676 li
+12.7847 152.822 12.3242 152.322 11.2695 152.322 cv
+10.1587 152.322 9.646 152.801 9.646 153.967 cv
+9.646 154.986 9.91602 155.611 12.4048 157.607 cv
+15.0571 159.732 15.5449 160.461 15.5449 162.271 cv
+15.5449 164.625 14.354 165.975 11.1333 165.975 cv
+8.64355 165.975 6.93945 165.164 6.93945 163.291 cv
+6.93945 161.502 li
f
-180.605 487.238 m
-180.605 508.27 189.535 526.789 226.34 526.789 c
-253.125 526.789 265.574 516.391 265.574 499.531 c
-265.574 484.539 l
-240.141 484.539 l
-240.141 494.941 l
-240.141 504.531 235.816 510.559 224.441 510.559 c
-210.371 510.559 207.66 502.852 207.66 484.75 c
-207.66 411.07 l
-207.66 393.379 214.977 390.25 223.633 390.25 c
-233.652 390.25 240.141 395.66 240.141 408.16 c
-240.141 418.57 l
-265.574 418.57 l
-265.574 401.91 l
-265.574 386.09 257.188 374.031 225.797 374.031 c
-191.699 374.031 180.605 387.969 180.605 411.281 c
-180.605 487.238 l
+18.0605 154.654 mo
+18.0605 152.551 18.9536 150.699 22.6343 150.699 cv
+25.3125 150.699 26.5576 151.738 26.5576 153.426 cv
+26.5576 154.924 li
+24.0142 154.924 li
+24.0142 153.885 li
+24.0142 152.926 23.582 152.322 22.4443 152.322 cv
+21.0371 152.322 20.7661 153.094 20.7661 154.902 cv
+20.7661 162.271 li
+20.7661 164.041 21.498 164.354 22.3633 164.354 cv
+23.3652 164.354 24.0142 163.813 24.0142 162.563 cv
+24.0142 161.521 li
+26.5576 161.521 li
+26.5576 163.188 li
+26.5576 164.77 25.7192 165.975 22.5801 165.975 cv
+19.1699 165.975 18.0605 164.582 18.0605 162.25 cv
+18.0605 154.654 li
f
-289.934 525.551 m
-316.992 525.551 l
-316.992 461.02 l
-352.98 461.02 l
-352.98 525.551 l
-380.039 525.551 l
-380.039 375.281 l
-352.98 375.281 l
-352.98 443.539 l
-316.992 443.539 l
-316.992 375.281 l
-289.934 375.281 l
-289.934 525.551 l
+28.9937 150.822 mo
+31.6992 150.822 li
+31.6992 157.275 li
+35.2983 157.275 li
+35.2983 150.822 li
+38.0039 150.822 li
+38.0039 165.85 li
+35.2983 165.85 li
+35.2983 159.023 li
+31.6992 159.023 li
+31.6992 165.85 li
+28.9937 165.85 li
+28.9937 150.822 li
f
-437.402 410.031 m
-437.402 397.121 444.98 390.25 456.078 390.25 c
-467.441 390.25 475.016 397.121 475.016 410.031 c
-475.016 488.91 l
-475.016 503.699 468.523 510.551 456.078 510.551 c
-443.902 510.551 437.402 503.699 437.402 488.91 c
-437.402 410.031 l
-h
-410.344 487.238 m
-410.344 508.27 419.27 526.789 456.078 526.789 c
-490.984 526.789 502.078 512.852 502.078 489.539 c
-502.078 413.57 l
-502.078 392.551 493.148 374.031 456.078 374.031 c
-421.438 374.031 410.344 387.969 410.344 411.281 c
-410.344 487.238 l
+41.0347 154.654 mo
+41.0347 152.551 41.9272 150.699 45.6079 150.699 cv
+49.0986 150.699 50.208 152.094 50.208 154.424 cv
+50.208 162.021 li
+50.208 164.123 49.3149 165.975 45.6079 165.975 cv
+42.144 165.975 41.0347 164.582 41.0347 162.25 cv
+41.0347 154.654 li
+43.7402 162.375 mo
+43.7402 163.666 44.498 164.354 45.6079 164.354 cv
+46.7441 164.354 47.502 163.666 47.502 162.375 cv
+47.502 154.486 li
+47.502 153.008 46.8525 152.322 45.6079 152.322 cv
+44.3906 152.322 43.7402 153.008 43.7402 154.486 cv
+43.7402 162.375 li
+43.7402 162.375 li
+cp
f
-558.633 410.031 m
-558.633 397.121 566.211 390.25 577.305 390.25 c
-588.672 390.25 596.25 397.121 596.25 410.031 c
-596.25 488.91 l
-596.25 503.699 589.75 510.551 577.305 510.551 c
-565.129 510.551 558.633 503.699 558.633 488.91 c
-558.633 410.031 l
-h
-531.566 487.238 m
-531.566 508.27 540.504 526.789 577.305 526.789 c
-612.211 526.789 623.316 512.852 623.316 489.539 c
-623.316 413.57 l
-623.316 392.551 614.379 374.031 577.305 374.031 c
-542.668 374.031 531.566 387.969 531.566 411.281 c
-531.566 487.238 l
+53.1567 154.654 mo
+53.1567 152.551 54.0508 150.699 57.731 150.699 cv
+61.2212 150.699 62.3315 152.094 62.3315 154.424 cv
+62.3315 162.021 li
+62.3315 164.123 61.438 165.975 57.731 165.975 cv
+54.2671 165.975 53.1567 164.582 53.1567 162.25 cv
+53.1567 154.654 li
+55.8638 162.375 mo
+55.8638 163.666 56.6211 164.354 57.731 164.354 cv
+58.8677 164.354 59.625 163.666 59.625 162.375 cv
+59.625 154.486 li
+59.625 153.008 58.9751 152.322 57.731 152.322 cv
+56.5132 152.322 55.8638 153.008 55.8638 154.486 cv
+55.8638 162.375 li
+55.8638 162.375 li
+cp
f
-653.613 525.539 m
-680.668 525.539 l
-680.668 392.762 l
-726.133 392.762 l
-726.133 375.281 l
-653.613 375.281 l
-653.613 525.539 l
+65.3613 150.824 mo
+68.0669 150.824 li
+68.0669 164.102 li
+72.6138 164.102 li
+72.6138 165.85 li
+65.3613 165.85 li
+65.3613 150.824 li
f
-837.617 410.031 m
-837.617 397.121 845.191 390.25 856.289 390.25 c
-867.645 390.25 875.23 397.121 875.23 410.031 c
-875.23 488.91 l
-875.23 503.699 868.734 510.551 856.289 510.551 c
-844.109 510.551 837.617 503.699 837.617 488.91 c
-837.617 410.031 l
-h
-810.551 487.238 m
-810.551 508.27 819.48 526.789 856.289 526.789 c
-891.195 526.789 902.289 512.852 902.289 489.539 c
-902.289 413.57 l
-902.289 392.551 893.363 374.031 856.289 374.031 c
-821.645 374.031 810.551 387.969 810.551 411.281 c
-810.551 487.238 l
+81.0552 154.654 mo
+81.0552 152.551 81.9482 150.699 85.6289 150.699 cv
+89.1196 150.699 90.229 152.094 90.229 154.424 cv
+90.229 162.021 li
+90.229 164.123 89.3364 165.975 85.6289 165.975 cv
+82.1646 165.975 81.0552 164.582 81.0552 162.25 cv
+81.0552 154.654 li
+83.7617 162.375 mo
+83.7617 163.666 84.519 164.354 85.6289 164.354 cv
+86.7646 164.354 87.5229 163.666 87.5229 162.375 cv
+87.5229 154.486 li
+87.5229 153.008 86.8735 152.322 85.6289 152.322 cv
+84.4111 152.322 83.7617 153.008 83.7617 154.486 cv
+83.7617 162.375 li
+83.7617 162.375 li
+cp
f
-932.594 525.539 m
-1006.2 525.539 l
-1006.2 508.07 l
-959.652 508.07 l
-959.652 461.02 l
-1003.5 461.02 l
-1003.5 443.539 l
-959.652 443.539 l
-959.652 375.281 l
-932.594 375.281 l
-932.594 525.539 l
+93.2598 150.824 mo
+100.62 150.824 li
+100.62 152.57 li
+95.9653 152.57 li
+95.9653 157.275 li
+100.35 157.275 li
+100.35 159.023 li
+95.9653 159.023 li
+95.9653 165.85 li
+93.2598 165.85 li
+93.2598 150.824 li
f
-1116.6 410.031 m
-1116.6 397.121 1124.17 390.25 1135.27 390.25 c
-1146.64 390.25 1154.21 397.121 1154.21 410.031 c
-1154.21 488.91 l
-1154.21 503.699 1147.72 510.551 1135.27 510.551 c
-1123.1 510.551 1116.6 503.699 1116.6 488.91 c
-1116.6 410.031 l
-h
-1089.54 487.238 m
-1089.54 508.27 1098.47 526.789 1135.27 526.789 c
-1170.18 526.789 1181.27 512.852 1181.27 489.539 c
-1181.27 413.57 l
-1181.27 392.551 1172.35 374.031 1135.27 374.031 c
-1100.63 374.031 1089.54 387.969 1089.54 411.281 c
-1089.54 487.238 l
+108.954 154.654 mo
+108.954 152.551 109.847 150.699 113.527 150.699 cv
+117.018 150.699 118.127 152.094 118.127 154.424 cv
+118.127 162.021 li
+118.127 164.123 117.235 165.975 113.527 165.975 cv
+110.063 165.975 108.954 164.582 108.954 162.25 cv
+108.954 154.654 li
+111.66 162.375 mo
+111.66 163.666 112.417 164.354 113.527 164.354 cv
+114.664 164.354 115.421 163.666 115.421 162.375 cv
+115.421 154.486 li
+115.421 153.008 114.772 152.322 113.527 152.322 cv
+112.31 152.322 111.66 153.008 111.66 154.486 cv
+111.66 162.375 li
+111.66 162.375 li
+cp
f
-1208.6 487.238 m
-1208.6 508.27 1217.53 526.789 1254.33 526.789 c
-1281.13 526.789 1293.57 516.391 1293.57 499.531 c
-1293.57 484.539 l
-1268.14 484.539 l
-1268.14 494.941 l
-1268.14 504.531 1263.81 510.551 1252.44 510.551 c
-1238.36 510.551 1235.66 502.852 1235.66 484.75 c
-1235.66 411.07 l
-1235.66 393.379 1242.97 390.25 1251.63 390.25 c
-1261.64 390.25 1268.14 395.66 1268.14 408.16 c
-1268.14 418.559 l
-1293.57 418.559 l
-1293.57 401.91 l
-1293.57 386.09 1285.19 374.031 1253.79 374.031 c
-1219.69 374.031 1208.6 387.969 1208.6 411.281 c
-1208.6 487.238 l
+120.86 154.654 mo
+120.86 152.551 121.753 150.699 125.433 150.699 cv
+128.113 150.699 129.357 151.738 129.357 153.426 cv
+129.357 154.924 li
+126.814 154.924 li
+126.814 153.885 li
+126.814 152.926 126.381 152.322 125.244 152.322 cv
+123.836 152.322 123.566 153.094 123.566 154.902 cv
+123.566 162.271 li
+123.566 164.041 124.297 164.354 125.163 164.354 cv
+126.164 164.354 126.814 163.813 126.814 162.563 cv
+126.814 161.521 li
+129.357 161.521 li
+129.357 163.188 li
+129.357 164.77 128.519 165.975 125.379 165.975 cv
+121.969 165.975 120.86 164.582 120.86 162.25 cv
+120.86 154.654 li
f
-1317.92 525.539 m
-1391.53 525.539 l
-1391.53 508.07 l
-1344.98 508.07 l
-1344.98 461.02 l
-1388.81 461.02 l
-1388.81 443.539 l
-1344.98 443.539 l
-1344.98 392.762 l
-1391.53 392.762 l
-1391.53 375.281 l
-1317.92 375.281 l
-1317.92 525.539 l
+131.792 150.824 mo
+139.152 150.824 li
+139.152 152.57 li
+134.498 152.57 li
+134.498 157.275 li
+138.881 157.275 li
+138.881 159.023 li
+134.498 159.023 li
+134.498 164.102 li
+139.152 164.102 li
+139.152 165.85 li
+131.792 165.85 li
+131.792 150.824 li
f
-1447.26 431.051 m
-1481.64 431.051 l
-1464.86 503.469 l
-1464.31 503.469 l
-1447.26 431.051 l
-h
-1450.24 525.539 m
-1481.64 525.539 l
-1521.42 375.281 l
-1494.35 375.281 l
-1485.42 413.57 l
-1443.2 413.57 l
-1434.28 375.281 l
-1407.22 375.281 l
-1450.24 525.539 l
+145.023 150.824 mo
+148.164 150.824 li
+152.143 165.85 li
+149.436 165.85 li
+148.543 162.021 li
+144.32 162.021 li
+143.428 165.85 li
+140.723 165.85 li
+145.023 150.824 li
+144.727 160.273 mo
+148.164 160.273 li
+146.486 153.031 li
+146.432 153.031 li
+144.727 160.273 li
+144.727 160.273 li
+cp
f
-1545.49 525.539 m
-1582.84 525.539 l
-1614.76 400.672 l
-1615.3 400.672 l
-1615.3 525.539 l
-1640.75 525.539 l
-1640.75 375.281 l
-1601.77 375.281 l
-1569.84 503.469 l
-1569.3 503.469 l
-1569.3 375.281 l
-1545.49 375.281 l
-1545.49 525.539 l
+154.549 150.824 mo
+158.285 150.824 li
+161.477 163.311 li
+161.529 163.311 li
+161.529 150.824 li
+164.076 150.824 li
+164.076 165.85 li
+160.178 165.85 li
+156.984 153.031 li
+156.93 153.031 li
+156.93 165.85 li
+154.549 165.85 li
+154.549 150.824 li
f
-1756.32 431.051 m
-1790.69 431.051 l
-1773.91 503.469 l
-1773.36 503.469 l
-1756.32 431.051 l
-h
-1759.3 525.539 m
-1790.69 525.539 l
-1830.47 375.281 l
-1803.39 375.281 l
-1794.48 413.57 l
-1752.25 413.57 l
-1743.33 375.281 l
-1716.28 375.281 l
-1759.3 525.539 l
+175.93 150.824 mo
+179.068 150.824 li
+183.047 165.85 li
+180.34 165.85 li
+179.447 162.021 li
+175.225 162.021 li
+174.334 165.85 li
+171.629 165.85 li
+175.93 150.824 li
+175.633 160.273 mo
+179.068 160.273 li
+177.391 153.031 li
+177.336 153.031 li
+175.633 160.273 li
+175.633 160.273 li
+cp
f
-1854.54 525.539 m
-1891.89 525.539 l
-1923.81 400.672 l
-1924.36 400.672 l
-1924.36 525.539 l
-1949.8 525.539 l
-1949.8 375.281 l
-1910.84 375.281 l
-1878.89 503.469 l
-1878.34 503.469 l
-1878.34 375.281 l
-1854.54 375.281 l
-1854.54 525.539 l
+185.455 150.824 mo
+189.189 150.824 li
+192.381 163.311 li
+192.436 163.311 li
+192.436 150.824 li
+194.98 150.824 li
+194.98 165.85 li
+191.084 165.85 li
+187.889 153.031 li
+187.834 153.031 li
+187.834 165.85 li
+185.455 165.85 li
+185.455 150.824 li
f
-2007.97 392.762 m
-2020.96 392.762 l
-2040.99 392.762 2044.77 400.871 2044.77 426.68 c
-2044.77 478.289 l
-2044.77 500.57 2041.79 508.07 2018.81 508.07 c
-2007.97 508.07 l
-2007.97 392.762 l
-h
-1980.92 525.539 m
-2024.5 525.539 l
-2068.33 525.539 2071.85 514.301 2071.85 470.59 c
-2071.85 425.852 l
-2071.85 387.328 2062.91 375.281 2020.16 375.281 c
-1980.92 375.281 l
-1980.92 525.539 l
+198.092 150.824 mo
+202.451 150.824 li
+206.834 150.824 207.186 151.947 207.186 156.318 cv
+207.186 160.793 li
+207.186 164.645 206.291 165.85 202.016 165.85 cv
+198.092 165.85 li
+198.092 150.824 li
+200.797 164.102 mo
+202.096 164.102 li
+204.1 164.102 204.477 163.291 204.477 160.711 cv
+204.477 155.549 li
+204.477 153.32 204.18 152.57 201.881 152.57 cv
+200.797 152.57 li
+200.797 164.102 li
+200.797 164.102 li
+cp
f
-2163.56 525.539 m
-2237.19 525.539 l
-2237.19 508.07 l
-2190.63 508.07 l
-2190.63 461.02 l
-2234.47 461.02 l
-2234.47 443.539 l
-2190.63 443.539 l
-2190.63 392.762 l
-2237.19 392.762 l
-2237.19 375.281 l
-2163.56 375.281 l
-2163.56 525.539 l
+216.355 150.824 mo
+223.719 150.824 li
+223.719 152.57 li
+219.063 152.57 li
+219.063 157.275 li
+223.447 157.275 li
+223.447 159.023 li
+219.063 159.023 li
+219.063 164.102 li
+223.719 164.102 li
+223.719 165.85 li
+216.355 165.85 li
+216.355 150.824 li
f
-2292.92 431.051 m
-2327.29 431.051 l
-2310.5 503.469 l
-2309.97 503.469 l
-2292.92 431.051 l
-h
-2295.9 525.539 m
-2327.29 525.539 l
-2367.08 375.281 l
-2340 375.281 l
-2331.07 413.57 l
-2288.85 413.57 l
-2279.93 375.281 l
-2252.86 375.281 l
-2295.9 525.539 l
+229.59 150.824 mo
+232.729 150.824 li
+236.709 165.85 li
+234 165.85 li
+233.107 162.021 li
+228.885 162.021 li
+227.994 165.85 li
+225.287 165.85 li
+229.59 150.824 li
+229.293 160.273 mo
+232.729 160.273 li
+231.051 153.031 li
+230.998 153.031 li
+229.293 160.273 li
+229.293 160.273 li
+cp
f
-2418.19 458.121 m
-2425.24 458.121 l
-2446.62 458.121 2449.59 461.23 2449.59 483.711 c
-2449.59 505.98 2447.96 508.07 2431.19 508.07 c
-2418.19 508.07 l
-2418.19 458.121 l
-h
-2391.14 525.539 m
-2433.08 525.539 l
-2472.6 525.539 2476.65 517.43 2476.65 484.539 c
-2476.65 464.352 2473.15 455.609 2450.94 450.41 c
-2450.94 450 l
-2469.33 448.531 2475.56 441.262 2475.56 427.102 c
-2475.56 394.422 l
-2475.56 389.012 2475.56 381.512 2477.19 375.281 c
-2451.75 375.281 l
-2449.05 379.012 2448.51 382.77 2448.51 388.801 c
-2448.51 422.73 l
-2448.51 436.871 2445.27 440.641 2427.4 440.641 c
-2418.19 440.641 l
-2418.19 375.281 l
-2391.14 375.281 l
-2391.14 525.539 l
+239.113 150.824 mo
+243.309 150.824 li
+247.26 150.824 247.666 151.635 247.666 154.924 cv
+247.666 156.943 247.314 157.816 245.094 158.338 cv
+245.094 158.379 li
+246.934 158.525 247.557 159.252 247.557 160.668 cv
+247.557 163.936 li
+247.557 164.477 247.557 165.227 247.719 165.85 cv
+245.176 165.85 li
+244.904 165.477 244.852 165.102 244.852 164.498 cv
+244.852 161.105 li
+244.852 159.691 244.527 159.314 242.74 159.314 cv
+241.818 159.314 li
+241.818 165.85 li
+239.113 165.85 li
+239.113 150.824 li
+241.818 157.566 mo
+242.523 157.566 li
+244.662 157.566 244.959 157.256 244.959 155.008 cv
+244.959 152.779 244.797 152.57 243.119 152.57 cv
+241.818 152.57 li
+241.818 157.566 li
+241.818 157.566 li
+cp
f
-2489.13 525.539 m
-2581.14 525.539 l
-2581.14 508.07 l
-2548.67 508.07 l
-2548.67 375.281 l
-2521.6 375.281 l
-2521.6 508.07 l
-2489.13 508.07 l
-2489.13 525.539 l
+248.914 150.824 mo
+258.113 150.824 li
+258.113 152.57 li
+254.867 152.57 li
+254.867 165.85 li
+252.16 165.85 li
+252.16 152.57 li
+248.914 152.57 li
+248.914 150.824 li
f
-2603.86 525.539 m
-2630.91 525.539 l
-2630.91 461.02 l
-2666.91 461.02 l
-2666.91 525.539 l
-2693.99 525.539 l
-2693.99 375.281 l
-2666.91 375.281 l
-2666.91 443.539 l
-2630.91 443.539 l
-2630.91 375.281 l
-2603.86 375.281 l
-2603.86 525.539 l
+260.387 150.824 mo
+263.092 150.824 li
+263.092 157.275 li
+266.691 157.275 li
+266.691 150.824 li
+269.398 150.824 li
+269.398 165.85 li
+266.691 165.85 li
+266.691 159.023 li
+263.092 159.023 li
+263.092 165.85 li
+260.387 165.85 li
+260.387 150.824 li
f
-69.9219 197.359 m
-100.93 197.359 l
-100.93 185.07 l
-100.93 175.082 106.516 168.832 118.91 168.832 c
-135.355 168.832 139.391 176.332 139.391 186.102 c
-139.391 198.809 138.457 202.969 106.207 224.41 c
-86.3516 237.73 69.9219 249.801 69.9219 270.199 c
-69.9219 294.762 86.9727 305.371 120.781 305.371 c
-137.52 305.371 149.617 301.621 157.066 297.051 c
-162.336 293.711 166.055 288.512 166.055 277.91 c
-166.055 263.75 l
-136.902 263.75 l
-136.902 275.609 l
-136.902 284.141 131.637 289.148 119.535 289.148 c
-106.82 289.148 100.93 284.352 100.93 272.691 c
-100.93 262.5 104.031 256.262 132.566 236.281 c
-162.961 215.051 168.539 207.762 168.539 189.66 c
-168.539 166.141 154.895 152.602 117.984 152.602 c
-89.457 152.602 69.9219 160.73 69.9219 179.449 c
-69.9219 197.359 l
+6.99219 183.643 mo
+10.0933 183.643 li
+10.0933 184.871 li
+10.0933 185.869 10.6519 186.494 11.8911 186.494 cv
+13.5356 186.494 13.9395 185.744 13.9395 184.768 cv
+13.9395 183.498 13.8457 183.082 10.6211 180.938 cv
+8.63525 179.605 6.99219 178.398 6.99219 176.357 cv
+6.99219 173.902 8.69727 172.842 12.0781 172.842 cv
+13.7524 172.842 14.9619 173.217 15.707 173.674 cv
+16.2339 174.008 16.606 174.527 16.606 175.588 cv
+16.606 177.004 li
+13.6904 177.004 li
+13.6904 175.816 li
+13.6904 174.965 13.1641 174.463 11.9536 174.463 cv
+10.6821 174.463 10.0933 174.943 10.0933 176.109 cv
+10.0933 177.129 10.4033 177.752 13.2568 179.75 cv
+16.2964 181.873 16.854 182.602 16.854 184.412 cv
+16.854 186.764 15.4897 188.117 11.7988 188.117 cv
+8.9458 188.117 6.99219 187.305 6.99219 185.434 cv
+6.99219 183.643 li
f
-196.461 265.832 m
-196.461 286.852 206.688 305.371 248.867 305.371 c
-279.57 305.371 293.832 294.969 293.832 278.109 c
-293.832 263.121 l
-264.684 263.121 l
-264.684 273.531 l
-264.684 283.102 259.727 289.148 246.695 289.148 c
-230.57 289.148 227.465 281.449 227.465 263.332 c
-227.465 189.66 l
-227.465 171.961 235.84 168.832 245.766 168.832 c
-257.234 168.832 264.684 174.25 264.684 186.738 c
-264.684 197.141 l
-293.832 197.141 l
-293.832 180.488 l
-293.832 164.68 284.223 152.602 248.254 152.602 c
-209.164 152.602 196.461 166.551 196.461 189.871 c
-196.461 265.832 l
+19.6465 176.795 mo
+19.6465 174.693 20.6689 172.842 24.8867 172.842 cv
+27.957 172.842 29.3833 173.881 29.3833 175.566 cv
+29.3833 177.066 li
+26.4688 177.066 li
+26.4688 176.025 li
+26.4688 175.068 25.9731 174.463 24.6699 174.463 cv
+23.0571 174.463 22.7466 175.232 22.7466 177.045 cv
+22.7466 184.412 li
+22.7466 186.182 23.584 186.494 24.5767 186.494 cv
+25.7236 186.494 26.4688 185.953 26.4688 184.705 cv
+26.4688 183.664 li
+29.3833 183.664 li
+29.3833 185.33 li
+29.3833 186.91 28.4224 188.117 24.8257 188.117 cv
+20.9165 188.117 19.6465 186.723 19.6465 184.391 cv
+19.6465 176.795 li
f
-319.898 153.852 31.0039 150.277 re
+31.9897 187.992 mo
+35.0903 187.992 li
+35.0903 172.965 li
+31.9897 172.965 li
+31.9897 187.992 li
+cp
f
-384.711 304.129 m
-469.07 304.121 l
-469.07 286.641 l
-415.727 286.641 l
-415.727 239.609 l
-465.961 239.609 l
-465.961 222.109 l
-415.727 222.109 l
-415.727 171.332 l
-469.07 171.332 l
-469.07 153.852 l
-384.711 153.852 l
-384.711 304.129 l
+38.4712 172.965 mo
+46.9072 172.967 li
+46.9072 174.715 li
+41.5728 174.715 li
+41.5728 179.418 li
+46.5962 179.418 li
+46.5962 181.168 li
+41.5728 181.168 li
+41.5728 186.244 li
+46.9072 186.244 li
+46.9072 187.992 li
+38.4712 187.992 li
+38.4712 172.965 li
f
-494.195 304.121 m
-536.988 304.121 l
-573.586 179.238 l
-574.203 179.238 l
-574.203 304.121 l
-603.355 304.121 l
-603.355 153.852 l
-558.695 153.852 l
-522.102 282.07 l
-521.484 282.07 l
-521.484 153.852 l
-494.195 153.852 l
-494.195 304.121 l
+49.4199 172.967 mo
+53.6992 172.967 li
+57.3589 185.455 li
+57.4204 185.455 li
+57.4204 172.967 li
+60.3354 172.967 li
+60.3354 187.992 li
+55.8696 187.992 li
+52.2104 175.172 li
+52.1484 175.172 li
+52.1484 187.992 li
+49.4199 187.992 li
+49.4199 172.967 li
f
-634.688 265.832 m
-634.688 286.852 644.922 305.371 687.102 305.371 c
-717.809 305.371 732.07 294.969 732.07 278.109 c
-732.07 263.121 l
-702.922 263.121 l
-702.922 273.531 l
-702.922 283.102 697.953 289.148 684.938 289.148 c
-668.805 289.148 665.703 281.441 665.703 263.332 c
-665.703 189.66 l
-665.703 171.961 674.082 168.832 684 168.832 c
-695.48 168.832 702.922 174.25 702.922 186.738 c
-702.922 197.141 l
-732.07 197.141 l
-732.07 180.488 l
-732.07 164.68 722.457 152.602 686.48 152.602 c
-647.406 152.602 634.688 166.551 634.688 189.871 c
-634.688 265.832 l
+63.4692 176.795 mo
+63.4692 174.693 64.4927 172.842 68.7104 172.842 cv
+71.7813 172.842 73.207 173.881 73.207 175.566 cv
+73.207 177.066 li
+70.2925 177.066 li
+70.2925 176.025 li
+70.2925 175.068 69.7954 174.463 68.4941 174.463 cv
+66.8809 174.463 66.5703 175.234 66.5703 177.045 cv
+66.5703 184.412 li
+66.5703 186.182 67.4082 186.494 68.4004 186.494 cv
+69.5483 186.494 70.2925 185.953 70.2925 184.705 cv
+70.2925 183.664 li
+73.207 183.664 li
+73.207 185.33 li
+73.207 186.91 72.2461 188.117 68.6479 188.117 cv
+64.7407 188.117 63.4692 186.723 63.4692 184.391 cv
+63.4692 176.795 li
f
-759.059 304.121 m
-843.414 304.121 l
-843.414 286.641 l
-790.066 286.641 l
-790.066 239.609 l
-840.313 239.609 l
-840.313 222.109 l
-790.066 222.109 l
-790.066 171.332 l
-843.414 171.332 l
-843.414 153.852 l
-759.059 153.852 l
-759.059 304.121 l
+75.9063 172.967 mo
+84.3418 172.967 li
+84.3418 174.715 li
+79.0068 174.715 li
+79.0068 179.418 li
+84.0317 179.418 li
+84.0317 181.168 li
+79.0068 181.168 li
+79.0068 186.244 li
+84.3418 186.244 li
+84.3418 187.992 li
+75.9063 187.992 li
+75.9063 172.967 li
f
-964.414 209.629 m
-1003.79 209.629 l
-984.566 282.07 l
-983.949 282.07 l
-964.414 209.629 l
-h
-967.82 304.121 m
-1003.79 304.121 l
-1049.38 153.852 l
-1018.37 153.852 l
-1008.14 192.148 l
-959.758 192.148 l
-949.527 153.852 l
-918.508 153.852 l
-967.82 304.121 l
+96.7822 172.967 mo
+100.379 172.967 li
+104.938 187.992 li
+101.837 187.992 li
+100.814 184.164 li
+95.9761 184.164 li
+94.9526 187.992 li
+91.8511 187.992 li
+96.7822 172.967 li
+96.4414 182.416 mo
+100.379 182.416 li
+98.4565 175.172 li
+98.395 175.172 li
+96.4414 182.416 li
+96.4414 182.416 li
+cp
f
-1076.06 304.121 m
-1118.86 304.121 l
-1155.45 179.238 l
-1156.07 179.238 l
-1156.07 304.121 l
-1185.22 304.121 l
-1185.22 153.852 l
-1140.57 153.852 l
-1103.97 282.07 l
-1103.35 282.07 l
-1103.35 153.852 l
-1076.06 153.852 l
-1076.06 304.121 l
+107.606 172.967 mo
+111.886 172.967 li
+115.545 185.455 li
+115.607 185.455 li
+115.607 172.967 li
+118.522 172.967 li
+118.522 187.992 li
+114.057 187.992 li
+110.397 175.172 li
+110.335 175.172 li
+110.335 187.992 li
+107.606 187.992 li
+107.606 172.967 li
f
-1250.98 171.332 m
-1265.87 171.332 l
-1288.82 171.332 1293.16 179.449 1293.16 205.262 c
-1293.16 256.879 l
-1293.16 279.148 1289.75 286.641 1263.39 286.641 c
-1250.98 286.641 l
-1250.98 171.332 l
-h
-1219.97 304.121 m
-1269.9 304.121 l
-1320.14 304.121 1324.17 292.879 1324.17 249.18 c
-1324.17 204.43 l
-1324.17 165.93 1313.94 153.852 1264.94 153.852 c
-1219.97 153.852 l
-1219.97 304.121 l
+121.997 172.967 mo
+126.99 172.967 li
+132.014 172.967 132.417 174.09 132.417 178.461 cv
+132.417 182.936 li
+132.417 186.785 131.394 187.992 126.494 187.992 cv
+121.997 187.992 li
+121.997 172.967 li
+125.098 186.244 mo
+126.587 186.244 li
+128.882 186.244 129.316 185.434 129.316 182.852 cv
+129.316 177.689 li
+129.316 175.463 128.975 174.715 126.339 174.715 cv
+125.098 174.715 li
+125.098 186.244 li
+125.098 186.244 li
+cp
f
-1406.41 304.121 m
-1511.85 304.121 l
-1511.85 286.641 l
-1474.63 286.641 l
-1474.63 153.852 l
-1443.63 153.852 l
-1443.63 286.641 l
-1406.41 286.641 l
-1406.41 304.121 l
+140.641 172.967 mo
+151.186 172.967 li
+151.186 174.715 li
+147.463 174.715 li
+147.463 187.992 li
+144.363 187.992 li
+144.363 174.715 li
+140.641 174.715 li
+140.641 172.967 li
f
-1536.99 304.121 m
-1621.34 304.121 l
-1621.34 286.641 l
-1567.99 286.641 l
-1567.99 239.609 l
-1618.23 239.609 l
-1618.23 222.109 l
-1567.99 222.109 l
-1567.99 171.332 l
-1621.34 171.332 l
-1621.34 153.852 l
-1536.99 153.852 l
-1536.99 304.121 l
+153.699 172.967 mo
+162.135 172.967 li
+162.135 174.715 li
+156.799 174.715 li
+156.799 179.418 li
+161.822 179.418 li
+161.822 181.168 li
+156.799 181.168 li
+156.799 186.244 li
+162.135 186.244 li
+162.135 187.992 li
+153.699 187.992 li
+153.699 172.967 li
f
-1643.05 265.832 m
-1643.05 286.852 1653.27 305.371 1695.44 305.371 c
-1726.16 305.371 1740.42 294.969 1740.42 278.109 c
-1740.42 263.121 l
-1711.26 263.121 l
-1711.26 273.531 l
-1711.26 283.102 1706.3 289.148 1693.29 289.148 c
-1677.15 289.148 1674.05 281.441 1674.05 263.332 c
-1674.05 189.66 l
-1674.05 171.961 1682.42 168.832 1692.36 168.832 c
-1703.81 168.832 1711.26 174.25 1711.26 186.738 c
-1711.26 197.141 l
-1740.42 197.141 l
-1740.42 180.488 l
-1740.42 164.68 1730.81 152.602 1694.85 152.602 c
-1655.76 152.602 1643.05 166.551 1643.05 189.871 c
-1643.05 265.832 l
+164.305 176.795 mo
+164.305 174.693 165.328 172.842 169.545 172.842 cv
+172.617 172.842 174.043 173.881 174.043 175.566 cv
+174.043 177.066 li
+171.127 177.066 li
+171.127 176.025 li
+171.127 175.068 170.631 174.463 169.33 174.463 cv
+167.715 174.463 167.404 175.234 167.404 177.045 cv
+167.404 184.412 li
+167.404 186.182 168.242 186.494 169.236 186.494 cv
+170.381 186.494 171.127 185.953 171.127 184.705 cv
+171.127 183.664 li
+174.043 183.664 li
+174.043 185.33 li
+174.043 186.91 173.082 188.117 169.484 188.117 cv
+165.576 188.117 164.305 186.723 164.305 184.391 cv
+164.305 176.795 li
f
-1767.43 304.121 m
-1798.41 304.121 l
-1798.41 239.609 l
-1839.68 239.609 l
-1839.68 304.121 l
-1870.7 304.121 l
-1870.7 153.852 l
-1839.68 153.852 l
-1839.68 222.109 l
-1798.41 222.109 l
-1798.41 153.852 l
-1767.43 153.852 l
-1767.43 304.121 l
+176.744 172.967 mo
+179.842 172.967 li
+179.842 179.418 li
+183.969 179.418 li
+183.969 172.967 li
+187.07 172.967 li
+187.07 187.992 li
+183.969 187.992 li
+183.969 181.168 li
+179.842 181.168 li
+179.842 187.992 li
+176.744 187.992 li
+176.744 172.967 li
f
-1905.42 304.121 m
-1948.25 304.121 l
-1984.84 179.238 l
-1985.43 179.238 l
-1985.43 304.121 l
-2014.61 304.121 l
-2014.61 153.852 l
-1969.96 153.852 l
-1933.33 282.07 l
-1932.74 282.07 l
-1932.74 153.852 l
-1905.42 153.852 l
-1905.42 304.121 l
+190.543 172.967 mo
+194.826 172.967 li
+198.484 185.455 li
+198.543 185.455 li
+198.543 172.967 li
+201.461 172.967 li
+201.461 187.992 li
+196.996 187.992 li
+193.334 175.172 li
+193.273 175.172 li
+193.273 187.992 li
+190.543 187.992 li
+190.543 172.967 li
f
-2079.43 188.609 m
-2079.43 175.699 2088.11 168.832 2100.83 168.832 c
-2113.84 168.832 2122.52 175.699 2122.52 188.609 c
-2122.52 267.488 l
-2122.52 282.27 2115.08 289.148 2100.83 289.148 c
-2086.87 289.148 2079.43 282.27 2079.43 267.488 c
-2079.43 188.609 l
-h
-2048.4 265.832 m
-2048.4 286.852 2058.65 305.371 2100.83 305.371 c
-2140.83 305.371 2153.55 291.43 2153.55 268.109 c
-2153.55 192.148 l
-2153.55 171.129 2143.31 152.602 2100.83 152.602 c
-2061.12 152.602 2048.4 166.551 2048.4 189.871 c
-2048.4 265.832 l
+204.84 176.795 mo
+204.84 174.693 205.865 172.842 210.084 172.842 cv
+214.084 172.842 215.355 174.234 215.355 176.566 cv
+215.355 184.164 li
+215.355 186.266 214.332 188.117 210.084 188.117 cv
+206.111 188.117 204.84 186.723 204.84 184.391 cv
+204.84 176.795 li
+207.943 184.518 mo
+207.943 185.809 208.811 186.494 210.084 186.494 cv
+211.385 186.494 212.252 185.809 212.252 184.518 cv
+212.252 176.629 li
+212.252 175.15 211.508 174.463 210.084 174.463 cv
+208.688 174.463 207.943 175.15 207.943 176.629 cv
+207.943 184.518 li
+207.943 184.518 li
+cp
f
-2187.37 304.121 m
-2218.36 304.121 l
-2218.36 171.332 l
-2270.46 171.332 l
-2270.46 153.852 l
-2187.37 153.852 l
-2187.37 304.121 l
+218.736 172.967 mo
+221.836 172.967 li
+221.836 186.244 li
+227.047 186.244 li
+227.047 187.992 li
+218.736 187.992 li
+218.736 172.967 li
f
-2326.92 188.609 m
-2326.92 175.699 2335.59 168.832 2348.33 168.832 c
-2361.34 168.832 2370.02 175.699 2370.02 188.609 c
-2370.02 267.488 l
-2370.02 282.27 2362.58 289.148 2348.33 289.148 c
-2334.37 289.148 2326.92 282.27 2326.92 267.488 c
-2326.92 188.609 l
-h
-2295.9 265.832 m
-2295.9 286.852 2306.15 305.371 2348.33 305.371 c
-2388.32 305.371 2401.05 291.43 2401.05 268.109 c
-2401.05 192.148 l
-2401.05 171.129 2390.81 152.602 2348.33 152.602 c
-2308.62 152.602 2295.9 166.551 2295.9 189.871 c
-2295.9 265.832 l
+229.59 176.795 mo
+229.59 174.693 230.615 172.842 234.834 172.842 cv
+238.832 172.842 240.105 174.234 240.105 176.566 cv
+240.105 184.164 li
+240.105 186.266 239.082 188.117 234.834 188.117 cv
+230.861 188.117 229.59 186.723 229.59 184.391 cv
+229.59 176.795 li
+232.691 184.518 mo
+232.691 185.809 233.559 186.494 234.834 186.494 cv
+236.135 186.494 237.002 185.809 237.002 184.518 cv
+237.002 176.629 li
+237.002 175.15 236.258 174.463 234.834 174.463 cv
+233.438 174.463 232.691 175.15 232.691 176.629 cv
+232.691 184.518 li
+232.691 184.518 li
+cp
f
-2507.12 264.371 m
-2507.12 272.07 l
-2507.12 282.691 2499.37 289.148 2487.25 289.148 c
-2472.99 289.148 2465.85 280.391 2465.85 264.371 c
-2465.85 188.609 l
-2465.85 176.531 2474.55 168.832 2487.25 168.832 c
-2495.94 168.832 2503.07 169.672 2507.12 170.301 c
-2507.12 214.41 l
-2486.66 214.41 l
-2486.66 231.898 l
-2538.11 231.898 l
-2538.11 156.359 l
-2526.03 154.48 2504.63 152.602 2486.95 152.602 c
-2447.57 152.602 2434.87 166.551 2434.87 189.871 c
-2434.87 265.832 l
-2434.87 293.93 2447.57 305.371 2487.56 305.371 c
-2520.77 305.371 2538.11 297.262 2538.11 278.109 c
-2538.11 264.371 l
-2507.12 264.371 l
+250.713 176.941 mo
+250.713 176.172 li
+250.713 175.109 249.938 174.463 248.725 174.463 cv
+247.299 174.463 246.586 175.34 246.586 176.941 cv
+246.586 184.518 li
+246.586 185.725 247.455 186.494 248.725 186.494 cv
+249.594 186.494 250.307 186.41 250.713 186.348 cv
+250.713 181.938 li
+248.666 181.938 li
+248.666 180.188 li
+253.811 180.188 li
+253.811 187.742 li
+252.604 187.93 250.463 188.117 248.695 188.117 cv
+244.758 188.117 243.486 186.723 243.486 184.391 cv
+243.486 176.795 li
+243.486 173.984 244.758 172.842 248.756 172.842 cv
+252.078 172.842 253.811 173.652 253.811 175.566 cv
+253.811 176.941 li
+250.713 176.941 li
f
-2566.05 304.121 m
-2597.07 304.121 l
-2624.04 240.859 l
-2624.66 240.859 l
-2655.68 304.121 l
-2682.96 304.121 l
-2639.86 215.461 l
-2639.86 153.852 l
-2608.84 153.852 l
-2608.84 215.461 l
-2566.05 304.121 l
+256.605 172.967 mo
+259.707 172.967 li
+262.404 179.293 li
+262.467 179.293 li
+265.568 172.967 li
+268.297 172.967 li
+263.986 181.832 li
+263.986 187.992 li
+260.885 187.992 li
+260.885 181.832 li
+256.605 172.967 li
f
-0.42749 0.313721 0.286377 0.129395 K
-0.42749 0.313721 0.286377 0.129395 k
-97.5898 62.9219 m
-97.5898 27.7383 l
-97.5898 18.3711 100.805 13.1289 107.32 13.1289 c
-113.938 13.1289 117.148 17.9219 117.148 27.7383 c
-117.148 62.9219 l
-133.773 62.9219 l
-133.773 28.7617 l
-133.773 9.64063 124.223 0 106.863 0 c
-89.9727 0 80.9609 9.28125 80.9609 29.1211 c
-80.9609 62.9219 l
-97.5898 62.9219 l
+9.75928 197.086 mo
+9.75928 200.604 li
+9.75928 201.541 10.0806 202.064 10.7324 202.064 cv
+11.394 202.064 11.7148 201.586 11.7148 200.604 cv
+11.7148 197.086 li
+13.3774 197.086 li
+13.3774 200.502 li
+13.3774 202.414 12.4224 203.379 10.6865 203.379 cv
+8.99756 203.379 8.09619 202.449 8.09619 200.467 cv
+8.09619 197.086 li
+9.75928 197.086 li
+.42749 .313721 .286377 .129395 cmyk
f
-181.195 1.01172 m
-181.195 62.9219 l
-200.758 62.9219 l
-210.582 43.8984 l
-213.984 37.7617 217.563 29.4805 220.316 22.2305 c
-220.59 22.2305 l
-219.68 30.4102 219.309 39.0391 219.309 48.2188 c
-219.309 62.9219 l
-234.469 62.9219 l
-234.469 1.01172 l
-217.012 1.01172 l
-206.449 21.5898 l
-203.051 28.1094 199.016 36.4609 196.07 43.8984 c
-195.707 43.8984 l
-196.16 35.5508 196.348 26.2695 196.348 16.2617 c
-196.348 1.01172 l
-181.195 1.01172 l
+18.1196 203.277 mo
+18.1196 197.086 li
+20.0762 197.086 li
+21.0586 198.988 li
+21.3984 199.602 21.7563 200.43 22.0317 201.154 cv
+22.0591 201.154 li
+21.9683 200.338 21.9312 199.475 21.9312 198.557 cv
+21.9312 197.086 li
+23.4473 197.086 li
+23.4473 203.277 li
+21.7012 203.277 li
+20.645 201.219 li
+20.3052 200.566 19.9019 199.732 19.6074 198.988 cv
+19.5708 198.988 li
+19.6162 199.822 19.6353 200.752 19.6353 201.752 cv
+19.6353 203.277 li
+18.1196 203.277 li
f
-282.066 1.01172 16.6211 61.9102 re
+28.2065 203.277 mo
+29.8687 203.277 li
+29.8687 197.086 li
+28.2065 197.086 li
+28.2065 203.277 li
+cp
f
-361.25 1.01172 m
-341.598 62.9219 l
-359.785 62.9219 l
-366.402 38.5703 l
-368.324 31.6016 369.98 24.8008 371.543 16.8984 c
-371.723 16.8984 l
-373.191 24.4219 374.938 31.6016 376.773 38.3008 c
-383.477 62.9219 l
-401.113 62.9219 l
-380.906 1.01172 l
-361.25 1.01172 l
+36.125 203.277 mo
+34.1602 197.086 li
+35.9785 197.086 li
+36.6406 199.521 li
+36.8325 200.219 36.998 200.898 37.1543 201.688 cv
+37.1724 201.688 li
+37.3193 200.936 37.4941 200.219 37.6777 199.549 cv
+38.3481 197.086 li
+40.1113 197.086 li
+38.0908 203.277 li
+36.125 203.277 li
f
-482.789 26 m
-460.563 26 l
-460.563 14.6094 l
-485.453 14.6094 l
-485.453 1.01172 l
-443.941 1.01172 l
-443.941 62.9219 l
-484.172 62.9219 l
-484.172 49.3203 l
-460.563 49.3203 l
-460.563 39.3984 l
-482.789 39.3984 l
-482.789 26 l
+48.2793 200.777 mo
+46.0566 200.777 li
+46.0566 201.918 li
+48.5454 201.918 li
+48.5454 203.277 li
+44.3945 203.277 li
+44.3945 197.086 li
+48.4175 197.086 li
+48.4175 198.445 li
+46.0566 198.445 li
+46.0566 199.438 li
+48.2793 199.438 li
+48.2793 200.777 li
f
-547.191 36.1914 m
-551.516 36.1914 l
-557.766 36.1914 561.344 39.2188 561.344 43.8086 c
-561.344 48.3984 558.305 51.0586 552.797 51.0586 c
-549.68 51.0586 548.023 50.8789 547.191 50.6992 c
-547.191 36.1914 l
-h
-530.754 62.0117 m
-535.438 62.7305 542.516 63.3789 550.77 63.3789 c
-560.238 63.3789 567.035 62.0898 571.715 58.5117 c
-575.668 55.4688 577.781 51.0586 577.781 45.0898 c
-577.781 37.3789 571.992 31.9609 567.219 30.1289 c
-567.219 29.8398 l
-571.262 28.0195 573.555 24.0586 575.113 18.75 c
-576.953 12.3984 578.98 3.39844 580.172 1.01172 c
-563.266 1.01172 l
-562.355 2.85156 560.691 7.62109 558.953 15.3516 c
-557.297 22.6914 555 24.2383 549.859 24.2383 c
-547.191 24.2383 l
-547.191 1.01172 l
-530.754 1.01172 l
-530.754 62.0117 l
+53.0757 197.178 mo
+53.5439 197.105 54.252 197.041 55.0771 197.041 cv
+56.0239 197.041 56.7036 197.17 57.1719 197.527 cv
+57.5669 197.832 57.7783 198.271 57.7783 198.869 cv
+57.7783 199.641 57.1992 200.182 56.7222 200.365 cv
+56.7222 200.395 li
+57.1265 200.576 57.356 200.973 57.5112 201.504 cv
+57.6953 202.139 57.8979 203.039 58.0176 203.277 cv
+56.3267 203.277 li
+56.2358 203.094 56.0693 202.615 55.8955 201.844 cv
+55.73 201.109 55.5 200.955 54.9858 200.955 cv
+54.7192 200.955 li
+54.7192 203.277 li
+53.0757 203.277 li
+53.0757 197.178 li
+54.7192 199.76 mo
+55.1519 199.76 li
+55.7769 199.76 56.1348 199.457 56.1348 198.998 cv
+56.1348 198.539 55.8306 198.271 55.2798 198.271 cv
+54.9683 198.271 54.8022 198.291 54.7192 198.309 cv
+54.7192 199.76 li
+54.7192 199.76 li
+cp
f
-624.648 17.5508 m
-628.406 15.6211 634.477 13.6914 640.719 13.6914 c
-646.406 13.6914 649.172 15.6211 649.172 18.75 c
-649.172 21.7695 646.406 23.4297 639.434 25.8086 c
-628.961 29.5898 621.977 35.2695 621.977 44.4492 c
-621.977 55.3906 631.266 63.832 646.875 63.832 c
-654.223 63.832 659.547 62.4609 663.59 60.7109 c
-660.102 47.3984 l
-657.434 48.6016 652.844 50.3398 646.695 50.3398 c
-641.637 50.3398 638.883 48.4883 638.883 45.7383 c
-638.883 42.6211 642.188 41.4297 650 38.4805 c
-661.109 34.3594 666.07 28.4688 666.07 19.8281 c
-666.07 9.19141 657.805 0.101563 639.703 0.101563 c
-632.266 0.101563 625.012 2.01953 621.523 3.85938 c
-624.648 17.5508 l
+62.4648 201.623 mo
+62.8408 201.816 63.4478 202.01 64.0723 202.01 cv
+64.6406 202.01 64.9175 201.816 64.9175 201.504 cv
+64.9175 201.201 64.6406 201.035 63.9438 200.797 cv
+62.8965 200.42 62.1978 199.852 62.1978 198.934 cv
+62.1978 197.84 63.127 196.994 64.6875 196.994 cv
+65.4224 196.994 65.9551 197.133 66.3594 197.307 cv
+66.0103 198.639 li
+65.7437 198.518 65.2847 198.344 64.6699 198.344 cv
+64.1641 198.344 63.8887 198.529 63.8887 198.805 cv
+63.8887 199.115 64.2192 199.234 65 199.529 cv
+66.1108 199.941 66.6074 200.531 66.6074 201.395 cv
+66.6074 202.459 65.7808 203.367 63.9707 203.367 cv
+63.2271 203.367 62.5015 203.176 62.1523 202.992 cv
+62.4648 201.623 li
f
-711.188 1.01172 16.625 61.9102 re
+71.1191 203.277 mo
+72.7817 203.277 li
+72.7817 197.086 li
+71.1191 197.086 li
+71.1191 203.277 li
+cp
f
-787.34 48.9609 m
-771.547 48.9609 l
-771.547 62.9219 l
-820.043 62.9219 l
-820.043 48.9609 l
-803.965 48.9609 l
-803.965 1.01172 l
-787.34 1.01172 l
-787.34 48.9609 l
+78.7344 198.482 mo
+77.1548 198.482 li
+77.1548 197.086 li
+82.0044 197.086 li
+82.0044 198.482 li
+80.3965 198.482 li
+80.3965 203.277 li
+78.7344 203.277 li
+78.7344 198.482 li
f
-878.203 1.01172 m
-878.203 26 l
-858.727 62.9219 l
-877.742 62.9219 l
-882.973 48.9609 l
-884.629 44.6406 885.828 41.5195 887.203 37.4688 c
-887.387 37.4688 l
-888.578 41.25 889.77 44.7305 891.332 48.9609 c
-896.387 62.9219 l
-915.121 62.9219 l
-894.828 26.6289 l
-894.828 1.01172 l
-878.203 1.01172 l
+87.8203 203.277 mo
+87.8203 200.777 li
+85.873 197.086 li
+87.7744 197.086 li
+88.2974 198.482 li
+88.4634 198.914 88.583 199.227 88.7207 199.631 cv
+88.7388 199.631 li
+88.8579 199.254 88.9771 198.904 89.1333 198.482 cv
+89.6392 197.086 li
+91.5122 197.086 li
+89.4829 200.715 li
+89.4829 203.277 li
+87.8203 203.277 li
f
-1056.52 13.1289 m
-1064.51 13.1289 1069.19 20.8516 1069.19 32.0508 c
-1069.19 42.7109 1064.42 50.7891 1056.34 50.7891 c
-1048.34 50.7891 1043.48 42.7109 1043.48 31.9609 c
-1043.38 20.8516 1048.34 13.1289 1056.34 13.1289 c
-1056.52 13.1289 l
-h
-1055.69 0 m
-1036.5 0 1025.93 14.4102 1025.93 31.6016 c
-1025.93 49.6016 1037.69 63.9297 1056.7 63.9297 c
-1076.64 63.9297 1086.73 49.1406 1086.73 32.6094 c
-1086.73 12.6797 1074.79 0 1055.78 0 c
-1055.69 0 l
+105.569 203.379 mo
+103.65 203.379 102.593 201.938 102.593 200.219 cv
+102.593 198.418 103.769 196.984 105.67 196.984 cv
+107.664 196.984 108.673 198.465 108.673 200.117 cv
+108.673 202.109 107.479 203.379 105.578 203.379 cv
+105.569 203.379 li
+105.652 202.064 mo
+106.451 202.064 106.919 201.293 106.919 200.174 cv
+106.919 199.107 106.442 198.299 105.634 198.299 cv
+104.834 198.299 104.348 199.107 104.348 200.182 cv
+104.338 201.293 104.834 202.064 105.634 202.064 cv
+105.652 202.064 li
+105.652 202.064 li
+cp
f
-1131.67 62.9219 m
-1171.44 62.9219 l
-1171.44 49.3203 l
-1148.3 49.3203 l
-1148.3 37.9414 l
-1170.06 37.9414 l
-1170.06 24.5313 l
-1148.3 24.5313 l
-1148.3 1.01172 l
-1131.67 1.01172 l
-1131.67 62.9219 l
+113.167 197.086 mo
+117.144 197.086 li
+117.144 198.445 li
+114.83 198.445 li
+114.83 199.584 li
+117.006 199.584 li
+117.006 200.926 li
+114.83 200.926 li
+114.83 203.277 li
+113.167 203.277 li
+113.167 197.086 li
f
-1307.14 62.9219 m
-1307.14 39.9609 l
-1327.26 39.9609 l
-1327.26 62.9219 l
-1343.88 62.9219 l
-1343.88 1.01172 l
-1327.26 1.01172 l
-1327.26 25.4414 l
-1307.14 25.4414 l
-1307.14 1.01172 l
-1290.52 1.01172 l
-1290.52 62.9219 l
-1307.14 62.9219 l
+130.714 197.086 mo
+130.714 199.383 li
+132.726 199.383 li
+132.726 197.086 li
+134.388 197.086 li
+134.388 203.277 li
+132.726 203.277 li
+132.726 200.834 li
+130.714 200.834 li
+130.714 203.277 li
+129.052 203.277 li
+129.052 197.086 li
+130.714 197.086 li
f
-1421.34 27.5586 m
-1418.49 38.6602 l
-1417.56 42.1602 1416.37 47.2109 1415.45 50.8789 c
-1415.27 50.8789 l
-1414.36 47.2109 1413.44 42.1602 1412.52 38.6602 c
-1409.85 27.5586 l
-1421.34 27.5586 l
-h
-1407.65 15.3516 m
-1404.16 1.01172 l
-1386.99 1.01172 l
-1404.99 62.9219 l
-1427.03 62.9219 l
-1445.48 1.01172 l
-1427.58 1.01172 l
-1423.63 15.3516 l
-1407.65 15.3516 l
+140.766 201.844 mo
+140.416 203.277 li
+138.699 203.277 li
+140.5 197.086 li
+142.703 197.086 li
+144.549 203.277 li
+142.758 203.277 li
+142.363 201.844 li
+140.766 201.844 li
+142.135 200.623 mo
+141.85 199.512 li
+141.756 199.162 141.637 198.656 141.545 198.291 cv
+141.527 198.291 li
+141.436 198.656 141.344 199.162 141.252 199.512 cv
+140.984 200.623 li
+142.135 200.623 li
+142.135 200.623 li
+cp
f
-1493.74 1.01172 m
-1479.5 62.9219 l
-1497.31 62.9219 l
-1500.89 39.9609 l
-1502 32.7891 1503.1 24.6211 1504.02 18.1914 c
-1504.2 18.1914 l
-1505.21 25.1719 1506.5 32.6094 1507.87 40.2383 c
-1511.83 62.9219 l
-1529.56 62.9219 l
-1533.4 39.1289 l
-1534.51 31.9609 1535.34 25.6211 1536.17 18.6406 c
-1536.35 18.6406 l
-1537.27 25.6211 1538.37 32.8789 1539.48 40.2383 c
-1543.14 62.9219 l
-1559.95 62.9219 l
-1544.71 1.01172 l
-1526.61 1.01172 l
-1522.49 25.25 l
-1521.55 30.6719 1520.74 36.4609 1519.91 43.8086 c
-1519.72 43.8086 l
-1518.71 36.5586 1517.9 30.6719 1516.78 25.25 c
-1512.1 1.01172 l
-1493.74 1.01172 l
+149.375 203.277 mo
+147.951 197.086 li
+149.73 197.086 li
+150.09 199.383 li
+150.201 200.1 150.311 200.916 150.402 201.559 cv
+150.42 201.559 li
+150.521 200.861 150.65 200.117 150.787 199.354 cv
+151.184 197.086 li
+152.957 197.086 li
+153.34 199.465 li
+153.451 200.182 153.535 200.816 153.617 201.514 cv
+153.635 201.514 li
+153.727 200.816 153.838 200.09 153.947 199.354 cv
+154.314 197.086 li
+155.996 197.086 li
+154.471 203.277 li
+152.662 203.277 li
+152.25 200.854 li
+152.154 200.311 152.074 199.732 151.992 198.998 cv
+151.973 198.998 li
+151.871 199.723 151.791 200.311 151.678 200.854 cv
+151.211 203.277 li
+149.375 203.277 li
f
-1628.33 27.5586 m
-1625.46 38.6602 l
-1624.56 42.1602 1623.36 47.2109 1622.44 50.8789 c
-1622.25 50.8789 l
-1621.34 47.2109 1620.42 42.1602 1619.51 38.6602 c
-1616.83 27.5586 l
-1628.33 27.5586 l
-h
-1614.62 15.3516 m
-1611.15 1.01172 l
-1593.96 1.01172 l
-1611.96 62.9219 l
-1634 62.9219 l
-1652.47 1.01172 l
-1634.58 1.01172 l
-1630.6 15.3516 l
-1614.62 15.3516 l
+161.463 201.844 mo
+161.115 203.277 li
+159.396 203.277 li
+161.195 197.086 li
+163.4 197.086 li
+165.248 203.277 li
+163.459 203.277 li
+163.061 201.844 li
+161.463 201.844 li
+162.834 200.623 mo
+162.547 199.512 li
+162.457 199.162 162.336 198.656 162.244 198.291 cv
+162.225 198.291 li
+162.135 198.656 162.043 199.162 161.951 199.512 cv
+161.684 200.623 li
+162.834 200.623 li
+162.834 200.623 li
+cp
f
-1696.51 1.01172 16.6094 61.9102 re
+169.65 203.277 mo
+171.313 203.277 li
+171.313 197.086 li
+169.65 197.086 li
+169.65 203.277 li
+cp
f
-1757.03 37.5703 m
-1760.24 47.1211 1764.2 55.6602 1769.17 63.75 c
-1779.07 64.582 l
-1775.96 55.6602 1773.57 47.1211 1772.19 38.3906 c
-1757.03 37.5703 l
+175.703 199.621 mo
+176.023 198.666 176.42 197.813 176.918 197.004 cv
+177.906 196.92 li
+177.596 197.813 177.357 198.666 177.219 199.539 cv
+175.703 199.621 li
f
-1822.82 1.01172 16.6289 61.9102 re
+182.281 203.277 mo
+183.945 203.277 li
+183.945 197.086 li
+182.281 197.086 li
+182.281 203.277 li
+cp
f
-1987.72 27.5586 m
-1984.87 38.6602 l
-1983.96 42.1602 1982.77 47.2109 1981.83 50.8789 c
-1981.65 50.8789 l
-1980.74 47.2109 1979.81 42.1602 1978.9 38.6602 c
-1976.23 27.5586 l
-1987.72 27.5586 l
-h
-1974.03 15.3516 m
-1970.55 1.01172 l
-1953.38 1.01172 l
-1971.38 62.9219 l
-1993.39 62.9219 l
-2011.86 1.01172 l
-1993.97 1.01172 l
-1990.02 15.3516 l
-1974.03 15.3516 l
+197.402 201.844 mo
+197.055 203.277 li
+195.338 203.277 li
+197.139 197.086 li
+199.34 197.086 li
+201.186 203.277 li
+199.396 203.277 li
+199.002 201.844 li
+197.402 201.844 li
+198.771 200.623 mo
+198.486 199.512 li
+198.396 199.162 198.277 198.656 198.184 198.291 cv
+198.166 198.291 li
+198.074 198.656 197.98 199.162 197.891 199.512 cv
+197.623 200.623 li
+198.771 200.623 li
+198.771 200.623 li
+cp
f
-2060.02 48.9609 m
-2044.23 48.9609 l
-2044.23 62.9219 l
-2092.73 62.9219 l
-2092.73 48.9609 l
-2076.65 48.9609 l
-2076.65 1.01172 l
-2060.02 1.01172 l
-2060.02 48.9609 l
+206.002 198.482 mo
+204.424 198.482 li
+204.424 197.086 li
+209.273 197.086 li
+209.273 198.482 li
+207.666 198.482 li
+207.666 203.277 li
+206.002 203.277 li
+206.002 198.482 li
f
-2261.57 23.2305 m
-2261.3 30.2188 2261.21 38.4805 2261.21 48.1289 c
-2260.92 48.1289 l
-2259 39.9609 2256.43 30.6719 2254.41 23.8789 c
-2248.27 2.30078 l
-2235.3 2.30078 l
-2230.16 23.8789 l
-2228.5 30.4883 2226.66 39.6719 2225.21 48.1289 c
-2225.02 48.1289 l
-2224.66 39.3984 2224.38 30.2188 2224.09 23.2305 c
-2223.08 1.01172 l
-2207.83 1.01172 l
-2211.69 62.9219 l
-2234.03 62.9219 l
-2238.07 46.1992 l
-2239.81 39.3984 2241.65 31.1406 2242.92 23.6094 c
-2243.21 23.6094 l
-2244.95 31.1406 2246.97 39.8594 2248.8 46.3906 c
-2253.5 62.9219 l
-2275.26 62.9219 l
-2278.37 1.01172 l
-2262.32 1.01172 l
-2261.57 23.2305 l
+226.158 201.055 mo
+226.131 200.355 226.121 199.529 226.121 198.564 cv
+226.092 198.564 li
+225.9 199.383 225.643 200.311 225.441 200.99 cv
+224.828 203.148 li
+223.529 203.148 li
+223.016 200.99 li
+222.85 200.33 222.666 199.41 222.521 198.564 cv
+222.502 198.564 li
+222.467 199.438 222.438 200.355 222.41 201.055 cv
+222.309 203.277 li
+220.783 203.277 li
+221.17 197.086 li
+223.402 197.086 li
+223.807 198.758 li
+223.98 199.438 224.166 200.264 224.293 201.018 cv
+224.32 201.018 li
+224.496 200.264 224.697 199.393 224.881 198.738 cv
+225.35 197.086 li
+227.525 197.086 li
+227.838 203.277 li
+226.232 203.277 li
+226.158 201.055 li
f
-2354.65 27.5586 m
-2351.79 38.6602 l
-2350.88 42.1602 2349.69 47.2109 2348.76 50.8789 c
-2348.58 50.8789 l
-2347.67 47.2109 2346.74 42.1602 2345.83 38.6602 c
-2343.16 27.5586 l
-2354.65 27.5586 l
-h
-2340.95 15.3516 m
-2337.46 1.01172 l
-2320.29 1.01172 l
-2338.29 62.9219 l
-2360.33 62.9219 l
-2378.79 1.01172 l
-2360.9 1.01172 l
-2356.93 15.3516 l
-2340.95 15.3516 l
+234.096 201.844 mo
+233.746 203.277 li
+232.029 203.277 li
+233.83 197.086 li
+236.033 197.086 li
+237.879 203.277 li
+236.09 203.277 li
+235.693 201.844 li
+234.096 201.844 li
+235.465 200.623 mo
+235.18 199.512 li
+235.088 199.162 234.969 198.656 234.877 198.291 cv
+234.857 198.291 li
+234.768 198.656 234.674 199.162 234.584 199.512 cv
+234.316 200.623 li
+235.465 200.623 li
+235.465 200.623 li
+cp
f
-2422.81 1.01172 m
-2422.81 62.9219 l
-2442.39 62.9219 l
-2452.21 43.8984 l
-2455.61 37.75 2459.19 29.4805 2461.94 22.2305 c
-2462.23 22.2305 l
-2461.29 30.4102 2460.93 39.0391 2460.93 48.2188 c
-2460.93 62.9219 l
-2476.08 62.9219 l
-2476.08 1.01172 l
-2458.62 1.01172 l
-2448.07 21.5898 l
-2444.67 28.1094 2440.62 36.4609 2437.69 43.8984 c
-2437.33 43.8984 l
-2437.8 35.5508 2437.97 26.2695 2437.97 16.2617 c
-2437.97 1.01172 l
-2422.81 1.01172 l
+242.281 203.277 mo
+242.281 197.086 li
+244.238 197.086 li
+245.221 198.988 li
+245.561 199.604 245.92 200.43 246.193 201.154 cv
+246.223 201.154 li
+246.129 200.338 246.094 199.475 246.094 198.557 cv
+246.094 197.086 li
+247.607 197.086 li
+247.607 203.277 li
+245.861 203.277 li
+244.807 201.219 li
+244.467 200.566 244.063 199.732 243.77 198.988 cv
+243.732 198.988 li
+243.779 199.822 243.797 200.752 243.797 201.752 cv
+243.797 203.277 li
+242.281 203.277 li
f
-2551.7 13.1289 m
-2559.69 13.1289 2564.39 20.8516 2564.39 32.0508 c
-2564.39 42.7109 2559.58 50.7891 2551.52 50.7891 c
-2543.53 50.7891 2538.66 42.7109 2538.66 31.9609 c
-2538.56 20.8516 2543.53 13.1289 2551.52 13.1289 c
-2551.7 13.1289 l
-h
-2550.87 0 m
-2531.68 0 2521.13 14.4102 2521.13 31.6016 c
-2521.13 49.6016 2532.88 63.9297 2551.89 63.9297 c
-2571.8 63.9297 2581.92 49.1406 2581.92 32.6094 c
-2581.92 12.6797 2569.99 0 2550.95 0 c
-2550.87 0 l
+255.088 203.379 mo
+253.168 203.379 252.113 201.938 252.113 200.219 cv
+252.113 198.418 253.289 196.984 255.189 196.984 cv
+257.18 196.984 258.191 198.465 258.191 200.117 cv
+258.191 202.109 257 203.379 255.096 203.379 cv
+255.088 203.379 li
+255.17 202.064 mo
+255.969 202.064 256.439 201.293 256.439 200.174 cv
+256.439 199.107 255.959 198.299 255.152 198.299 cv
+254.354 198.299 253.865 199.107 253.865 200.182 cv
+253.855 201.293 254.354 202.064 255.152 202.064 cv
+255.17 202.064 li
+255.17 202.064 li
+cp
f
-2655.32 27.5586 m
-2652.49 38.6602 l
-2651.56 42.1602 2650.37 47.2109 2649.46 50.8789 c
-2649.27 50.8789 l
-2648.33 47.2109 2647.43 42.1602 2646.5 38.6602 c
-2643.85 27.5586 l
-2655.32 27.5586 l
-h
-2641.65 15.3516 m
-2638.15 1.01172 l
-2620.98 1.01172 l
-2638.98 62.9219 l
-2661.02 62.9219 l
-2679.49 1.01172 l
-2661.57 1.01172 l
-2657.62 15.3516 l
-2641.65 15.3516 l
+264.166 201.844 mo
+263.814 203.277 li
+262.098 203.277 li
+263.898 197.086 li
+266.102 197.086 li
+267.949 203.277 li
+266.158 203.277 li
+265.762 201.844 li
+264.166 201.844 li
+265.533 200.623 mo
+265.25 199.512 li
+265.156 199.162 265.037 198.656 264.945 198.291 cv
+264.928 198.291 li
+264.834 198.656 264.744 199.162 264.65 199.512 cv
+264.385 200.623 li
+265.533 200.623 li
+265.533 200.623 li
+cp
f
-2324.05 77.75 50.1992 8.44922 re
+232.404 195.604 mo
+237.426 195.604 li
+237.426 194.758 li
+232.404 194.758 li
+232.404 195.604 li
+cp
f
-EMC
-Q
-Q
-
-endstream
-endobj
-pagesave restore
+%ADOBeginClientInjection: EndPageContent "AI11EPS"
+userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse
+%ADOEndClientInjection: EndPageContent "AI11EPS"
+grestore
+grestore
+pgrs
%%PageTrailer
+%ADOBeginClientInjection: PageTrailer Start "AI11EPS"
+[/EMC AI11_PDFMark5
[/NamespacePop AI11_PDFMark5
+%ADOEndClientInjection: PageTrailer Start "AI11EPS"
+[
+[/CSA [/0 ]]
+[/CSD [/0 ]]
+] del_res
+Adobe_AGM_Image/pt gx
+Adobe_CoolType_Core/pt get exec
Adobe_AGM_Core/pt gx
+currentdict Adobe_AGM_Utils eq {end} if
%%Trailer
-end
+Adobe_AGM_Image/dt get exec
+Adobe_CoolType_Core/dt get exec
Adobe_AGM_Core/dt get exec
%%EOF
+%AI9_PrintingDataEnd
userdict /AI9_read_buffer 256 string put
userdict begin
/ai9_skip_data
{
mark
{
currentfile AI9_read_buffer { readline } stopped
{
}
{
not
{
exit
} if
(%AI9_PrivateDataEnd) eq
{
exit
} if
} ifelse
} loop
cleartomark
} def
end
userdict /ai9_skip_data get exec
%AI9_PrivateDataBegin
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(R) 16.0
%%AI8_CreatorVersion: 16.0.4
%%For: (Paul Wessel) ()
%%Title: (soest2.eps)
%%CreationDate: 12/26/16 8:34 PM
%%Canvassize: 16383
%AI9_DataStream
%Gb"-6l!c,(XtY0/J9QMh,\2LqWQImO1(Po,S</CLX:QL>G40j.I*_d`*i`I69ap?2T6kp-DZVPXCrqhkad/JmDmk+`YP%&TB'\o^
%Un[%9MPMSA<D.()5*8TYf2$-e^H,LbO_(JiAhDQ]=m],Qjl`\qllC:R0=>],fP7cSh5+ZPT5$0-:jn*He`:kTd:iJ/\_3pqHm[9q
%*W<6 at Dq$8=c<%E?Pa/>'KsL9Zq,;4E*r^OMf/cPr_ih9,I3]r]])W5Siccs!5ONnba_ at m/K3glsP0fQT:UesPia'YG(CncO%a.FD
%asW+R:p5+_]dM<49$0^SX%Ta0i"t'EA3a8>8rBW!<l"SV^'K8g06;J<H`qX?SSG at bC>R8l$p(Na=1.XVh1Ygi/L>,P$@R(uqeA'i
%]c&%NO>X(+3sL-phcW[H)6"pOq#A"0,]ubTc^[k2rDg'"CFQf"X1m.GPh:[bn$N'Y5Wr9!,`-uu-RV-<>3EP$mm58jIk44ZK at Xh?
%_2?>2Pt(G;oj0t"nP<?IXP.s'omgg]N??)c.;A>g?o7VYs3u!-AD4gr]@K)[?'&AFl>f(Vc^RHe'1cu>C/QblGg/e%^ll?!g%hFo
%&I\a"d#f-*JKp19p%NcRM=iJ#\CIRn3a at hLOs^,Mh9VP,Ihr'Fp(L9jokI4PDrAq#J\Z,#p>D/nE:s;@gT8tW?F"#e/L+sr=#PU=
%R\ac&$Dk$Z))*1_-TD(ie[gUE"TMF957I]Z/IOe$7:*!opfCJcWN+rV<M`JA'muLbAJeOm0^tE;?nK:3>)#nRE0urFFY!pd=RZjY
%[OeLk=]c'Hi@!2+(9poFLi4&epnV$13gC%9X],]2hl]rJH)3jbTfo:OV>[)>d\ljeJ$,f.1k&mc`!JZ5(?37eV9]\tr5:XP&Ukq\
%S.bI"`!JZu(Li&i#`6ud6:Qq''Cj)W=Gf(HS!9AKIB8-Ii@!3U<3V=B&,)OAQr9&E#s[[D'Q_uTg3;70g,eqtNtJQ]s'[Lt%mLX=
%*C5Q?I7?^8s'dRuO,kuk$@N`\_b^2af[960:YKk at _,%.dpu*S at 7EQp@Y-`UnOn/SHSF[751YP&cFf\$r`p#fEVnL-Bdsf\f.:bVK
%Zj-PcFV$X[R>;lt9sLQk&O633>*Qc65=uUc/q.7M`%I27SBYW#;NA1N\XW1Ek7u9ZfQ51aPS^i7n1gb]VnJj)VsRBn at F+b*E85-a
%Ynh8K6Ds;$kO]k`3L*:\c#h/YD((&Eq+(84O`pRr,0ct7OXs6TL\E6AF1ukn&)VPTLeG<8b+-W"3+.e,-1Pi-)SE8d^V!hZQbEcP
%Oo3,3<%H,XT;'[[c<pDYB.j,Fr2'E+BjIV_c<pE$T;TGp^\".4dbgqDgG[a"6 at h=?rmH:cS+O2]Qi9XR9-md$r2'G9Abt0W9E.TW
%5H<%Lm-p4!/,d_BdD(4(U(oQ!;GuFS_(8^aZDm)S?;N,O+^o(VW^nGd:b$cWLSsq&e1)d#`4+tMUc-#Mnk`8_2/-p@!72)JQ^+OP
%QTt`.8gOet+TEs$>?Jqq$>--1Q(U'<+)9hW%Md_N=9Ya'8u-#+l`_Et:"I$e_pBkJHpSuaX4VcD_o0$L4NEf?i4X\jOqq$\"$WQ`
%@k1@[0FNCiI1*<qVl[U`cO``U<e)+R-FRE!:)f"u;PAM<-/&Q4QS6fO,Mn*B)YO=X.g/>UN)YND"&-*(Q4TG9B*6k?;M(*$kZkp3
%!E]M0VQ^VUOJS,7E4TE`N20'qEsh-,h_Mj&E3ND'eqb3X9d. at E,5*#HJEKAf%6uTa"R(b[dPC`<8<dkZ#1t0RT^\'N'%SAh)#R_b
%*VM>T^H_V(6XfEsU^i>B&/;YfC0;9<0r'8 at 7ZKp]PmWNRXi3epaopfAqJDV7[YtY!@AL>k^:"IpUB]gWpf9^b+Irj?s'JB>^F+%#
%JnBm;'7%ml0>8H5KE!6mXQ+5nQ\[i!D3GPhkifm.QVdg?%T=7k>I4O/e3Za$)HK.NP^OMC0 at brCNcISM%%=1ml(UtY,uqGMX7&9"
%`$530)/^E0ebqI';_BHOaeH.NOq at -7)%@R(Ylq&KqbFC>gnRer=XiGir'ocX7h!-uNsqhd?E2 at 4#3\>JN(YRio`0RN)Q:HZ-0S<n
%BQp3BE,8?@O\mSPO4p&-J8\@iaqec"8#ih;.8;5X%B:La:"5.;!e\?ib>dL:9Un`]hG>[p83ts.e=GZ;U)W at PL6r'Jnhr'cWo4@\
%[0i<V$BG+.cYGr;64''\LrLe%m=%f<jib:VYp%iX7,$'ITd;Hu+jJO]CRNDZoPMbHc?foaCOplRg.6Lr*>!-Me*oD]6(jJ\D2#NR
%l42N/EXP\`7j1[k/fY,_!J.`%qID=>b3ZU_Gnk-#PE2b2U_<Q*WA'2KigAI9$6;4_nc6fHh,!QjUt6nYO-:?@$OIVOWe#Cn?I]@+
%dWr&`C3#7="ZI;f98rF&6Ga<Z'Hth:hs"K'B-V7e;L9)CdJ8U8XOsi[TuA?o7Ak;FD2Ur<8M)jkT$I!F8eSNoOLg*8b=&csg">QA
%*haJi"'&bdZtUdhH\BP2N(Tpq._>D;ba:"e&S6rA2RF_c?7?ND+?5It1=I)Y:?<0h%4_AjZY`P`82#jZAk]K<-FQ:8:qS*liBaIK
%\:!6s$J."DedI]7JnPChV]8:%^PJ+/D5n:T4BM*K)XfJB-@[t5H;'sc<ZT^MmM]%WS<4qBa]$@lj]bb&=6c$m16F#g$)l*S at Ch`N
%PJ]0NgF.!]QZUG#<B2Bc[WGbJNSBt:r=Ttmn4D at Ij]+aWB/GNdYK!P.X_Bh:W0nXK3/U2Bh]g#]W@$9(ESkAX)9k<`$(ZuZCGWLQ
%&7:*";PLl6nf$%Fi1QA=l^7156G*b*<bD9LGus%[J\n;a+VjdrLNHV=r':39pl at tSU/A%KZ[jn7)+CE8e7!T=n at r9n+7/ISD0*=?
%8gk]s^m[o`AP48p<bK(`]cQIdYhp2YD9e,noE9J(1tKCR2L*uT)cW%O7A[NY-KdM1TK31t,`1f,10_O-&eUioY?'e7.b2L3Qh\db
%s%[I:4`3XN\P1ud"m2d#WB[-0efp,<eKiqY6ENdoCFZ.iPu^n*737=qCr)7Ld7;E;JhXB5LjsA^!..&7%W;<ohpbE/@lYea6[TYY
%3uB5h62Jk+j$!qJ:$n5Rd:*!GH)@@IoqJH[Y;'gUC*jjYTJeKt)pq[@?_J&[C-MgH<?-o=Bhl'=_%^KenrH-`<iJ^KAW[Q+Kj)$u
%9'n^E*A"S?\IF:q;(.[l'f(88as"\1Q#DSH+?\5YMUQ?o8*Pt\_.OT<U)!j=f+<7Z`.\Q:r^Js\XZDgg8NZ"DBkl-r_.WI8`9,O#
%Kqh\JcmXo^5?;I4&IO:hG`_P;+]=4g[I#dHDLqEslVVKg2hd&4TJ4$X*JC\nK#PD)N]GO at Nu^FGfMELnh^3MbL"^9fJb#hMcP8n[
%hE$'S]K)P9j%'cq+E.F:L:otlKP)l8j.fNrE@/W55lE;Z[Bq">]1$F"a'9ciOh%&dm1aJ"k*1n5*u$p+.HNbiSbIo^3U0R=>tT=;
%in0+qHP?9GqG)9p at u_2EEMQi)n`RR(in]:5aCg`QG[E0\8Gj.n"\]O>K\!-(o23P+'!81,+3C+Y:\7#bInZqNi#FpEPcO>b86=La
%W`*$Go/*=1Z/H<fpfA;RphmU^S9m,L3L*.pd?la+a[a1 at 1SLAYHO=Uo9SNupH`\t0Lg*+=/rkTaU0(76V5$e\(,k:jeK:;CkW%RC
%qO]b4e7N1dh-b4',(EQmQ&6gNp8D3TW)H?Q`btZDS_N9H)PnPF3c[FC<([8"j00O6Mr at t#HAtgs5[mF:Wc?bTj%(UjH&PYBTbaQ=
%1Zh;`auB'QLdYC9;H.j\Br9ZX3JVAh4r\J>8UJ6C#2=1nJO?60#R.k$ST6.(@8s^W%7hmWE1D06Z$00Zd[>oO!7q=#g_CHm+=e=g
%rjK27I,#<PNY<LYe35/7:2h>I1U/1g'Ce)j'sS5h)t%?32!PSr948MOA.FUYK)2#&@6/InHE9;Y6K0H,bi4+d05+%CqtGIJTm\/J
%C7WKbc5s>>Kh9&.=jYY8A2`bKpJ4h5$G;Gl45s?rfl%d)2+c<CmNG^F69C(WMtij'2Td;aR*\3qo/G2`=OWrKZ*)`/oK.Ujg1G8t
%-V8VZha0HQG,*cC7fIXN38HPn:(,Q'Zkf>R>LO_GK0f=%lNPG+e.O*+WnI)LTg1/<l@&7aM9;N%;7!d7iReoF6C!H**ICO*&s)?P
%%[;S$$g]mEfd[_S9h at c;lP/!/SmZ3anj6hPe4/SHJBe7!QfoWfkIDX"RS#,kJtkunL3=!NJ^b=-ZN/T,<0q#-QGOiS*Na2*L^B[e
%kpc^l<3W;-jU5r.U;W8+RIDr%Jb^9[.7<J*S^$A_`f?(T^Ia(oB4.UoM2bW2Zm</CSl0tdc:;,dcufGjBi'ENWN$=a*M8+[2,i].
%+9J*1(8DX!?_dV/kUaM'06,48(!5SZK<AaB<Y*`Qm#;@3dh!Q#]gA^ABgV]&i-#Nu"Y"Y94,I`T(2YcT#E*]!,6:StFNoDt5*%cb
%[^?31(G&X"d1O#?(&6!K at j)?==IX%X%Y`3V!o=-IEpWQ`;Q)Pfi#-MuT,E%Ma/CGZs-R&Q\-pil>ZR7-CXVaMSd!^[e4u_q)%IBB
%%XaS<1CUBOI3RCF;Mc</V at cPJ.@b,VbE6Zl0ab7 at l$J;G9:aIRX?D>k#d)`o&K,BH+jb4!$<'\ga[V8KG+<D2;qo3_?3,II at IjYX
%bq044ZH&r_s+8Lk1F_pS3/-Db!%!k%A:]fO5rk"OQp_%GNf<"Ga"T8KSQS+/Ih2t+*W8GKBgXD-gV. at CdBsuMiku'k/k%3@=FA&S
%heKCgLC3dl*S`ZQ!hMG^$L\9b#[4+\eoO=:JO42dS4cD6FNVuX=m[u4:+9:m7\H%Oomk,D"H2PdC7S9&7q$>Ap)G`WbeTL, at TI<G
%S*lRblNJV>h_Eg\!Ck4(I'nPo%SRLh,uF0V&'`#Hq,4ppb6UOUS\.Ai;@aI2N'DOOJ\G1Vbi3(hWPnr$07QbKjj<K9krY-mM2]iN
%Zt8OmdPC>u?7TAl1U2hg++5)Xn\7g0WFL^siH#*19HiB,H0.]P31!`qbC7d5:JB$,%A at 0`auAbs_W3khbK9lSL"RcPK.!g8dd\pA
%A*Kj604U;[$/al^OL?U(.]4^7ZSECKk34lNJJ`GZpkWq&M:G^K.$l<%,E at T92]Cuo7[TOj*fq8m&g=g#Z14\PKZ#\nei'@Z"-5b\
%7\)dV3L*aF-&r:si,lO*MOSPK[pnY2pI9B&[bTn<X3l6kcg:,]a_ at mOe#*##am[9f(=]KGES#-gO?>6>NuL=QBWKVYC%!n9>)>r3
%[Imct?IW;-X\ShEC9PaSkMPc=2OP_8e<=O9l3dTBhfbQ,[GIJa"]oD;41->^#]Glur,;5^V:o.SoB!V[9?YSpC5l7u!,Ip#S$0rW
%C8W']qRBC><]`lNDF<9arrl2u5UcrH;\fIKXj_+hEQBZ+MPl#e$GrPT%97`saj!;Wq:`5be"?&ge$<Y3V_>PQ]T_.;r,b/dB<>4P
%#4$_K6YFB6'^Pd3ZuJcGBHB#[JbiS['tc+53kbR'<hOVT$h3XM)1&RAB[kp$eb2N3`NK<7kB9MjfcZ7Hce!6=;=Aror$7LH=$++l
%9;?\,:UaF&MESJknnT81>_!ZHeiE\1[J06s?[qKC47udUo\fe_eXNbXqkl[O?HjWil`6#U9?GYDC:cs^k^?E$bu5RSrWoN2<:5[&
%iEG-5:GA!0pJ7R8:#u#:Xa`4MO5s1_Esi>aqU=ZacR*^geZW.s+d"jgJ$jiRXGW6)8k:M(jV,A!,^=(I?@o*)8BIo^i5[Htq$fdm
%9$1'&+F/;e-"!A at l6Lou0NYH7*7_F>M. at +MKtjF=J<JBr80j7sN>d`Zl,E16+t/!Kqp\@4V)9:.,R2AY![rOG]QmHVj*9&@..>J)
%_lsYW&o$5n#?"utnWkKtLrogOq0uL$!:gg.!,$`AR9A#ZH-Gg9^_6FCrdkidG5`Z"V<"@'8]faZXkGaP!Al3G9lQKEoQX8L<:NJT
%d;!eVWm,ka"'R#DB7]U$O5PI88Q1oGOc\ks+$H. at CW0JP;?"1/iuk!.44)*22_OCOqK'>In,7=]X.fTWQ at TX2GtV)q[sZbAMd8gQ
%VD\^1buV%"q@[3RR,NaLikY%.@,B>l&TGMY2B_rPj,W9#m=7t.qm?(FC;(2O:8Qh37PmJ7,C#T-?F/#sD/a>G6]S;IIc&N7o5_L;
%71anml]jH[TTG>)G4jB'LJ=.#PF8UhpQHB7]VsS&ofTX^0OM-B.?(F5m<Y'6l)`sBe`bACAXKH?P(fN7.sY$HR2+NY%n'ARaZ#Z<
%#SUJ/Vq7k+CWToMDf=A22*k0M5&9!Rb(`a'$Hah)SZhn>PEW1T:OP-*0:r5(q+bSeOK.tk$WC2lcY,ESO2k2P9"&/+mNfF;YFc#e
%95O/3.U`dj3hBR+c>2tS1K!CX7<f<+:p\m\0<"^;&+lk#$ICa9F[]6Q5ZgS]HM/#]l?fF0CW<I1WA2sYFC!FLCW\sK,-)%kLobB9
%5W2S?[;4J&dFIAdeaBD2-eUA+a.6DCecEhV$lFqjAlU>XZuSVoZ;O^*bN?/:1Yd=4o3'_Fr%o<3q?=q]$me%'n#`e94lO*),qaV[
%oo at ba3:h$$H>),,oqb]&^,Ke([8A`)/";+g^_C:o\HJ+E[J<]>:m%IB"Nh#H#ApQ at QX6\O#X+.rgPga#>pj.pkG43N8//>/VOMi_
%Ci7pHQr@#U7R!pAVTn^p<F]tPWTW7L`DGWgc6?^a?ZjgQjcHL30(B at L(o*j.c.1,GPht9.29mM!gl$>F&c<SK;%828'chj,K"JRQ
%!NB+@]8#\3<k$qcBE,>K$madnJ``Z'UdK)]?qtKYmF;!5enLn9h$nkmV,;/`@RTDFDbuD]+FsA!8[;?kl]hsJL_p(8iOS#j[Gf2Q
%k4YJA>6"Cj3l`24P6V`qdX&$8NC`]?D;(1-@^9Hq-OR;K7)tCMY<<l(c4=[J`cGX?BFLRl51$GkNdc:kR$,AE&WlDGgjZ[,re&&/
%j&VYqlFEsJrBiimf/3T8jmTBB'-8e.>+PN]:QHG3\O*2mV7$:ZLbZ[]C;##E)m::-Vk!)K;uGk4*1rX:Fs$aaG.Pl66mu+7X(nsr
%.IRJjCYE%/HI?s7qHljcAuf'm6'ql/P,LC9.Doq]M(se)la]bA=ZH\(^`4J$<61j)'5NYCpd_-5*(l&ipt)QSqT!%BaAMon,j7mN
%`>3TtqJYM07.5gLIe<*ZA:KUMQb$1er%[18+r6Lcs0u=(U362Pe!9qd887hc?iRsKn\838\rHR0s)q[aS+o9?5*Gsin[(i71sRND
%^[ppEaEY"^RPug9hZr-:_*#)<$pOl%mb`h%hOk)W7c<sCqJ5OE%U,sn^ONW33J\8Lr=]F2J,\ifkkQVprf3g8s!)-)U at M&`5Fn,Z
%3PY.B54uerp$_=c=05PP"\WOYITRigA!4#.`*k$eZ5CZuF#48q>.$VI8H#m"7rmtLA#EO=!HY\Km'p?s]O`A[VJ1:MZGN?*]+_#e
%\)""^F&;8.[@n!6Ss9*S6UK#;%_rfS=PK.)'Gl*lC5oRN$#PmuiOIF?g[Sd-GJfN-fIt@<Z/o7;7,uSnfLr::>'m(K'rdSE*O^9s
%`rY]a+V:Lr$The50DBc,Y(bh$;umf0lnp"B[R]6j0rS/a6+mq5:sWA=Lb44L"tbG;C7X%9C3aHGKiXnp[2e#0QeW:MK!M<>OXE%)
%9dMf&5!Fs%-EJ1Q-OMRLTkN7Q9"D"uPD[qJ7k4cs307o%Rk6#7S#eP?+;[&,MgIF-3[E!2'2\+ at lT*_&^=PErk. at NiIFYRXC82AI
%X8?%<56He8DUm[Ieu8Zsh&:I?'41:,eS*V$m$W;[iiUNC!!g;q^Z%44D"/#B^"[kQI8rk7DCe+)5-;MGAH>h+=R5O[_ZT`g?iPf+
%:T2q2I;o%n2Hkg]#jGJ:rHB^K^/hhY7eW*6,]p?H#mZNpZ22bY($D.]lPD[$1h1a0r>HV7%I2Sap^spim]^HBX^`C&3iur=2uWCP
%M`bn]ee6dNfaOl\a1]pS#.S77CA(hIfg<0Tn<tAqGs!oFZn?J2)9m`a5juB5TDqKK3acrL_?U+81e%B!hp@::C;H0'U4n,4$*/e(
%^c^0DV%%4&SJC+0lF#3F^Ggk;)h*+KeiM.$#S2PY.^n4!hBd)i2:d2YpV*ZpfQtt'*;rtu3a%]fn/<s^-4G;5GQ*9RJi2qPlPWL0
%B,miEf'^1_>FdgHNo.TXkH4L`;u0"bo082i")>63h&"'=Ut,3U..a])/5RokJ[N)!:P$E at XS5dUNnp%Fj5lnpH%XUlBmM_PH0b+f
%%<:E*!.HUsNG:PD%]iu-hqRU,T36,>Sf>'k]o0;0\0EjHkE>+0:HO.?k8dt+?G1!0;HD1n[2i9O'othT>8R*Z*,pg(m\SBI7oVb^
%X:@]h7(&&Zdl=@)h#6kMm;t_8dD5g)TJ4'tW8&%_MQ/2N0h,PfEX.90)_ihsh2"p0k_>]D]et/if1*9mUNP:][oP:YhdNq\cSLnX
%eSgDXJEU at J7`[!$Zd3bN0ghuuC[Y9Di=Dl?IKJ/[h/KO5H8+/3_dPE5KN>MTf_CMW2r";H9/^N.<5M88*c<fK6JjnV!)H%-Xh:9t
%s1=hED,*qS^IFntVrQG<6?\moeU7,B%&h3Y6"^_.++H<DkRQ,3RP:jt2MiAPX"JTTTOOu#&u&AsKl4tfP7"KXTq6Uek(VF)bm\R?
%]$YR%WV,u6HjSaE>)1'*32]/<%-3soZcVqnqn'qF<g7A"5+/0-1?[?>D"=n*S1M+aFa[!@APOn>NpgSDIjkuT)7juG9Km4Wq=&$]
%1)>lE(eR`.mctIqJH'_,V:Ng:rq(?0$iEH0R209^]!E.;\Gg]SEEqhBeU/j<<r]0?J.kt%2eiN*mqrA(qR2DBX54lNI8rI7s4XXI
%6$-s3US4ck:A#>2;j%bcGG^)]7ADO'@seQGhs_qtNS+,k]-S@$)RLsi<fFK>+RW=C4\iSZOr`u_`\O(^.<i'-[RcU,YSI-gOi)4E
%"QL_\e)JZ5WL%A at oE]Sg9n1=3Y?sETUtkmair&XC:W770[dn3*[3,=P^QAcElM=Y%Zh.jHI;ViPXB%u4de0(-<1.)V0g8LAlLnt-
%0fO0:8>kV%5$(XgLGr7KiM-mDT&-cPq4FM4eAB%%.CCQE-rOsU3^]@f;oREs>$'r05j(b3gA94GR_!45VK$*nh5i.k<Ef2k<I/eZ
%9&#E7 at NsXmXK=Z&(>=PU)gbV0c.lX9bZ7n+g-rPnG9`Aj.bA<ue\^U04BKT_=Y&de@&O+F-utl=Q<LeCfL[Z`Me6`'-$tMOR93Kb
%/Ngc4WS.,\,;n61X<VJd,&5iK$%CW^Nnb?T)Jdpte8GSc7%0du:#4-[PaSq9P,D29f/:%%ouZS+ppnq:?Dju"*0'o7VmG0lkhJ&>
%4Xm;";PH3oJiD.[lGg#$#$Q;CQ3ejtS8mlM([!]^lG!'M^UBDrFp<OTWjPSsRmE#tFRC58:-FSW>g0>#-iJCp/bq=$@,)_,27bs(
%Gg>.?2nG0`m7ptm+%%Qm\Gf[&=^*B4meSe%^\jh.">jje:0u]qlCLJM("01,I3V`MN?d=M-RumUWM[7Sm+818H$e3SCiik.Y003_
%I;m`>?_sm,cF#m6Q1&djGkR)+WjV]CFQR at q20qA@6Q.8QYYeC^(V(().'VcRffc at ESbpjS0fD)IcUup)f#sX<qD[-bhG'e/brUh&
%LXPa(:no\7#?/A-DtL7r2u.=g*&rp)dS at .)anB<mW6t!TV((<s2lb,/cS%6&%t,CfW)WFXg=*,_WdDK=!ua$De%2N^#;gc*-rjG`
%B254PMpUhAeEZ[TmGm!2dB-d<73JJVMlA6He+2=-`?d>SZ\`dJAn.Nmc-H"@])DEC,rOTR2S-YEGg@;A?HdXJc0O'LNRK<FR#((Q
%VR6Br/+;BZcGYdSJ,NjQ2L<lOD$Mtf8FL-)gC+"jC:Ef_l2LF<J"qAU_g\GfT(6ajCo>#-1^`:&DYE_<3-u!IZm8pJ&!h^?qhpYN
%YE*bJIZ8r6\Th6D#3'rkWBI\B)Ej07(Y:SJ)D09BDO?t=Bf(tGid.qMp(5m?mtnCLc%&:P%-bM&2"0$EnCY\<H2Ve5ICS3.i.m)g
%a1t/K[Iqaj:nn9D;gH,G)FY_=b3HN"ERjroj4 at tBF1=3O)LYY!4[LrCc';;_BQ^&YjYVkG`CamEo:m'ICj)MUdA,79pI"ak!ubJ4
%G\<JAf(B)[o[B9#1n&m*STlB=-IU'![CkO#&1:BOn9,0Y?0kXHLPpPW.JCF8/XLs"Bqt!^nq,==ki>uMs-S)&B3Ilt=t8sN<FK`n
%eNCL`7W\Nf)X3+/lg8P&F>r;q1o5"0I?6p<>aBhM4h1K/Xd21cU[.+?qsLF'B`.b&7A`"XqrtU=5#lo9.:oLSm!3?laNDhN8q$YQ
%qnK8XK$^U`[@jE<@"s;[^f+]JPZNmfoQf?$I'Y<iDl="gg99FQetr>/FY2fk6/$hE1W\$5g?3`Y3_3PF6#W*dUR.O8TVmk!C%8Om
%H0X$9[gUXK`FLIVmG"^a[W.B8HE'X$WUHqge!6.#o(&!eZfh:UC0S8/:T`'CDF)1<]@+[qid/u#IHbdp.WC:<5<kAbNH-c;m:5Bm
%14LD<oXAplFYi3+l;6h"0AZYW>6oKNcB96oQdqb,)q(MOBE^MHli8Zk\NN+6Gr6gN:Wbu=e)s;JF8DRCo^l,>q_bVt8?nMII/'\j
%"5\KtQ*5]+:&@0*+.?ic/%qDpMCIBAeBI83Z)KM:a^hhc1>OOXZJ-=6oVkp`.D82c7GIe.s&>K$!tDT2]`/=bIQtTQr,j2G/M>>>
%0TQ`$g0-T0H8`Okl5ijj[C4da$a*Y.Y-uHZV8kS@>-QIYQdZnahFt1p[[t5\c=Q7;]TRt(WD_Nq^(cKp\\395mBk,EHV-6$2_&Z?
%BR*LH+kHGV(NjrIgPoE-DrqPRjp_$H=$OXZ!Tj0d at f*6j\bbU_/4e\e)4[7oA!aLh9IM]ta,Aa+3BD-(qq*H<<<&=YYG>A$NG@'H
%_2V2h??;]- at 2?2=Pq$F9^B,;W_t^0Z:^q13.AY at n7E[RW^J7R#3fS<o9ClH$;:X3q\ZK.cln at s"[i-mi:1V:4[F;*Cg1e"eo- at rN
%)^X8TcmX.&i&TTg2l^0@&hcgmej\LM-*U8+3s7I!T#7VX.,a*"[MIYsH2-\T\5BV'!m-p&UIF_jK^5hU;4Urq@*OmRN6dj-l_0&A
%24%f=eF*%jeXJ_!oh\j(Rt'=77u1EE>PS:aIHIuZ\A*?q8aJ[A>W?:8M;OC2cK,6,j-GZ4ZRK"0W%H0 at dsMfpS-Ygu[H$KeFq8Hc
%dg]//@Iq*W3__eW3%s+%(i/'NmS=-P`sSfagY6"H_5=@+A,&'TAfoR(P%3R"@WYHB[Nq4.]3@*%_[mTp]N.e6O+i3%V%0p/\N4mf
%!"LQk#Un,L1\X`sV1Fih&$Y-+ZkM:F]1P>T(<R$WK@*U5!eZO-8r<N\KBVBKiCA99?i5p_%Xqrkm).3L3"]F=TCE"&q]KYO*e2O0
%@\'D<OXKcmRE?T3 at E/mgI2'T\q#Q<ebRDZ&*`.$5,`LRXR=4D4*R7dt?VsQ.jt,akT"'eHq/Eq*]FU6f at aitmZRkq"SW-9!Z.u?,
%gZh^#f*cFs"#fiQ5*6ms1s1WoQ2neiZ:jl7:(sc=P03*E?=87b7mOPI%n8VnFS2>5q<l*EQ(m:3QV-Q<pn5&Jn*S.\/Wo`Lk<a$*
%1)r1J;*3&uYI/"EgAWqc3rVaIK;KjuX(dHV5I3S=V-<Wb1*!!@mq?ukLWg?R+&m_RhqFRnf]jZA_*F9+iulQUn15$Ye9^:<`]H(+
%;uaiRfQ/t_=<K##7WutGh!UB<BB;2Zc@/[SZMC1Y'b!CqKT,$QcOAHP#7It8nm.Q6b12Ais0G94R8b)U%iA.@@%F2]m!ddkr7j?[
%"_qI%6b5ZJ$__5)JN]4RMV6_a,`dEM=^fV>;Mr#?7/QBkP#&Ct50&AX*cVqtXKK-#'9fWEkdD>!dG=A,<?d^rM(//n^2D'CWL<,j
%ersTLaF4Mt81Z8+7BG&&9R)oN'8K=3RlAp$J#@*u0$'i0GA/gCY&jk$`oI0mr1"*O/1)TXIW5K89Y(8E&+s&tnU*I7UtY:kKc_]u
%/cu2s:FOWh'!u3lYd^%hX0GMQ_QFg\ag\+jc.FH,d:e/1N((1"*2^4=m;ZBrc)ZUb-02Io*SZrr96Y=3\(q^GQpL%&6#YfKb]]p+
%'+Jbb>6,<3S/@GhDW;YXhB7jLCqrTUD^WuueFMJq8CWK>q\%<+H-F8<,6[$>W"oRSVFP!s`T]o;:040s5\*B(p$M$A)4;h&@S]%J
%8GE"99Af_I<,\lX1>DVML1El>GtB:&9c1t.hM%M at _V*;.h`IJ7Woa!b\:PVO)s4lh9F[^[Jct0/NlUL*H[LsHEcn??)-6jKGMVnJ
%gs1-Y!7C_ZGN(-'E;Y%R1Of*"/cubMb#7a"XOa[7^RK#j1Sp[*\,!Wk#5l%SMITl1Mff7!jP]QEh0fM`6R"Z1YsLn7O&uMl`fp:V
%25#c;LufEA/=XU`,6#"9(@_AP/Mao5:+]16`/0S/`Y-"/6i=UrOK>ZVZ(KES)CUCK"@S#UECO8tB1<;nI-ms"(M<u(W$UF+37KDC
%>8eg#6"PN^>.J=+N0&6Y'k4E+;**;_mJaUQHL//&356SEoYFuZ!V)Ua:V8$AP:-;R%;o*jIHe9)0r<Fno5r,BI(i**e<oYGKD+.e
%0f*%O\=%+1>Rh8GH7e*KBlK,,K5@\!$Z<tgK\LkABlH%W=[-8a*JMfG-b&i_dpL=4[)hE'^JaKF:I$=j%d.pmmq>'<!.i2aqW>C5
%'EF661XTWtfZrH+W at kuP7I%B1\qkV;>N+/7cVuh*/PjXt9<mug#\BF-BUf7*$]HQ?SIW1o+_%j%r$AEj`L60]i`-9.Njjbc98n*G
%!"0UW=?7=R7NOE&O/"V&nNcVOj,8XJ2c+F?f>Iucq6=<RfJ"Pd=cCat7#[Op!6^BVM726PD4bEQqd%@FZ]S<+*"<"c4FYo/dgc#o
%[HJ9BNA$BXYL?+6Ff9u:!"ICji4A-Y*fUA89/4Z#8R*-iYU$Bs8(M?5/mq]iAAO%81]ZX4dHHUH6!'-JfK^A"hbq>$ZoYMZj$N\!
%(hCC2pHp'a7DanV6c,OYrQ36&e44V!Ee-tKHK)(&<R+$]OY*1+Rh&^9 at S;LOO`P=Q=6tN6E*QAhkF(pZl at Q<$!tf1l<=p;>"Kjo.
%[*5[**$rekb+TVl!Ec^l9uL&<(NFX`po,-8p:%3ZiSJYb;jrZ6HW*k9L5CQsB\E\XER0n.S5Ha\:aib>*P1e_#q,/\UP/(=jomYJ
%XP0'MKh1Y at 9Y=U$hV#+oYogl]M=@O%a*2Yd%f?5XGh7OaNQ7V"!Ec:Kml)$e`*a20OS6 at IVXfC(N`iGEEA3\]%,d(.qiD5BK9:?h
%Okp3GlGUATd;\0^fe at e+o[,A``8]^]@E;]`Pek&ahUuis1S>NrYR.N>*P(QWIm7E6Pd:fD:^J^bK&'9jb(Pg@#-GUjZS82OgE5T+
%^]p+m^jZmK%ZMrkkup$bN:;s'`!rd,=C/qN1At6L"cr+%1isbNSM$j6!_9c[QI4^RkG0Pr=4`A%C!!]&,#16\cq1hZS!M!`CS8^q
%p9&]2hn8gT#,2>8/ls%TXdG+;NT+iC6;W!L\.#`jK>8[u3.?NKft<oD*lQ"dmQhOHq3o7TiW9K!p?/U9k$+_uOXD>37ZoA-LP<FY
%`Q#k1!trT4"-8A>4Sl?>)Zu6T[s%DKe[VPAQ6osgaq\],j.UM%G$H at 3FG]X7Ep2XQ1['LNTojBZ`(a50)0Fje!Me`&KkJamfn-!\
%cj>^.AC(WELI]L\$dYIZZNWk at TaT2>$cs/(.#0E;K20W+*$p at m4G1qM/NA+f?$HPoS]+(ETaT2>6V\[m%UF;`*Q;To*'3hKjH-`-
%4"e<MhkKJKi!c^U(gW"2l%Ml$D;7<gKcB2s(I?.^aWGgbltsj]r at 0$[HB2\Cg.NL"`ckX-LR<gh'@/3#B%chF1ip34 at 7b^;qsjU8
%pd0L"mDB:Hc^Q^',BGIqIbr/r#Xj.N:D9R1MO!uS'tF\9;VQ%9&"5=6J?F/GA+nB-d6m-q;(m;I#k]`XC^)>LZ8O(68d)\ej&LW`
%h4t95hd&1'a_l`K"nD-W1"gF%LiGXGV//7I.4X"&r`5+GD$bmcfaKX#)hOS"2a]+@(9FoVV<'ET8>nKlo.ci^H<,Kh+saFW9WJhf
%'@?p at RptZH`tt&Y3)JNA at us;RUt6>.#md'3",CRS0"AeE>=b'cH[!L9WG01)RuimN.hBkj7@=ekjRGD2%$Y`EP/lak]R9>Gk/<om
%E,&Q.0F>a78k86!h[8*?Iro-iQ6XD1jmbe,JWHGDkIX)db]t9QO3\KUN+*!s,9dt,7"S.gIM![t,'_@[?mHsm#oEeInERt('T5Ms
%)2r%i.)=Vh?[BA\CSMQbIYu4<M.OkJHXjeg)+0Fga30eWd1u`_E*T--4X/^&Uiq4Ep2fqTp;+afp3Q$:q&bXali;!;%/&2L#7'2h
%Yh#(eN^e#8YP(Kld3L2=/ms>8$[0.#AL,2'$d?$M'j%m28!5*?Hm'mr*gJ&'2n]As/r5VO6)\_jW8"umgWH-;FhCk^pYGS8+3B3V
%/%6N:^r\9Q%MZ@='s,-*"M"f?':]Zrh*Em)4na4M:uWKm:W/E at TMoZHp"P8_nC[3#_888WR:GYb*+/fN?Q#%2U,1h7?*[6/p$L6o
%&Xe_5iJr`an5EFW`]g^Z?De!caEY?CGPlZmkDdPj9%#+")2H8HG"7S6W)H?W.6g$le1`W5L>BZj14fH(fC$]l)*gp>"Rkc7T8"+;
%+qo-k&kPG02'RZEBW<F)FbkjtDN'BF,$o_)E'u$REXoQeO?*K?kCi8daE`_USmrLtLDn?<h@&*]0h>(!d]\Hm%.k#*p0=T_kP5so
%UG:%'gN.P`#4:Z7L"^?Jrl"T!5DS[Ggq"&^5)*8X at Uoj9k1)mNfgLe3\iBM\Tn5om+%*n_EAiUYe-QJ5\iDcAIQ^p.5Y'+Ef284m
%Ql1RJ?."Q at 6g)@tI5.<*2su(';9p>BQOanOA)k[dUF5;O1ZAUo':o^NIu!;;q/CqV/7c\Y4!-*G7*r4"_hIH3ihkiTo&7NVN-rQ_
%9_iXL&%jhGDVY&,!Ekq&cA)f%`IaCu[Ot`naK3Dg/n-JZlogI28rdOg`n1q2^m$Rp51'0``ep%b)'J:!4<K>=6(ml;$m'eMQb[T&
%c]Pp2Mo-)c,Nm\m-qjo#\PcP*)/.'3i#0=ZHf/E$GQpN_D9aYdjh"t]!U7>4(h._Qd\3m-DYZ1(F_XPHXiWBV?HJ&T at t@jJB>.lR
%P6P7O7DGr6"#JZMGYS>fE2(XDM;c,\3!5&3mjrW:(,<H-S-ssFdgFlBIF36aE7AT8o:`'>!e,R0MQgo)LH6P&[5r:?G^sd=!a^mC
%,P?)I)6&t_a[j,B*^`Ds4L$l3N)Y<`QAedr1O;M?65`9_.V>kQ*s:o`f,'gh"Tf<WBPOVC7d_4:5XG%#iF?N]\/*UK68I?;4*pg&
%iP\kMcAir)P&]=Okd-r&OUC8B,tj!i,H5WLqiq8[_?HPt1sT&[\g&CC4`]U_3-'c=6hjn!dm&3I"tCs/_$\=-?K./qK1,?gnFg.%
%53(rl>'T65eL8DNI2 at D<%No8rHG9+/&2qb?pQ4 at t`J)*DFA-/%Z%Nd63\RN(*1?ALnm8)TRlt'JSFl42#[nNkp`<DT@,E4WHharq
%?AkC8REDEC5(9-`V<If51gV=(R$uc6Q;\0fP=rPRr"Ldq5>07l'b("`N&?Nm`P"cIb$BGXfjqJDq at pQc,>R[mib0s1i)dLQh2ZQ>
%87blZ=a+JX-!m2.:3OfC:Ruk;A_:_'G at AU2%uZ!uP"W1b)Drj5>#]Hqh*Y;M>=oED'JJ"F)cce(isX-o>=mY+>b^q-j$[S1F'Tbl
%2'&&mVglp->gBa0;S]HQP24t@:S[@Tq!PVD1[NP^\VoXD7]R\lDFmKpp[Prc:'NVF\skP%K?1Y9Q=2^LfpVPm.Z3O9BqB_4R<Us"
%Z0E?(f%bUuK5+.$XeoPmm//tpM?e,GcAj&_a2b^R_V5G9c\*2P4-&0<gLn>D:OdXKb'PA56`'M'H`YqPJLCJr8anlD)nng"#O],0
%:@3nNUSWJ1b:hF*g.cVU0)^$<g5kPH3PV8G)21/DR2 at 4hdY[VQQD/:;EUE'"\]W-CKj8^6DLbC@!qD2_pFY[9OZ<.3SY\5d$>Q)X
%7cG%Di[0ETnfkd7CNm&I,fVs!0;,X7^9M7uq7.:D`aN=ee+re?^/;D&ZK_:-l(ZLZ))Ri.0.*&WO#riV0:*11A\?]<I[lT=HT#/;
%e9\4LFFG0##!!hP?8c*=*l[Y[e+p,ppohAkP"k*\;jp>q]J;6Y2P'm%laX:cJoaE$R8"LhS?!7.l%G&jFtT?SWp!",FFKEN_A+=9
%7lHoFQ\<oS0kJi0jjNt[Qnr20S_s4qB0qV1S'DNY>N$T42P"2-SPRPPLtQmf;J`RR\d41Q.@\U9QYo'G`Q4qJbG>TfYo4dTcHl(R
%k#RP7:$8Enh"N.S,Fcts[=n=?A'Lll".5,>?AHb%o,Hl.Q'%cHl,41n9.M1WbE1D!rdJE$3JPbT'8U(dP/3Pk_e.Bn+XERD'P*G;
%Vabb.anl!7[kE"S;i3Cd_ at je3++EYi#LITsj04A9OkRZh?&[gX\d7V29_[)>q:o$6B3iHN;rl33!gAe'@dq'MOid+_=9-YeNk1'j
%0&Fs'"AcJ?470q'Q]&G,f!e;#]0!5qEPsk<Qaheg;o=:8ab[-/!^.`Mb50>m4ec5c8(><Na;Y6i\1PmPdG9mECJMN%BKo0aP<@tb
%GDS9kj,pOU,I*0*Msb%$dZ*5Xm#eH]'=0Y#0=m(6VA+!oh1-*V+g8HJN at 9*+\f3>)WW/F!^6?A20"N!2ZNn\^_HlNGSo_:u`]T1Q
%hKVf]`c5/X20(=q?MIh8HRE?7,+[WJ_ZBL8j-YmT7F#5thI#_HQ,j?uJi@\fbt94)dm\(kMmnNOBp4UsaalBe\J at GB1]<=hB&^?J
%3me`_BY=X<o<At at 6?]7o8%%iBp].q"Ls8/Uh,#BkIq0T&HH4\E'dN<i$qh`HMT]E#)?#qA#+>#`GBP."Td6iQ$Fm=fRDL[29dd`.
%cPDIZ"1pLsp3/+;QWX-s(:f_F5On&`/_63%55&:^Nc"hT(JC/&F&sJ5:Rd$%KAH8?[^61g>5o)t$[V#RpaqnR6 at ZtgSKl$`VOW_=
%#/g'&h-bKq8RrZ9p+KSOg$cbFO7T-6'+U8R?(HV`)?#d"$>6m'Wa5T3_?nmN1tZ,7&.kI%L(RI2_=m.16R_OtA/HKl5K""T^A4$1
%,E&5qC4,bV8)8,#cPdnuL-$RMdJ&[5!AeWqDR^YNVS%KOM#qS;)c[;02r'+YcQ=Ar,i/uSM-s`J`7go&\;P^6q:=BraGF2I9!^Vl
%EM>o"`*.H'f5DAL*fQ^n.o-Rs96t". at kC1<7:bO*cYaidS1=Xg<\u=ScP;!e>%0(76KZG<'5K6gc\:,h\T3f0p:ed/Z*)7`D&@10
%;ubtubhkGlT>5j7>5n91Ko"]<8PE2rV($@!o1rj'92^*H%c4J^qVjR(!:1rMG!W=dmOsh*lnaAq`^jRM,/3r!r6!&T\-)3m.g+q0
%V+`dX04Uedk_UcSVaAk""uQg]l$BD.'dt*Cfkm+Kp*q&Dm_(&fclCYH2L(jbUC'-H^kZHRNH-jU+2u6Ch;`S.=b$t+Xc?i-'XRTP
%ZY%FNnua%ohZ=_'Q:,Vd)r#Lrd&!tQ4(@B_3mtX;+#JE#@jA58m<"TL<$KSMoQI?PbjIR1O,_Ze96M-#qMHQ-0<=MF;teR4HRQnJ
%\Pgm;>rg_\)F[DEhnq at G/6VuJE%;UNJba8UT;QLE&g"EcU:bjAS==`j at Iq$8cd!08$-W8D/\Crt:[[,piFu\pe+2qe92MCeJZ3@?
%FOrY14;DgXVl"Sa5AEL[E9?lJpXGOhW@&d*<_1*6mn+6!]W))m.TJ%a0VD9QEpD^YH15T+O[`SC&e69=>qNS6XbE[2^d_sORJ_gR
%\alWVA]#GBT*]>@dlh&2q)+U3e(h]tqo(ACW7ENV4Scu$@^^OQqA#pb_p;C_e1^n\NQLXEo$pS_7/_c.*LeB17HUc20fkjG&Xfi:
%W(Q0L'0J_:'4$Q6PLL9?=V&(qNTCe)')GcHpPMu#QD'BJkZg$Lh^rG[3u)raB)b2aW;0lW.cKR\`3j\[SoCjYbq-+E8[kP;92M.L
%OPt:"A8>15<n^fOHSno+>0maRcT/\Dph at NL>(M$I&AQ:Ll#F&t_!V\tQhX^-&\H^/"*?$f^mbAdANAgPHJ4kf]s2J,g?1.`Eq at mB
%>`!LrEO7H1Yh'8r;1`")MO!W__RID#?+2GIAX2G)EH:^H=EtnL2I[.=Qep]I[3dit`=-G.k\+?>@)RVenT"V>kDMcS/`k>b>-['s
%mS+pHs4Yc)nf<a3>RaW6N6b"C<[Zl87#X8'lGS7HXSR+r%!^D>&1cfiHlerSRJ$*E.\C>-H``5c^_gI?cr4U%ZeN99$W-])'$6Z/
%`7M,1bADbt1 at rOBIuKP#oc.tsJJ0X\g+kY"/bkig(tQ31.J3j,#>G at 9`m:u]ka0%+4-_VmcC;Q<$ejA,Bm([6F^d-o-cTG+nUUl+
%X4m<+%0C?RNXqgcA1l1N'H>Yl,6096j`22qKd<JeV$jn9G_aKEN,'HFmn+NU$d^Jj_)[$0VeQX%"mGAAE"8Q(IcLO9!9<2A1<gp)
%!X4,llpa.1Fg1tQ!!?2+?OgK-*N>0(JC.:g^g;_GZ2b!jfp;dXQ=CY#Ne),uoCnC-Ac]or!=\U_O3[^/)X:57+`Cm1n5@!9N7>+=
%aqkXi(t5=/M>0\QKM2,'HL)/Jb"&5%_qon[pJO0rL&83Cnfa'&VuH%ZI"U<`3R"=I^/5(#<6b/89k$35hF*nD-/Ro7hI8C'Z_@;8
%oc#lS/)XaK+jPf\ia0AbeAcGcP]O%c./T7ghs2)MFZ5&]TuaorURqu1k?bo*q3<2^lfV*b09kG5a[=nM[ha:j?QpN.A at JNOI';F8
%R9[Ydlf[@8pT8o$SLVP6lPGRbkl$bKh!5c*X5CuWJ?XD!_@]D!l!D-'*NJ/1f.[%GX at .Ab4_Gr4qLqQq\&Q,G7t][a(I$5lm'38Q
%olFtIlFYSbKG1:hp\KS^SP"k*?GG]?NcEk?(OiFB@/'0phs35RI=/rhlfX#^^""doUt1+coaBVO7U$bV]meoJ.TDIgI]m*lH4&=a
%5-?HAi*6/mH*>-BlPI91KCf(%me$tFE#k=.3oI]#6!7U4C;PdP%fe.IGpMD44k.@:ontL#UYP0J1Rdd7IRDu42rH,+JbS\oT(aA_
%l8MU!a*F?Dm9(Wn[G*UZ]meoZ>OD?:>7?;!f.[%a&*I8jdI-\6;m(K]UW&1cput<Ip\I>EZ#SRb(OiFBGjaUMg8#>T5/*^$drE%P
%1#2*8U%nN5K:UlGJ$35?<IDV$Ar(g4_NHM=^8YI"qRq?llt,)>2elAs4>TK0Y8le5^Mku!aK-KJ?9a5!ITa1ugrD?u(2gp9I%s0;
%4Lb0HFrt)H/DQ=M=$HBT%@[dPEY:mVf?YatICK'8<lT*^+&?M?^X\D1Z-i%5$fC/9/D)]4lPJut1Q%/DkK3a)^\DeA2oWH(q at 2gn
%%Wnm]O:J(qqMf4`?nqR[5L4'86f72GI]Hg"*Q'^Udb0 at KM"R=$LUbqhr)UQ<HRsV4D!8!M6:>ghHi8]'@>;;D05r2Y!`&+Kg5(+S
%ip=,orEd8.aT803hW^`blaP97/9l2Co0V>p%m.#=C`)F(Hn"4fm6Xs3Je-a`mnR(4fc1&X[665q(nBW\,PJ:jebQ(5!g4m<Va+60
%RRK\A!9N''oN3Ve3bp,9NEgC5[ih0,Vom6;7#=mZI&cT0Zf>dJQ+i`[:157n2=n'NOijj+0$GuPI9Z:nb9tp5BD'T:<%e3r8`eif
%92]?i<rk.-V,cE>[XMA;df.PNUU:'op+@@CC*1mgJSIbh47s!G]_h4G>tDY`FRcU3,@)p.A>G]Ko3(>WH/_A at Gdr'`*`(:WoV>g<
%85BJY?_'riSEk:c>0EHY\Ts<.GCCUX9QqgJN@)J5%s'gF(@/0Y8)&gMgW%52c$O2C3dl-5AM,o"e&S at j]@.jol%o]sGF4e7]VKa.
%C\m8jpJkp=N[Fn*IMUYki=d(AP'WEbV[A]qZa;PhH\Ko.QELd,j$N<0]3S)Xh+oV??>ICmOR+%)V+hK*#cW>`>JHI\+NMg;oX+0C
%gZ]\1c9&Q0 at B.RYc*+'%)cC6gDc<[K^$J?q7u(I-aTpiD1KRMV]s[>"r2P$e/*/7A. at QIq9.F<0+3?Bi;XUKli%_[qio at VUmj[ki
%`*3DpSCtrSpM$MlFD?!\:eND&AhGdt[Zm41RCUham)B6qmAB#q9cRWrm3+Yq:G!@3f at 7[ReTP]qHP/$7I[c:ol1LIe4R10?H*/PK
%-dot[2('VTNuQ:>W=Bf98m+/.iS/'N??gs,K5VR``3#AHT+bAu[Q7uJoctuMc&nWs'Jo+1n(JboYrtb7H^ji&-h=Q+cO,snMth at U
%rS6!A#g`Xdo#p4*-0=b>WUSHlmhYUL0CM17oISS<[J[,tJ7-/7X?nGSUZtfuPs6`N3Y.J"S+Ce%?mk,"!8HhQ^`OQ<p4ESeY]N7T
%D6;*G12$ha`O<75$VkiLjfP()d!K12VR!gZJ293dgin8J^k3;gr)D:o;t0C'A'P;J85)DkrSu$%<gj+@]=(;<$*$<*[->:2$L%hN
%p at p%kOlZa%n\WUn!d9S6:@@mXboN='WpoEo&:\_3&tdH:"5,=VGJ1a>;!a%JncT&5ganb3eWoBqpZB\FAYlL,[Q0a'@r>TN&fk%<
%Y>a,`Lu'DP5?>!n^Cm3G]B1cige+ at m)`+n.d`sATV at kSqOuXn^.J'BioM6d>]sFKX2BF4`UKpqYRfl`Rd at QC7O]VuVhL#ucT'+a_
%T^_nPP+VJmB&VLH9^U`mo7O>\m3jR]<`St)=,h`<KD^!]+>/h6*.D5UfXmcb'*%YJ$U"+kF6WZBld+apC3T;QGt=oqQ,hS44ltqd
%43_a?r%a(_;)_5">cp66^(ikkb0ah=S2>qmc!'5,5pkLm%Fkb,1^qGMG>bSfQ*hQZ@;OD>OQ8!=,6Qi'1B7'J3;$[Z4otS-^GQe9
%'`4["/h1qKCWlO3`JK5idm;\3o;aqNfZd($>Osn7e\*\E^:;lLls32H&JI120(tXe4!NHW.WP^_gjS8h-^6-oCq'o=na\.eH[(`_
%)Y@[!gc2qU>'9cp2-Y"#V&#Q8mSKrfc4L91(Sca&YT[5aVJ6X[ViW(=a.+t_SubQW)ti$0#AC1^YqfJWq:O`/\NPS7 at D>ZXc4dl_
%mhI-]Q-M2!H/6UelksAH,BZcd*_j]ZEf:P(T.<"6qGf1Aj'),0V0QN.K17B[q?;/poo$`$^<stkkKli8e#-f7#_7Zk?/Ad.\f34n
%`+:S\^QuXe/j=\!?=!DM?\2>Nk<4c&m)b7jb$1 at m"q8fS&Ni%CZgjN]WTKH at 5c`<g]^h$H;PHIn;u=8]QtTO]mDXsA!+_ai"+,Cn
%"?#&>3DUoi\e<:6]=-F:$t%fe;V?4E]KZ41rB6cD0AR]l=G:V0fRT$Jc-<0(a[>W?Bt@;J.S\J0G06/@[?HTZ1O0n1.]4"s;I?J,
%;^\cfqq]B]je$`Nm^$*[!b?XqM]2dY^M'M_El%g]?uo7+Zrt6N/nHt![BW^1^0=KnV8pGUn_pX`I9`*t^'hJ<C$2PRXcsap-8QXK
%;OnbKh*Z at QJSTs@Cc8BBa_lC<Ie-Dr]=@2Yf<!81iUeMjOoO9%fe6F-1YM?Dlbj#?1MFc*T`UQuh4o]*_]n8'T7.'$[="s<ZItMd
%b%'mHhH8Y54Rkej[ZnE1>8-UD5LV'B5=bn`_fmM6]3jpOLW\X>O]b2,)O!hk-U@'&IIf7Y!AA-e;FAXnbA5RZ\'28AhGiaB['d=<
%=Z at q2hZFH2+Y(Xs[Cd/Dnit!$]pYt1]fG+Y(Lu1)G.]ksg619'?,!@egSXGF\pi5b.+TotSW/PqX7)&!G3?I-\?J,!3-nrb#81]K
%V70gf'-`@jeGW'4H;-=k+I,SR/gHF!$u3]DqpBcY]pg?DN`(0`>'E'j6Qhsk%tse at N5g%@N5TBfibG0N.bUsgNLBJ,\ah/s5W--Y
%ZIiA1rD^9"6&hK(K1!>d=4l)&*Di?(e'52(]j[2NQ\BJC at Hh4rB"nZCZIQIp\q<VadRLCorZE&hb_0DXh8Abj>D<O_88>#-/8fp^
%2")(A;Dpbg*D"h<ehH%gO0%*W.5Xm-a$:FXXZ])UM*t7mc6)5lIHtA&).X=lN.<`$bm':fo_4--[^`UI)J2sV*b,ZbcXPg8I.0-9
%j-G21BGkJ!)qnuq&DB//-n_J(6'jAGY#l!F4Tt(JE#*(@5KOh+a-a7=g+q/aMksKG#d*ro%1EiC<%:$5SN%#51ii*@AnjW2*7CIc
%F.5d:nZI7s0&Ad<GC/geZ%JaT;]7fO.LW4EF7I*6nOZi.S[a)i^%0Mj5F\@%IBeF<%[n5d=en3EAuA<olB[m.8&lSCQ'/:7(!`+p
%B1b7p`\*3>An#7]]ood5_r#;'NJp0k,Mh_E"rYUBFo7OYC)[t9X#i!:B;tHcEV/3,'.Ea/k/?Q0jKOUn09:/nbBG%hV<l<&-]p$q
%XYue]feD'Wa,#Oc4jis$OUT8IqOGb_Z0(JjAo;'@p$GTrNo"cT4g%q(&51,&NK1&b+F,.o*r at +nj[=E65 at JO0qM.3'eD*EdD7aBt
%mNmibq/EpWk8.2)L7cul at K<*n\C-i^"cY'`\;6/RTPO'30V;b36Kpm0UiG7A\`>(>;bKKYU_Y"YGO_Sq>52uBdKQ!5?PCUBK,g_"
%TAE6W>C:ful(P&*BRUh$!SGs,=1I:1=$>h,Eden6j`:$nr!>Q-o/l[L*B:Ti0t$S/[C,N(lMM95AkSq0+<2&#cnH87-,3iH&/u^<
%0F!g=0bHBY,qq).B_/u2Dq")F1n^Il">>fGikT&$,<_b-Ku+!U2XpW*3/`Fh18Za-=NbNY8mLm);RjB;Sc"nS?_8AYJ]EAip#WGd
%nJW$Qi3>SdCImFTjfr4`)HaLg=mk9RgcalSS4[*=DIt2kI(=NN=BK60)hjVcLR$<a]Y7TPBJ%JnDCW?s_RAuV\FFan?7pHiT9#;i
%jU8COq>+#BXj<9_b1V+?3g'+=s2G`Ko2p-loXL[`I`@AR-9eRl`S_>k=Gn[1EW3hA_Zt;(h8#WIE'Eh0itQru-dptY_!sB=M=cn'
%aFTcjM89ZBp@#Jg#EOoT_sq,oqm8NSj[?<H)W=<daV\j/qrA\<PD>3[AYs at O(^iFBT>r[6'gGKJlqe.TF*XY6.t6RJCG at 3)ms2?S
%;#cpOBpV&3G6_Es+4t435FK,6S=T\/LnWSE^-;I$Gtc&`V)%^HEIq\i8dCmM$^JcY`a#@eW;_h=-'<*GB>2egXk,2X4pW24*JiI3
%@`D*==ARbu`g&:$A,'n\DL,r`Cl;+JYH#9$p$UV[nV7=?%(j$4pdYO[I%u$'rntSU@>F[?cON&TG21XD7gGUoHQrED#C`U/^4?OG
%g!fgG#G)>c\c:be%QkX&p_I]0^f/_=*B4`+:Z8gF*E9I\dN.0;L/&>5CeJ:bP)."_!t6s>Y$LrhpUrULVd92"ksk1P@@!M9>8<h\
%;DqB'9\:ji(TtAr."GG5*OS0aeB8mEo>R^%ZJu0=)=(IK0Hap?'5Qo<gcKAtM:gjE:K/fXk)#;e;JebHGsGV?*>`N'oo,!m5aW&b
%+ at EWoQ1("Te`l1")8*-#K"Uc<V.kUY$teSFX,AM\^$e/E?F[U"hmrL6o/]DF5J6m7^?"J6@>jsCQ_OZ<hEKn>q[_gbE.gF;2D40m
%_EC/m9[@>%DssBpg(lf4h2FMSjQ#fpEjj`#[-m=g,F,T:ph5iZr'*C[=m:7+aXFSX]/S&SYh?b::Ad:'E^d0[_G0E at D]0,Aa`XC1
%E](U0lCQ]t\.a_gF*hF2iQ?T%e%@qtgQ)-S8['HJ,UhN^4qJg(&A`c(("mLC7KdCHDFu%fHLY4(-@/W>OoQG4.osNK6k_kWZ9E?:
%;)Njqa[i*&aFS_(j@(1Xc=-(?<%D%I7-JGnh`=0H4AVO'"n9?E7\F4:-2#4EZ1>+s.#;"j&2=/ErlaZ`O<A?>o7?JJk/p5OQsCQ*
%&+nYK`DP%(L5Rq^`5C!DNS4V/e<\!,PoKlk+rpks at 5b91#KZVUS.N:L'#`uPAmlh_7,60l&6LEE%Kt`W_[@Y- at l2\p?^V<'J?iNf
%5B;AnQ)PNE%fd4a)[qB>K9RG!E1_CE[%M at L`hXhch2/8IU8qU<cD`bQ<0r[Ah/cq\]A at od*Xfk8(L-2b4QZgP323A4"9qGnLQ_Gf
%?joBa(G?&.<&D6kL\'-uBIJN-_8BbC2-S_B[FKoh49a,8do at 1a`E2@:MT)EFZ7of2S/GHIQ)U!a+ at h5DEnG%REJti,EI$%LR?85f
%hMJ:ULs#sNeOEW_l)P2`I,iB&qU/*Ko8pXWU^PqsiHDL&^AAl*BAL\HU$9bo%?B5'^<BE'_F^4G5:iq@]Ubg$PGOLLI4d"1gTLu1
%M2CB`:OuI75r.-!`#DS*cR3CH&l7,3Dg5dsFBP(Z5J[Q[BYi#kH'ZB:'#aF%7JcVi>9fP"1[<K4aqO1a,l(.F)t,m6F\hAfK%,1R
%+3]QPMWndN_1MI?>^j(&AB=peKg'fiIBt"e_E3ZS4!4C:+\cO5\+V2LG1jNqcLd3HYobMX%m]itg.OF%LH1qAFsmsC?/@L5EV'cU
%BLRB!8DC at uc-n/gD&EN8f:m+q:Jl$Jb,G1j^DKD^ahK+\$-4dS7gSf)"8d+[/$mIUlcQl2%8-6$PZ_M<-HoUn>Qeu8VTT at um)-iK
%F>5Yf-Ji:O_@\0f*$*@63WLND%OW5'?Uk;[Or.-?9m0V#c^-`5g:;B/aPXaEBWtt>jtt%U3H(H6`$`Do1dc<WkOk#`H+>&X^/EZk
%70R[&3E[fem)YF19.rdrqpm`.fXIL-#Fa[LSuk2^Dot.R/7.TU^uNZD_RmqLKj$(t`#frq&q0ZIkCg[#R_?!elUFQ at I9M*uD*QBL
%%cla5Z[g6JAZBDKRnbj\g%RLgrSs6RrR0OtlI8s[`O+Y63C^nMltT]`G_7XfCoZ`lSJlG=5"?oF=uk2JP5"V>/YtfYX\P4_Fh=Nn
%C0l9&4T-]K(!l:uV8gGHiT0?CVYn*:EJZ_j"n`'qH0r!K)NgZnYKEX.`0<f_0fRA:*E6\^RdA"gg)QsKbj+F4afZrcX at +FE+AuZ0
%l*=QjC8=mY`$*gZd%&6^pN(mtUX-4;F*St-PSS3#M2&EZ1)J&h(/S&UiX$N)2Oi!tK3\%@cN!MhI7GJqbk>2d4FLATX_AZs?Hc$F
%REQ;iO^')DA3g1/hNBM7$iBNDp3V]Kamsj;=5$qo8Pls\'bf0#:U'\/.\oR?U#]%p%lu5anCuZa8)ZPFdE",7]N&);g-&)&-ZAD8
%GeW;`,phiU&)7]5?p!XgO`=7Ws/[O;H-8aIRUmge-U3SokGV=/Y;_XQM<...YTq?Sc.?!m;lcJ>rpH%T00`gOAhU]ZbS<m24$0<G
%WkGcGCIpQB:O-1#/Md<5]CWrC7pOgB#lAJ)hQ3j*mE(RBC?\I(?Lr("RoQq!ED,0q]siBCY)Fr[e3 at p@?5 at U4:N8P!PZj:]'U%/8
%GFFX*C;)F:DH7OF.]rWF._U_n%Amft?*14m(Db_[],Q)tGKnoL\]e)X2qg^2F*AjoDCX7NQ.<b:$d#U>5;Hg-MNQ<q\9O1*1Q0ci
%`,?GVQLQYbA&*Ee_'c4mIpZ;r_^+ask;WRqCg!>*\tb-rB(_TAaN^bU14(Z0&^g'YpsYi'0YNm&bL#$cOMNrd"JVa&]tgKEXdCCY
%S$cVIfuieZ?,(&kEnShq_C6(7Tb>e?"j:Lp at mN4'6;4V-ad-uIo<@1a0ag;q1r$FdbaVb?AWSXu.1no$+DMBha^'^%hPao<3g*<h
%c*O/a[a#VN9J.AXE"&$f*qmD?Z&a)Em5Z$p)ks'I]Uu#J6HlN;J^o!m,,'D-nF;B#Y:*M7QR4l96^aLfc>j;$LQ(<,GdbTa;:_!c
%(k&K9F-M3BG4$>"E.*o at K85n3=GZ.'+I2,j9?"dDo^YrN,JVh_S/%KZo[&E=gURQ$>q306=8$0JVV:D0,`_?brdo)I"?l_Aq'8Uo
%KdbiDB'Hei`!&:R_O6TA#(NCcPHDhM4eI+36i6eadrQY1%J4q;`@/)%ULqf5#PM!rMrIk`T2e<>!!;P7qs9WpGE#C'2nEBUYa"j;
%UGlitT-(aTcWGQaF3`7g?P0iRGFKgP!;*lW8&(>XG3A*KU#3P-Q'<_efCNQLDiC0hm7-=lh*$B.AnCp5ULuc at I/sQ&euoK<6L*fL
%@cP"AA5PHX$:lV;WFI#q1XMON/%4;>VoM+TI(,17cd]31mI at G_&nACQr9P0:A\8e:T=mQlPK%@Bpt706L[l96(-d/bI?.OH),6i3
%krZB'X-c;1Ho:Y&Lr9$@n>3P1dP&>Mf9uB7&U$2cl_dLZ6/&kRaLVD"Yg%*&YDUakpK>_1'ULRnP[2U5VGpk^.bh"t^\S!/9Y,CQ
%9lEgGMisp-c4CA7b^@3HLC0WPNQejpO5I6d=jAXPEEP9?, at N>JlDmLElqQ at Ijl,72A6#!<kB/GJg9n6aFi%5,fU>ge1*R(Z.*IG-
%=E-g8QtpC''f9pp.6>gEic(JcQhG80iB\^j=kR at S\.M:4]b*hd8'nb;^c5IB6?VD:+bG$pOA0.,+/CYRpi<[%SIfFj+H-ghIKESK
%S_ZH&bK3u/%P-?=Yu37UE['jaEtf2HSCDKXdAu82fBjCf&I*cVdQIpUO.@*f6DY=@[2]VbEf;=!ff(/p+2LY4!PnFAoRU\OidqH_
%:)=C54]%"F.c&.sXb"t(i6hkiY!&5.3I^V#.!t,GgsJ*1meHNB"E<B%i81)T>jIEWhdZ!JUZ]\MJ4k8H5(A;$/j!/0\<VrK7$qd1
%GPJ$`mJ>!,+Di3*^UP_9I:r/s[Er-WEkh!&2"pc##(p0kH-EmkkP9H]X`Ie>15O1bES:!\,FUppqV\("V_<r:J4B.NO-I^qZ-hbD
%X*&5"]De38:#^(<-_k<bV0hBU8BkCeS@\D$5*)L^aLt9TmjLdro\h#[lgR*bq'Ct4c_'%@39%L%ZY/>B("`&$*3J6_,Ia(.MFQU[
%;T9?DOI=i`%9&k%cs,?S#mG\mmC'>8G(hQ=iKKND&9/[c]Fe?SM`?_EhMC2)(3(<i]Fe?SM`?_EhFMN%$Aga&-f2qjSd^K9N[N])
%r;FEej*9RCM0+!\EBNb\P/eFQE?%ce&U3u&73'>]De--q(i^Nk]FcAi at 1gPIn]";doOYITK'J0J07Jg"B[0b,"Di3iQ]09RYB9;o
%l`aOA<#Iu#fuf$9rmg*=\K;AH<aiGco5f$.7!7KgA#lf3Fhdb2fGf_o'`a<?^6r>4\ENEL>k9I&0`#t,FR+;NaP4VPSZq,!QedSj
%_TYN1N6C(Z\8fCNiBEpJH+V80X_jt1cI=1,5SWof)U_i7aOc*I'_[BfSg>&]RQs5d5TQ&kMT]5e):Lb]Q5qWjord9=qI,]/oqjWl
%=:qnV;2!r&h9M2*dsR?LX]tg</[:g:iu6ug\bR_X5:4fm-onF&IbImiJ)%-=f:2ZfIqkO-S>?1Ki.(Ni\!"%+-5BgA+$,_U5:84^
%DGm'#mR)>^\O*2qWk\2kX_,!4:N?c"Xq(0OG=ouR,d$qLFdJ:0k`,3?[GfLa/p]]J%j)H_Z2jo1r@@C?IuY.>P5ao++gI'C_ggUb
%/q!I(7K6!&;XtrUHS6[Pn\p]FWiB4P[#Cf\RTWdF:4GQ45&9AZP#O:bX"$S&8P17$K+][b/+=?];_6*cW]GS`XQ3#@<QqOUi^5l$
%eT?&5-s9-h=b1)b*''Y9)k''!P>*KeYK:N[Q`ub[mmATs;PK9d,qJ.YPItNHW_.Rd8IB/@SsbI0\mh\dEE0ihj_<mOPB>Q;ge4 at C
%Gb;cZ8^ODP)>HY/'Nrc"(J.JH`Caa&$\r at bLZP<=*A#J[&JK39ZCj4NTU%_8ru]efb8Q3iiOJt<q0.F3+eSh.2!fgS\/6P*;;p?Z
%Tj';:NLU/[82EE0.="r<am_aNTHSn&/Q1pZ<JA2V"fQ3_<m$oYE@%5W1^u.jA>$8H&8Fa=9suT.;Pp04WK"!E=0WO6V5P.YOUN'V
%/2:.qcsG#_QA-WTLK<nI+"Da at UZo(U<V!F*O#7:D$d)H,,jZ[:eFgJ:e7BqABeg*I,%jmb`_?^51>sJq/ONF08R7)=BVn?N=dkT\
%NKT(N5\rhTdW>jh!48mrhgpTHAKlktA["IS at E&dlVNk.-"fZ/IT$U.UWrf]&lNe at 6%<&f"E9sqon-oq`QK/d!$%'uPZ_iDo<gB`m
%XJc0[S+)LNaFZGkn7GunqJqb7><mQdDdk!m$"Q_E0RA[s0L-tXXau^5iK=28N$QdN91 at 0rUe''f,T>$1af at Zu+J<HL[q_',O#3,^
%,4l)sPAk&0:1PlEf2/P"TT,Y</-(TB)Dh\A1^tV-n3rN(Hb_Rc#q;cb%DYPf&MOoi0TRhp-_^LOTd0D'2Qn'Q,_2(-8LCF5jFLAh
%#quUE,*FJB.(Q2]CoA!WK3mSRC**-]72X_[#(oAS:b$`)>Ta>N*<jF'/,V?=!k9_[VNDK[!I7Wq'F)FG8etb3/"r=c:f"D'q%X4I
%$BbpONB.,1-nbZ<s+"2oq*@_(V?YbkJtACGL`-\k?1M%u=:W=f"Mue?JN"mlUaR?XZCh/P=2-G;!M51BK*%],pqP8M?g7EjFLe6K
%^MN+J=u7'00E<g$b((B!V30AKW^\m)1^++dVY1M*T5#6))$J&L3sQkh-.s_m+k(n3%i$Nl!*;fZC?NjCJqf:aU4KCJLmh6FW9H#-
%->c!TN%egihOIl';M0!?<74)!9gqr#5Yd0lRSs=n7G\0(e?LmJ!5L,\]M.r'8,uUD/CY(4Gn&C0Gn,b:;?MeAIOo#Q6O%\.-$:o<
%//<qG=/]]jPTTuU+M.pScHsCgd.3h8@*l[jaq?_>J9UUXO*C]%X9Hbl/lGMsE<,'Th#R6SjH]eLV#@#7!nIWR&6KJc<+W#,JEO`o
%KgDrY&ljcH`MQH`!b^Rk at A&VcT`P89'.XOrm>EAG&0&M>dYp:EkF_gn8,-p&46`PXV[U9N:$I0/Zn*?-dhF;t"`&^<AdO_@$.R0[
%Oa6gm97k!G$j!k:icN!cUYU%M0KblFBYd=`p5NKn4jT)]?`L]:g0ZV89;5Q3&MhWdL.5f&TJ=YtP(cfNbHM+LMJD?Xfh`-O!9QS/
%H\.rhW$)k+f:[ZN'-Mo=JK^-ig1M]kJHHja-c:iB''PRm.d=g.0S>k+Xp`%9&uSZVAIYo'A)fi;#hrY3m.n5R;IebXs,Oo$A)LEH
%W`7mj#1KbIFhEZV2Yu16@@-1kO\.S\k>h at I.+,"7L6J(8X<ElI=`E$`9cGumIX*X8K_AOTg1(+,O22E7epoN[:h<pTb#GSp%:Cdn
%\kll1X1t_ZQ8+=$kQGOl#NYVP+.Z4P^;hE2ruHZ!8"dVmlS(4l7UY:C1GYdU1V2qYL/Wih:P6==HkYdn,VBbT`30:PkA9_SE]AnS
%%,M!oCbQ60GaOc&`$/e>%AAHcEFP&&Mng59o*gUB%:'>D943XD25(.h5aXbFc.%DMH0CkGkl_VRjb4=dAb+n>V[-Qc%=s.4`Aj<\
%@B`F6*KYBE"78uZ*6&U6W)*V\]aA9.TW:`L/%S>\ZqOICYM!LFgh:)P+s:@1-t%1rkl)`K^iGlB6Eqc/7&LfB*;j at LaAR+2!)H3c
%.;1DeaD8R=P,)9W9NI9bH&UqKd4<VML((5O:nhQE?-BSK=;gneW_%F<\r\kYHpAR2(b"i*"(s9JQpD%(8D9jckSk*hYS'>YO.hNF
%=Gq/#!jX at G-r@75ap?.J!)m$s03L%GJGWlGZutl`9JTSIV&5^T3f]X5Y-rn;6A^_/5E<;b^6_q'?B\j`loeCH&-bIqK3&5kAK'`$
%beTQASJ''qi"?u</R(,DN5Jh.M+YF`Q[Ss%'s)p\OUR(%'aa/QM.JA8C.Ka$Z#jg0 at 2BIc<E!0s"g0o]qmoVI<,&.bYbrZ-`=hs/
%f*KWl1*C)`+JWfUC,-Z:^G9c4OOm`Ki%QB<`<=.hMTc*,eMP]SLH3_n,@]fb_K>ti>l\gO?!!^fi<G0<`WralQ7:=Q#2i$Z6$!%(
%(h=0ur;tdXMae:nfr/SoP*'sR^d'RWj-65f8paqZd'jEq#TOR\)1'mo_Bpa]*+>>%TWbq`@02#=@![tFU;H8#S4*F at -C\HF&;Kba
%Qa6t4RD;BRdijb`Ba0"gJ&WW%aNGJg)+[mOKF#aPkd>!%raisYi1r.\j\r$bKN$=SnGLE_1h[`o^A*sRn(P;IPrX8l,j'P`r[Yf9
%NiHBZj,5_2QWOA/&0iD:q\,AhPqXt_[mXiFae-ij:+ZpP<tPl at 9j>JY=:#Cs/sBt9;oBp"!8#^86*E>O42QYV,S$kOMdt^2Z:e;@
%0E()nr/0 at H>U[FuTYRkdK'Ok`N9_o at +`T2?!t"q6ob9lD8<@#R"_o"L'`]G`mhA$*;>]9UX9a,a;&OG4^e2i"E0;\dJt*+!j[^&0
%<O*t:GT./G9MPU)VEXVY)kG`RKX"iN2+:8\MAQ`BbTLto6jE.\m,B9na5CiAXCMlu%N,3"js47WE0=KPX>sB.,%pKQDd6Zq>bqVQ
%9WZ0pDueQ;%O68(Dtk&E7`#]o\:?2$'$;%9 at 2N.q#m5,^Z+K>kOc5DG=l_IY'YQ!^![B]O%O]q@!\69BN0aOS7f(G6aW<"&PH^B]
%D9-04NX92ATn'CG562TOiKB7:aBY"qFNI[`$bUXc6R]jT>,Fd3^`8G91SDrmLJAe;APO2)MUXm7&Au=mCo<)/,f%i>5p9\_f2,/M
%MF9O^q>kakcut:U$#o54S$hW-J[_1*cBC6,k#G8Qg-$"W)qWYP=VLlU'*j\+ic)An":`*i`ne.m6.ZhfG<9B+]:m0k9Ta=cr]9BT
%QE(E(RTKsiSRMo\D&51Uc&2_][Yku<j%=o<#T?MV0Sd2=:m6":GV'jHcJ2.qBC7t]3HKfh79j,\\TM.GP at PJN4(UZ.`?GBoYe]'n
%rQ?0b"Q+oVjFB#?FqEO'.rtj2m^$8gT<NjP?l3d._C8qfNp_fVlM!Cn9'0F!.9OUZQHPj":IP at -fn&/tfYV)6$,Y\dE>Af3q7NZd
%m1'E-JhEWGM6^S8 at KUXC**Mf0T]&tjAApg37[%,`ifnFc!WN\C:Jk/_r]7?J#Ob#<A[.Or[gkF8iflFN@[@D\ifl0C!T8jY.hp"I
%OV\G-)FBR=$PsVWJ;[&B$+RM+EHdYC\S1#fES>r<PLieXZ at K!`Rd-:f_$$'8<>B;c(Hnr^DP9m9]7iS>m/j:73\pe*[SuB(0qT!b
%<)XQ7$p.()4GcaEi[-!>'5IW>%7>3,6D;>@$Crrm.29q';[CX#A!%Se8_=4"n<dS0;;!OG*#J#W3X)rfkS2_<T0k`u1>=)hb*YhX
%_aS3:c:@*Lk:OrtCjFf<-i/f4GAqG@$95Nf0bn^JDF)?J/8DsXZ\=kr'UMB6PW;q"@a:*3Oe@?CpG9qTqj'6'fRDAKa>%JsIe]3h
%RbGd)YKTL`j"?BT/i7%YLj]#M17e"=.r.D<Rak)rFC[uPbcrp'2V_kMGlD8R)hQOmd8s$^#,cUA],GR4_4;#:>.E0Q;g$o%VITBt
%<,C3sMYdT_AJ,AP$<4>%co39>#3Y at pdo76'pqWFB at _Zo\LT)f,I\T&s2eY=l^c`pL9NNdq^J&kgGF+u2nLYD8.Haie;CmG$0f at 35
%10B:tl<>ULbAm,(o4&pYZj$tV4"R1:fU2lJ*B$_Om]eho^bQN`'[+/Yr6#ob_%VQh1DG#u!pMOumL0iX;Sc++h6mg-X(ci<^H``q
%_BSo$R7p9enQ"AO`=5EYS@<j8Khu:D]'S]@)S`/G]DE%,M()R[G(DEgqEAK-]=:kcPQK!\:241PRVl at 1;j0V at Kn7&q<V%dThrKUh
%Q20q\=K?^?FR?f`Ah/^SY&X*)AcVG_%KsBP95O. at P>)[5JH<W$dHsE99ZM"iZGJl31*BsGpX2?aS at A'L<nDF,-m2Yfac"MG8,)b%
%hnP,T.i9@=F^#i/5aHLc*%"$aZt;aqJ\03L\hYJo\0KBMOamgMZ7Km[+T]ZiQr&H?NSk2]<\.[0#dnZ/g+IX_3[tPJ?fsF*k>_jm
%`!VG8ZGB;SashDqQffkuIV$gcM=349oII7\:Z5To11uR4^A+!S8DCZMQ20r+=>s3o46k2"W/W.(1t1O5*_2_okd';!nj)du at a"ud
%FOTVq3_^""?r:nU0s]R9CIsmmi,TDd'<N)<s7USP]9;!ioaB&0S/24OKB:A&b9e;oJ-?cDO?deL@*fsSL%LcF7cWS(_mQMc.X(DO
%0*A=DZAW7u=KL8[/!`$-c1QdV>H\:uOg<N%L`hNm."WS]@aPaNbhI>LpQl:)F?+t^5j85=9ru_UJ=p[O7PLdUBlGO%XQMQePot_q
%QIA$SEh)qnkT81^JVl?l+hAilV0Jp^=I5a8d_c/+81EQ9U;t7RI>$B^%-gnufDF5JL*Xed<3?]P$oE`>=ZCNpQo`b09-*9QK>s'b
%XIL_3].?V*"0eR0!YgOjI&3oC;='P7EsNiGMQFilW8c#Af5TW-,T<hG'n35EaB1R3%QWcDOR6's9/uY$A!\`2&:Mi1?$nsk[Pn$`
%MKg0ZfWsE&^l4i@@1Q&(]:.G?>4-hB$9pFlfOR5M\M=_BMtsc5-0od\F+'%6*TdVt?tl]RdBjHkqfj>&AqIU4hN+Le[)[Q$`;A,0
%0K0XaDhh''mqCB_ep#DVL\XrC6Q9Lr4JP#Jhrsb%-Rp$XpK2'EBS?iFIjID_(Sn"giHlb(Kg,.S>R^nlJOk/Y7[1-blA2t#qab!^
%/-t+^B@;6d7IdW+h?%V'!*fU'52A#mhN7$eO0At_I/t7]8`lPT`&M^n-5$iG3PW+iM,C>g*!nV=rTHk.#N?S\$RVp*#aJKZ"C!BE
%<Yqi0+,N92Lfn-`1pYu`,2KgG'B*2MMTt&G8AY1t!spt,#/CL>iA[I:ohG[r&&2Hi/-J&9GGQQjYV&1NQK=@/C.C+2VJ=>l5U7\P
%+N)O5)LR't-lNO\7*JN8T5mU%Z/;J-Y<TT%3KqD-S4L<.<lsK0b[\S%B[GcX+>p"1?h>%,TMndmVO[kT_aR$<oG+ISL'*[u;rW)*
%#*D%[@2*=j\5n4c6L/Cj*\u:Q@[jrGNfXBt'FdXt95l)*rQShXG=<,NiZ:_.)f%2:E]eS?*D8[Mad6pF,jb[B,knqp5q["r)]1P#
%/olUu0G%rVF]-tZ*\cXdiJ_kALma10mhOPLCC>@96_em<WsdNU&[o at uY%JkiPE[H]fu.tSmiFR_L14C[Ee:'MO>!]$'/,0^3279C
%2X-m<Aj[-1OICpN-l1nZJ+lUG_fYkcG%f/m71:'P^uQj//>N%]ch76T!?<gu9ca?0?B@("S<E;egMiJ^L*5$5I#dQtMt)3)l4FFo
%"1pW'=fbJQJ4AE:Apo/;(eD7-^)JZ](d-3+CLE8?AA_.s-/Ig<cPNIh_tp>;G>$QC?l7T`>mlN#*B+P*E,H%(43XnNR+DhS<V_Kf
%%nu;[ZPEML"LGTQ#[Ku4S8Lk*`2F!.:5\3Dk53#_PMa386?1GkN8UoB8Im<=4&Z=%!b3s/R.!-![_n&iT-Ut8p1ok2%T<[hN5sFC
%-bSC7^;?#FKL:q!78rbn`Bc/@E!Au:2^+Arbeg6"G__]7F-t+ZILl0'+X`IYbU76+5.jJd36`l&$Jq'nWdI0Er'X5m3GchsLT,Yg
%l5nEHVW]35a-"#b"/S$.kZc;7X+594'Q=PO_T\<b"&8;tO at m"')]S<n6Z.J%JeV34h6?ViU7#;f_&l%U3FkakB?h^95r#*XcCMP"
%Ug%M]mZ\PHAIMHt&#@Hg0bZ>3`'einGL-mVY2]^A))LO0 at IA6^H0m;8ieE at PpPTA-a&%@C%?,Cke%_[i]\K'!EllLUa7Ho+5S&Ka
%+nbP at kca0[m(iO1[f[p1?cl.Mk/V_KU8E.2b72"Db'S*d?f3Gq_;'%5&hY?$"ZiG$mZG*>Lb23kAtp9jP$1n#bs::$8nOlo*i86Y
%h_udOAICL*YFs%#_ofr_:qn;fMZ+(I]B[$ed#MrmDZ(K4+5c;Tm*[:64A*ND)%E?n1R)ERY="IX+mNhYN.D5_2+jrG7DraX6#>R,
%d]jcr1?@S2Fm&FSr]R-k$L_`A_QrJBRej:,;f*E\4>7n:m_B]. at d4*m-,hS1gP\@3=GdMJ,S:*<8ks/<%t7jQPC_L/R@[+o8KWoH
%qJ.7VSD::U[>.srLX"@:1,Q>u\![+R*K5r`hI1:\N0YLH#Z"6b&\O#rEuuCPL)G]dalba&LJ8p$LLWREE=WL%m5f-XaZi88%We[+
%kI&3n'gQI=,T&O9a^M1u-,f;DhO'CLd3nZL]J2"B"P'lU<Q(HshLYr*9kcqk'u at T((\Itf4ingHP>YcH'"n>L._C;:W(H6,8Q>F^
%>=#Yg:/*L^e0KfD29B:,-D_B43i>o?5_D2l9hb\cibGi$A'1et)).=$K;LtGMmn87Nb"7:84]\T/iT":&=Mb%2AHOfc8[0&C,!Y(
%OW6,VUh>u;UW!h_mZ(I=nC=N_).r%X*TEjI6*=ie37&93QobS[mgc\qB7rB7Y32>,%U4rs\g1h'/O7<-]&*+!rQ/*m]acUZSj#KT
%BC.JGBR at sc`t5kgP+3&&ZJ3&&Ldb+JQsVqGf*9sap$e,&<'UK-,ZOeio2tcB^p9J&?Z]Q&G!]T4X358\\biY337LDgGs)$b"4/.=
%AGRhqI(\[-0rWDTTtF#?3FaZg,f\.l8HPY;'7$\,R"l,-&cK,lAd.U,9KcS`3FAm@'&'Q5TaT`2fur5DYR+tkGof;O*V$<+ECB at 8
%E_Hd&1"1LjG"?H]%$%GJBe]m4,,O3=^g#M2NL<J&@Yfl*V_sk0nGZgVlbb5Y<KlM!0pn??3,;EMgCA;K4F^jrm5Va:FcSKl2f*GF
%lTCZ;ZN[3A,SIq53,=L)*0/H/LZe.5(l&XCEVP1k at l>oZAB[,ahJmd%,RDd9c$@Na$o&6A>(QPdHZZ,H%QA3CGeGp9F`QprfJpO#
%XEJGM1 at F4B6]Ao1juD/#_;VLYgmWiqa5Ib!O:-iiR7n)L`&R[/%AjC%lKS_AA!jH8Tjuhc.[_:m`35:6<-n,)#B(hmJo6M2&0GYg
%[_fp4b=E&DG)4RcHSNaQdp\qG22hK;_N>'&)@a^JTTga!>cUN2&4!HP2SY7d"Cp<DS=-^(MYfDlX*t;=&JpA*B6q7-YgDHEL`a)G
%;(sI4pe?1(kQZ*QH=2[@)"tboAZZFOlPsa!ON@]])&kOd9(7q%51lC+Re*86KD*gtBJY<_03so7VF'])h<k)o$cPmN(S?38_7O%'
%IlIUA%W,n$;O^7OU'<6(TPg(,=DK\!l*f;%i)FU"C^=CM$Y0kg5%TSEfjWJ)BaUs'JtUYsAp&Y?=<"A\7N_Xs%>2A%YZ(KZF31VE
%kb+]-'E?<e7>_B+4U/6Z\>#%A[qIuHNKJmmUB46^7,Y]+2nClHqJa81$lUffIndL'VGrC:<D!C1Yqi=0(mOY4,Fa at XU/C;D>cbop
%M,<YOKD3Sn+aa`F/L+.qV-kK<R+GmHM&BGlM`T;=-!(D at Y_X<Ko9c#sV,=iGX2;.)JatMR;G:?&O>Gms7BT"?N>'M0e^V1aQ^b.*
%E<UOU'F^21qU7`V9#MF*#gZ0d4\J!37&lLOP8n_aN7JkX\&EIWnse7I^(.bW4:n=9?Qi6.Z7J%42k4sVJA;,OPme!t=Hb=t\F<V:
%A6H4p/ej_<6pUo`oE+:[VWr_+5b3H-3C4fHF(C=*Jb$+crDK_n?;#4Sg_.lG4)FVEK<XZ?kP?G%&slE8f=@FbGILsW/P*AP1^h&A
%G*M#%FV;)1EJ:>%anUj]Uei<PL#iu0mYasZ4B@?qM8c-NK6B=!@[".77l:C1J2l+!h1/cs$nJ<DWnAH2 at H3s5>!B*DGS!_B;$f6o
%NSp"bk_XlH4dN&_h:YfPe2q at CL*W"]r!kVVNg+V:HWZR(,7>eZXIm=kI6M;P_rf1e/00>.:V^[1]UIneLHJ<C0QD2,29(1jeQMP<
%6XIV>R.[C at Pba6q[*M)d_GF.]f4;_AJOitK$CoeLX*c>o9S<LB_Q,*@\'8IO>KlZ:O"8C.UTm_paF,[80Ia^SjP>2sBsE2MaX^%M
%ApKp#8_P:42N$:m0[@MT*3LDY(f#1Jh`3J#R?;T[TRErKFpMTjUmkgab\WGD/_+6hU7TRoXqRVL<0^(nN\!3F^#rPZE2PK!%1E`a
%&Oer0W=5$/nAgif,`"L;EiaKmYTRY4rt2D^g$!lK_W=1YOMFbgr`#QY/BVM/V^.cWrj0`1[!e$M=r+prE.pm'r$<PB:BCC.b_)a,
%a[%dc6PfAlCgdiEdU\:WVT^g.!`\bjAVla!j7anb&;]j_FK$U#Zd<gP",T^c3MRbWYZ:5Z=u?lqF!QO"mI1t[l#*<"[t$M9d$Te'
%+WqMh88$E-B>kQ-Tj;]9ku_ss7F$;/IYqhF-q:,f(98]5nXt'#JOjd,NQITj:,+nQ;-B!I6!R.6\C+hakPYu&3<W$^Q]1elTdU3M
%$g[,rLs.&9O9a^+33:"2Oen3`4)8tPD@/jBkuEcIYdsPI'iY&L,Fq3)B]-_+(T3L54^eUWA1adO!Du"U8?A"BZCFMNVcZ0/W+_7&
%<k[(O\&?PP$Y1AH@;"-K>4latcR?>V.]Q3_j0CGrE.L1CY6:1k%;[gH!^R(iMI')4@<R'%h]:i9("?lneUa&*A-Gm0WCp4.mN/\H
%=b/Z2G;.YCdRn.Vb[t=km',1;-PfKcm9m[eL7.VJguh*l6*pRc=G]dUZYCM3aET:6'iqtFJ7Or at N-Y_J0dm165S:IRYZRr71/uMb
%gtNWS7Y!>+^oF2!YtP3LF:AkYF@(iO>Y2o,cNakb'tftiF*0khAo%4LC.m.X.JAet&4DIBe3'UZ!GS7L at GsL0TSSZfp>W<*:f5u+
%"/RfQk('X+i9+5<CEPP?:"5Q9D\\#X3CfNohQtW``p/DL"&6AiccqgFo8N-BCukE0DU;qa[$kDSYRqoDh248(R3B;"g4^N at l?3,<
%_^[fD(l4%iUp?4#71o#6)01q^#0KYUeKrd(`^+F46ct?R1+_ZQNP_Nl-j\Ln*,R\/gjYjabj%][[$*Fe/6i`-cI at M@=h]K$@XG1L
%m811Q_8r5h<$W90l++]jlR04^a?BN4L$cuXiltu"pm`YQiF6s+/S5C;=R,@&#;]hjmg__01bO?AZ at Q9,Jn2ai*R#pWR]Vn[D><s9
%n.C'U.5ImeZa<a_!3N7Y&>t_aPj(_q7BUKV$3H#CnFb%F at lMNY;+O0>>Z]f9MQZ$[Q:HH<E+?8/A48#>pLhp`O<3Y`>/O<RhhZjH
%r:2]^?<?^uR]R)iU`)OqEu9Ku,g"baChcmS0aTHMFPJg^%9F5kZ'Z:<`7"3ki^#A$2dW^],I<AN'8qnTdDm3C/:fKuM<ClGd,/YS
%=A4,(&S!ri^gsBk#3j3,SG^0Ua at DLb5VAoHi_NIS6=P(H=\3HCn*cogBPobX-YadJ0eOlf%=mr/,Qa_r+GJbu+LP)N,o28qZZ:2>
%8PoTI;p(S=D-3Gq5_Hi269`-6&QY(s5+3XtDia/G2r)\gRUXHE0fAWW<3d]_gF8:+SnN1 at qOiRk%>uV`)"Z]^LflM at 8Q_3&StI0r
%6o]fNpn@"-r[7e&;SR>-9'-3tHI!iX2:7G\6p'M+V at ++\^mM\i:3^7 at ZJ8+\!0R+-;gK"L at qSCE$Vg3jkR"JelSp(eH2oJ4G=*uF
%'#$`_R>=0 at oZrok!63_II[NNJdW=):T'jT=kFkbu*]q@!l+3TlDNBlYa>?KY9\kdOB/,BWLl_NhL_'2>LH0Beh]:i#'r[7f_ at WEG
%Q1a6KeC#;gV#E"I'd6:ddK!\cgS&=c2jTZSaC'Z6*W40BjWPVNA('p(F6qBo<jco#]P\[_,[RFU'9/T$5nKlV<bo"YD"?/$LUdSV
%Kb6)SCQeY4a=;`<_-i3WH"O96.ND`?AI=4U4G;iZ)1]kM0Tb-E at UaLR=tIOF<i+08$rei?UH\sDP]*6m&L#hU0ocHQ.-7fC5Lf.Y
%f?2;cWZ5*HHU>Or&c<+XnX[D_k, at AcnHeQ!4HVSJ7Xq4)g\DIo=c"pe04BVR3MgE%dM?nP28OVE):=Y0%HLj3$"]]q%!Q5jc8WQV
%S-X\+b2G``Q2/(C*273"NVt,XG$pL-haAfj^6&+-V6d\t!i<IF.1^:SBG-i.JQt$Xj=gp&83ra\P:@<B0-X`VcngS^Ne!@&@:rO_
%C(#rk at H7O>obl7d_tQ7:n3l?_)J]F#*,Ypk-qWTGbE(Z,%/B<oeT/ZIcf%8*hHDU^/do$@AlGpZ%#),.o^EWQpdqRZ-!].\hPQ=U
%7g$@:92/b#Z_QUF at b5#+idNQi'GM8XhQUoQX_pj$-&E^``TlJ,X\f^o+0_"H]fsfg at GdMoYFSjg`Q:7gjjhPf-P6(tnWHh$+Vs4O
%]\!<AKYP[C2Y&DI[rV<-"H]^ffcg(Y3b,,&$+WRK\'V&_&[]K9PC)[.MpJ\.%Grd at YEsEkLT<"TdsCQmf!ba*f?uSf[GG>iQu9Uq
%H_PEa^:(QSg[j6UG`XQQ*jAQmE&\plY[!F).?T2&f*d>f)_jH`&?'Jb?o6Y![l<'H"Oh=:"-I=7_sQiQl1T:fUGWL]mLG_E#APQp
%b%"kMip$1AV at ob.m1Lj@1\>]UeQi$LJGHm8`A=W3f!40jUu.XIK2U4fm==0iG*(JTB+8CC7!u%4L"<X%nb\;da:q"K8s6B"LdB8d
%e&pi-[EW]a4J)E.,bVU6C#hWqMo`*i=fXo"8o:5X9HtXaS39SfTLnikVKFce4\tje`T.<b0.MP>P9m/L>cL(@\e2T7cQUcWk:j12
%@2r=PRcZ][_<PE?jNDXC[`c/&&qN'&Hk)Q65)6+$Q\2V;Eam:C:Z]$Qlrq8]O]!BQL=?F'goW=N8BAb5[=H=g&Vff"r8_KKK+G[?
%'2W/ojS59B*UeX.9u>Y%kV-<^;eQ8si9VnQT*X=@]&Vt`GGi[19X7d\"qX<P'egV^FqWV at iWK`=`aa6%1"WIQPO3C=^eQK%D"@CY
%]HOTHLipTaJ;AX6h2qEVQ%@aSG+.tVqsL]ApQq6Hg4)=M8!o?Es7Go\O*>t0]tOF<mC0:V^;#-lqQDRPq#0mK?U+S^]6lsDbcoX1
%ht1iZIMj_?lKG28\,GghqtI:4d[HJugA[_,s8M[MC&/'`8uM^`Dm+ZecgTb?rUTdW%j+"5q0)YegWs6AJ&K:\kMF8"L&Ud3^-;R`
%0E9rhirAeoQQL\OO,ontrVbKk?gjW$]mThXj8XLQrV5I^`q]11s3'`kDkDLYrq5$DfAHW(om_Pb/u/4Q5Q'X#IsUoTqW01i~>
%AI9_PrivateDataEnd
\ No newline at end of file
diff --git a/doc/tutorial/CMakeLists.txt b/doc/tutorial/CMakeLists.txt
index df71a6e..c6c471b 100644
--- a/doc/tutorial/CMakeLists.txt
+++ b/doc/tutorial/CMakeLists.txt
@@ -1,7 +1,7 @@
#
# $I$
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt
index 2db6b14..441a9f9 100644
--- a/share/CMakeLists.txt
+++ b/share/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/share/conf/CMakeLists.txt b/share/conf/CMakeLists.txt
index 45a3587..6b612d3 100644
--- a/share/conf/CMakeLists.txt
+++ b/share/conf/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/share/mgd77/Dst_all.wdc b/share/mgd77/Dst_all.wdc
index 9006c51..d0b5b92 100644
--- a/share/mgd77/Dst_all.wdc
+++ b/share/mgd77/Dst_all.wdc
@@ -20572,368 +20572,1313 @@ DST1305Q28 000-029-029-027-028-026-022-022-022-019-022-019-016-014-016-014
DST1305Q29 000-016-014-012-009-008-009-008-010-010-010-011-012-012-013-012-011-013-013-011-010-012-014-014-013-012
DST1305Q30 000-011-011-009-006-007-007-008-007-006-006-005-004-001-002-004-004-003-001-003-004-006-007-009-009-006
DST1305Q31 000-005-001 002 006 007 002 003 007 007 004 005 003 006 005 007 007 017 023 020 016 013 010 009 007 008
-DST1306*01RRX020 0 21 9 -32 -68 -99-106-102-116-119 -98 -85 -79 -80 -81 -71 -65 -65 -61 -55 -50 -50 -47 -44 -37 -66
-DST1306*02RRX020 0 -35 -38 -33 -45 -46 -45 -46 -39 -34 -33 -36 -39 -35 -33 -39 -38 -37 -31 -30 -35 -36 -32 -24 -25 -36
-DST1306*03RRX020 0 -24 -26 -29 -30 -31 -26 -22 -18 -19 -20 -23 -25 -24 -22 -23 -19 -18 -17 -16 -16 -18 -18 -14 -18 -22
-DST1306*04RRX020 0 -16 -21 -23 -21 -22 -21 -19 -22 -18 -14 -15 -21 -21 -21 -22 -21 -20 -17 -13 -11 -11 -6 -3 -2 -17
-DST1306*05RRX020 0 -7 -6 -5 -7 -15 -18 -14 -9 -8 -8 -9 -9 -8 -5 -7 -7 -8 -10 -13 -15 -16 -16 -17 -18 -11
-DST1306*06RRX020 0 -19 -18 -17 -12 -10 -6 -6 -10 -15 -11 -10 -12 -14 -18 -17 -8 -15 -12 -18 -32 -41 -50 -57 -54 -20
-DST1306*07RRX020 0 -57 -63 -71 -62 -71 -73 -68 -68 -51 -47 -44 -36 -39 -41 -39 -42 -40 -34 -32 -29 -26 -24 -20 -18 -46
-DST1306*08RRX020 0 -17 -20 -21 -20 -16 -18 -12 -14 -6 -2 -4 -12 -11 -12 -13 -15 -14 -11 -8 -9 -10 -9 -8 -9 -12
-DST1306*09RRX020 0 -7 -7 -1 0 2 5 4 4 5 5 4 3 5 2 -3 -9 -12 -16 -7 -5 -3 -4 -5 -4 -2
-DST1306*10RRX020 0 -3 -7 -11 -10 -14 -13 -10 -9 -6 -8 -5 -6 -7 -8 -5 -8 -4 -3 -2 -6 -8 -9 -8 -6 -7
-DST1306*11RRX020 0 -4 -2 -2 -3 -5 -5 -5 -2 -2 -3 -3 0 -4 -3 -9 -11 -11 -10 -13 -11 -9 -9 -7 -6 -6
-DST1306*12RRX020 0 -9 -8 -4 -5 -8 -7 -7 -9 -8 -8 -7 -5 -4 -5 -8 -7 -5 -5 -3 -2 -2 -4 -3 -4 -6
-DST1306*13RRX020 0 -9 -11 -7 -3 0 0 2 2 0 -1 0 2 0 -2 -4 -5 -3 -2 -2 0 0 0 -1 0 -2
-DST1306*14RRX020 0 2 2 2 1 0 0 -1 -1 0 1 5 5 7 10 11 11 11 11 9 6 5 6 3 -1 4
-DST1306*15RRX020 0 -1 5 7 9 10 14 15 9 6 5 3 1 -2 -4 -5 -4 -2 -2 1 3 1 -1 -2 -1 3
-DST1306*16RRX020 0 1 3 7 8 8 7 5 6 6 7 6 7 8 7 5 5 3 1 -1 -1 1 4 7 8 5
-DST1306*17RRX020 0 9 9 5 3 0 0 -1 -2 -1 -1 -2 0 -2 -4 -4 -4 -3 1 2 3 4 5 7 14 2
-DST1306*18RRX020 0 15 13 7 -1 -8 -10 -7 -5 -4 -3 -5 -6 -7 -6 -8 -8 -9 -9 -9 -8 -6 -7 -4 6 -4
-DST1306*19RRX020 0 16 10 4 -1 0 2 1 3 5 6 5 3 -1 -2 -4 -3 -1 1 3 2 0 2 6 11 3
-DST1306*20RRX020 0 10 -2 -4 -4 -5 -5 -2 1 3 8 7 10 9 3 -4 -7 -7 -4 0 -2 -5 -7 -2 -4 -1
-DST1306*21RRX020 0 -6 -15 -18 -12 -13 -13 -14 -12 -12 -10 -12 -11 -10 -10 -11 -8 -3 0 0 -4 -9 -21 -19 -16 -11
-DST1306*22RRX020 0 -11 -15 -14 -15 -13 -14 -14 -14 -14 -13 -18 -20 -18 -17 -17 -18 -17 -20 -19 -23 -27 -24 -21 -16 -17
-DST1306*23RRX020 0 -14 -14 -14 -16 -15 -14 -19 -12 -12 -23 -28 -27 -21 -17 -20 -21 -21 -24 -20 -20 -18 -23 -32 -33 -20
-DST1306*24RRX020 0 -28 -22 -21 -23 -27 -28 -20 -15 -14 -23 -29 -31 -31 -24 -22 -26 -26 -28 -31 -39 -35 -41 -45 -49 -28
-DST1306*25RRX020 0 -44 -35 -35 -35 -30 -25 -23 -21 -17 -15 -21 -24 -25 -23 -21 -18 -15 -10 -10 -13 -16 -17 -14 -14 -22
-DST1306*26RRX020 0 -14 -15 -10 -7 -5 -3 -2 -1 -2 -4 -6 -8 -8 -6 -6 -4 -6 -9 -5 -7 -10 -12 -14 -14 -7
-DST1306*27RRX020 0 -14 -13 -9 -8 -10 -10 -7 -6 -6 -7 -10 -12 -10 -9 -3 7 4 2 5 1 0 1 0 2 -5
-DST1306*28RRX020 0 9 6 -3 -1 -9 -13 -11 -10 -9 -8 -12 -15 -21 -27 -32 -32 -41 -43 -48 -54 -62 -71 -77 -87 -28
-DST1306*29RRX020 0 -92 -97 -96 -93 -94 -95 -98 -95 -96 -87 -94 -75 -87 -79 -71 -71 -70 -71 -62 -61 -64 -56 -44 -41 -79
-DST1306*30RRX020 0 -44 -48 -42 -38 -39 -35 -33 -31 -29 -30 -30 -29 -31 -29 -28 -29 -29 -29 -31 -30 -34 -36 -37 -38 -34
-DST1307*01RRX020 0 -29 -30 -31 -27 -25 -25 -25 -24 -22 -22 -20 -18 -17 -17 -17 -17 -19 -19 -19 -16 -15 -13 -9 -8 -20
-DST1307*02RRX020 0 -7 -8 -10 -10 -9 -7 -6 -6 -9 -10 -9 -8 -8 -6 -6 -7 -8 -7 -4 -3 -2 -1 -1 1 -6
-DST1307*03RRX020 0 0 -5 -6 -7 -6 -5 -3 -1 -3 -3 -2 -4 -3 -4 -4 -4 -3 -1 -3 -5 -4 -1 4 4 -3
-DST1307*04RRX020 0 1 -1 0 0 1 0 2 4 6 7 8 8 8 8 5 3 4 7 13 18 21 20 21 16 8
-DST1307*05RRX020 0 9 7 9 8 4 -8 -14 -12 -11 -8 2 12 10 12 6 6 9 13 20 13 0 -1 3 5 4
-DST1307*06RRX020 0 -1 -15 -27 -38 -43 -48 -57 -63 -68 -69 -68 -67 -67 -69 -71 -69 -76 -75 -79 -77 -75 -73 -70 -59 -59
-DST1307*07RRX020 0 -41 -40 -37 -34 -28 -24 -20 -18 -18 -16 -14 -13 -12 -11 -10 -9 -7 -4 -7 -11 -11 -10 -10 -9 -17
-DST1307*08RRX020 0 -8 -8 -8 -7 -7 -9 -14 -12 -9 -7 -7 -6 -6 -4 1 0 -1 -1 0 2 3 1 -1 0 -5
-DST1307*09RRX020 0 2 4 6 8 8 9 9 9 6 5 9 11 13 15 11 7 5 7 4 4 8 23 17 12 9
-DST1307*10RRX020 0 10 7 -5 -11 -21 -31 -37 -41 -42 -40 -39 -44 -39 -32 -40 -45 -44 -42 -44 -41 -43 -47 -45 -36 -33
-DST1307*11RRX020 0 -26 -26 -27 -19 -18 -23 -28 -36 -29 -32 -34 -35 -36 -38 -38 -38 -33 -35 -35 -38 -34 -32 -28 -25 -31
-DST1307*12RRX020 0 -19 -16 -14 -19 -22 -21 -18 -15 -15 -15 -17 -13 -13 -9 -10 -9 -10 1 1 -3 -8 -7 0 0 -11
-DST1307*13RRX020 0 -6 -10 11 9 2 2 -1 3 2 0 5 4 5 5 6 9 9 7 2 -5 -14 -18 -19 -20 -1
-DST1307*14RRX020 0 -20 -25 -27 -24 -23 -26 -28 -22 -21 -29 -34 -36 -29 -38 -44 -50 -51 -56 -61 -58 -60 -68 -72 -72 -41
-DST1307*15RRX020 0 -66 -52 -45 -46 -43 -41 -35 -39 -43 -40 -37 -40 -42 -44 -45 -47 -43 -40 -35 -28 -25 -27 -25 -22 -40
-DST1307*16RRX020 0 -18 -16 -18 -19 -20 -18 -16 -15 -16 -16 -14 -15 -16 -12 -11 -12 -14 -14 -14 -11 -13 -12 -8 -5 -14
-DST1307*17RRX020 0 -4 -4 -1 0 0 -1 0 4 7 9 11 11 9 8 6 7 10 12 13 16 16 11 9 8 7
-DST1307*18RRX020 0 8 8 8 8 9 12 16 15 18 20 18 19 16 24 24 16 15 14 12 3 1 -2 -2 1 12
-DST1307*19RRX020 0 3 3 -1 -10 -11 -12 -6 -6 -11 -14 -10 -8 -4 -8 -11 -10 -11 -16 -12 -8 -7 -9 -7 -7 -8
-DST1307*20RRX020 0 -3 -6 -1 0 0 0 1 1 -1 -1 1 -1 0 2 2 1 0 0 0 -3 -6 -6 -3 -2 -1
-DST1307*21RRX020 0 1 5 7 8 6 7 7 7 6 4 3 4 7 7 5 9 8 3 1 1 0 3 5 6 5
-DST1307*22RRX020 0 7 7 7 7 8 10 14 14 13 13 14 14 12 12 12 14 13 13 9 8 6 4 7 7 10
-DST1307*23RRX020 0 10 9 4 3 4 6 8 10 9 7 6 3 -1 1 3 7 8 6 5 3 0 -3 -5 -1 4
-DST1307*24RRX020 0 0 -2 -2 -3 -3 0 5 7 8 9 11 10 7 5 6 7 5 3 0 -3 -4 -3 0 2 3
-DST1307*25RRX020 0 5 7 10 12 12 10 7 6 6 7 12 13 17 21 22 24 24 27 16 13 12 3 7 3 12
-DST1307*26RRX020 0 -8 -9 -2 -1 -8 -8 -1 1 -2 -3 0 1 -1 -5 1 1 -2 -1 -4 -11 -13 -14 -11 -8 -5
-DST1307*27RRX020 0 -7 -7 -5 -7 -4 -4 -2 -1 -1 -1 1 5 7 7 7 10 6 3 -6 -7 -6 -5 -6 -11 -1
-DST1307*28RRX020 0 -11 -10 -14 -16 -13 -10 -5 -7 -8 -8 -4 0 3 3 2 0 0 0 -1 -2 -7 -9 -9 -7 -6
-DST1307*29RRX020 0 -4 -2 1 3 2 -1 1 2 1 1 3 7 7 5 3 5 5 5 5 7 9 10 11 12 4
-DST1307*30RRX020 0 13 13 10 7 1 3 4 3 5 7 6 4 3 -1 -3 -1 -2 -4 -9 -10 -11 -8 -6 -2 1
-DST1307*31RRX020 0 0 0 2 1 -1 1 3 5 5 4 5 3 6 8 8 5 6 4 2 3 3 3 6 6 4
-DST1308*01RRX020 0 0 -1 -2 0 2 0 -1 -3 -4 -5 -5 -3 -1 0 5 8 7 14 17 18 16 14 14 13 4
-DST1308*02RRX020 0 13 12 10 9 10 11 10 8 9 8 9 9 7 6 9 11 11 11 12 12 10 10 9 4 10
-DST1308*03RRX020 0 4 3 3 6 10 12 11 13 13 11 11 11 10 10 12 14 13 16 15 11 10 8 5 10 10
-DST1308*04RRX020 0 12 9 8 11 18 24 24 17 10 7 15 17 13 13 12 22 10 -22 -19 -19 -28 -34 -39 -32 2
-DST1308*05RRX020 0 -35 -42 -44 -44 -39 -35 -29 -27 -32 -34 -30 -28 -22 -21 -22 -21 -22 -20 -14 -13 -20 -25 -27 -30 -28
-DST1308*06RRX020 0 -34 -32 -27 -25 -22 -18 -18 -18 -17 -16 -13 -11 -10 -10 -9 -8 -7 -4 -6 -9 -12 -17 -18 -17 -16
-DST1308*07RRX020 0 -17 -18 -16 -13 -10 -7 -6 -5 -4 -4 -4 -3 -1 1 -1 -2 -2 -3 -5 -8 -10 -10 -11 -11 -7
-DST1308*08RRX020 0 -11 -11 -12 -8 -5 -1 -1 -4 -6 -8 -7 -4 -2 -1 0 0 -1 -3 -3 -3 1 5 0 -2 -4
-DST1308*09RRX020 0 -1 -4 -3 5 10 8 10 10 13 14 13 11 6 10 16 16 12 10 11 9 9 4 4 -1 8
-DST1308*10RRX020 0 -2 -1 -5 -3 2 5 6 4 5 4 5 10 13 11 5 9 10 14 17 18 17 16 14 10 8
-DST1308*11RRX020 0 5 2 7 7 5 8 9 10 11 10 9 10 9 9 8 7 5 4 4 6 8 7 5 -1 7
-DST1308*12RRX020 0 -2 2 6 9 14 15 15 14 13 14 14 13 13 10 10 15 11 13 12 11 11 9 6 3 10
-DST1308*13RRX020 0 3 3 1 1 5 10 12 12 14 12 7 10 16 20 21 25 17 2 -2 2 4 -1 -3 -2 8
-DST1308*14RRX020 0 -6 -10 -19 -22 -20 -13 -11 -5 -3 -3 -2 1 0 -2 -2 0 4 12 10 8 7 -2 -9 -14 -4
-DST1308*15RRX020 0 -20 -23 -22 -16 -11 -5 -2 3 0 -9 -19 -16 -5 -1 -3 -4 -8 -9 -4 1 -4 -11 -19 -19 -9
-DST1308*16RRX020 0 -12 -16 -18 -25 -35 -30 -20 -23 -30 -31 -26 -21 -26 -27 -28 -26 -27 -25 -25 -21 -20 -20 -21 -23 -24
-DST1308*17RRX020 0 -20 -18 -18 -16 -18 -17 -16 -12 -10 -12 -12 -13 -14 -17 -18 -17 -14 -13 -12 -13 -15 -16 -13 -10 -15
-DST1308*18RRX020 0 -7 -6 -6 -8 -8 -6 -6 -8 -8 -5 -4 -3 -7 -8 -7 -5 -4 -9 -13 -16 -15 -12 -8 -6 -8
-DST1308*19RRX020 0 -5 -6 -6 -3 0 2 3 3 3 1 0 1 -2 -5 -7 -9 -8 -7 -8 -6 -6 -7 -6 -5 -3
-DST1308*20RRX020 0 -3 -2 -1 1 2 2 1 2 2 2 3 3 1 -1 1 4 6 8 11 15 15 17 26 35 6
-DST1308*21RRX020 0 27 28 27 9 -9 -20 -19 -9 -7 -9 -8 -12 -15 -15 -8 -4 1 9 10 -7 -8 -17 -15 -10 -3
-DST1308*22RRX020 0 -8 -7 -12 -10 -4 -4 -10 -12 -8 -8 -11 -10 -14 -12 -11 -11 -13 -12 -11 -5 -7 -10 -14 -23 -10
-DST1308*23RRX020 0 -27 -31 -34 -25 -20 -21 -21 -17 -16 -17 -19 -20 -17 -17 -20 -21 -20 -20 -18 -17 -15 -16 -16 -19 -20
-DST1308*24RRX020 0 -16 -13 -12 -9 -5 -1 -1 -1 -5 -8 -10 -10 -12 -12 -16 -16 -12 -11 -10 -13 -15 -17 -16 -18 -11
-DST1308*25RRX020 0 -16 -15 -11 -6 -4 -6 -9 -13 -15 -16 -12 -14 -18 -19 -18 -19 -18 -19 -20 -20 -21 -20 -21 -23 -16
-DST1308*26RRX020 0 -21 -18 -16 -13 -9 -8 -8 -5 -5 -1 -1 -1 -5 -5 -4 -1 -3 -4 -2 1 -1 -1 0 -4 -6
-DST1308*27RRX020 0 -8 -13 -12 -9 -6 -4 -1 2 3 4 0 -9 -15 -15 -6 4 6 -1 -24 -37 -51 -54 -46 -47 -14
-DST1308*28RRX020 0 -44 -44 -49 -49 -44 -37 -35 -29 -22 -22 -22 -21 -21 -23 -24 -22 -21 -18 -19 -21 -22 -21 -21 -21 -28
-DST1308*29RRX020 0 -18 -14 -12 -12 -10 -7 -6 -5 -4 -4 -6 -6 -5 -4 -6 -8 -9 -8 -9 -8 -7 -7 -6 -6 -8
-DST1308*30RRX020 0 -4 -2 0 3 5 5 5 7 9 14 15 9 6 7 11 13 9 6 2 -5 -7 -4 -10 -26 3
-DST1308*31RRX020 0 -33 -35 -37 -32 -23 -16 -16 -26 -35 -30 -26 -20 -21 -26 -27 -24 -23 -20 -19 -18 -16 -9 -9 -11 -23
-DST1309*01RRX020 0 -17 -15 -12 -13 -14 -16 -16 -19 -15 -10 -10 -11 -13 -18 -21 -24 -20 -20 -21 -24 -29 -31 -29 -26 -19
-DST1309*02RRX020 0 -24 -20 -15 -11 -10 -21 -20 -17 -19 -23 -23 -21 -18 -20 -23 -24 -21 -21 -22 -21 -19 -16 -17 -14 -19
-DST1309*03RRX020 0 -9 -3 4 8 9 7 1 0 3 -5 -7 -10 -12 -11 -12 -10 -4 -1 -1 -4 -6 -7 -13 -20 -4
-DST1309*04RRX020 0 -15 -8 -5 -2 -1 -3 -4 -6 -5 -2 -3 -10 -13 -9 -7 -6 -2 1 2 0 -3 -9 -11 -10 -5
-DST1309*05RRX020 0 -5 0 0 2 3 3 2 2 2 2 -1 -2 0 2 2 3 3 3 3 2 -3 -10 -13 -9 0
-DST1309*06RRX020 0 -8 -3 -1 -3 1 1 3 2 0 -1 -3 -1 -1 2 2 0 -3 -4 -6 -10 -13 -19 -21 -20 -4
-DST1309*07RRX020 0 -14 -10 -9 -7 -5 -7 -9 -6 -4 -5 -5 -3 0 1 2 2 2 2 3 4 2 1 -1 0 -3
-DST1309*08RRX020 0 1 8 6 0 7 8 5 -1 -2 -3 -5 -9 -11 -11 -8 -6 -5 -4 -2 -1 -4 -6 -10 -13 -3
-DST1309*09RRX020 0 -14 -13 -11 -10 -7 -7 -6 -7 -4 -4 -9 -9 -8 -6 -5 -4 -3 2 6 6 3 1 -3 -6 -5
-DST1309*10RRX020 0 -7 -9 -8 -6 -1 0 2 2 1 -3 -7 -8 -3 -1 -4 5 4 5 3 3 -5 -12 -11 -7 -3
-DST1309*11RRX020 0 -4 -3 1 4 5 3 2 -1 -4 -4 -4 -1 -2 0 0 -2 -5 -5 -5 -1 1 2 -1 -3 -1
-DST1309*12RRX020 0 -2 0 5 6 4 0 -5 -7 -8 -5 -2 2 2 6 8 6 10 13 11 10 2 -8 -9 -11 1
-DST1309*13RRX020 0 -9 -5 -2 -1 0 -1 -1 -3 -4 -1 1 0 -4 -1 1 3 2 3 1 -7 -8 -7 -7 -7 -2
-DST1309*14RRX020 0 -6 -7 -5 -6 -4 -5 -7 -7 -7 -6 -5 -4 -6 -2 -2 -3 -1 1 -1 -2 -2 -2 -4 -7 -4
-DST1309*15RRX020 0 -8 -6 -4 -2 -1 0 0 0 2 2 2 1 -1 1 3 2 2 3 2 1 0 -2 -5 -6 -1
-DST1309*16RRX020 0 -5 -7 -8 -6 -7 -5 -6 -6 -5 -2 -1 -1 -3 -4 -3 -4 -3 -2 -2 -2 -4 -5 -5 -3 -4
-DST1309*17RRX020 0 2 5 3 2 -4 -12 -10 -13 -10 -11 -11 -8 -9 -6 1 7 6 5 8 12 7 -4 -7 -9 -2
-DST1309*18RRX020 0 -10 -5 -1 -2 -1 -1 0 2 2 4 3 7 8 15 12 9 3 5 9 1 -5 -6 -10 -12 1
-DST1309*19RRX020 0 -9 -7 -9 -10 -13 -19 -17 -15 -17 -12 -12 -13 -18 -13 -10 -9 -8 -10 -12 -13 -17 -18 -19 -15 -13
-DST1309*20RRX020 0 -9 -3 -1 -4 -7 -10 -12 -16 -14 -12 -14 -12 -13 -11 -8 -5 -4 -4 -2 -3 -5 -10 -10 -10 -8
-DST1309*21RRX020 0 -10 -13 -15 -10 -6 -4 -3 -4 -7 -6 -3 1 2 -1 -1 -2 -4 1 1 0 -3 -4 -8 -8 -4
-DST1309*22RRX020 0 -9 -7 -8 -7 -10 -8 -5 -7 -9 -8 -7 -5 -4 -5 -6 -7 -8 -2 1 3 0 -2 -5 -7 -6
-DST1309*23RRX020 0 -7 -8 -8 -7 -4 -6 -4 -3 -2 -4 -2 0 -1 -2 -1 -1 3 6 6 5 2 0 -4 -9 -2
-DST1309*24RRX020 0 -10 -11 -11 -7 -3 -1 0 2 6 13 7 -13 -24 -13 -21 -21 -20 -14 -11 -11 -15 -21 -24 -24 -10
-DST1309*25RRX020 0 -22 -16 -14 -10 -12 -12 -11 -13 -12 -12 -12 -10 -10 -8 -7 -6 -3 0 0 -3 -7 -7 -10 -13 -10
-DST1309*26RRX020 0 -14 -11 -8 -6 -5 -5 -4 -4 -4 -4 -5 -3 -1 0 1 -2 -4 -5 -4 -4 -5 -5 -2 0 -4
-DST1309*27RRX020 0 2 3 3 3 4 5 4 3 2 1 1 1 2 -1 -3 -2 -3 -2 0 1 -1 0 1 2 1
-DST1309*28RRX020 0 3 4 3 1 0 -1 -1 -2 -3 -3 -3 -2 -2 -2 -2 0 1 1 0 -1 0 4 6 5 0
-DST1309*29RRX020 0 5 5 5 3 2 1 2 3 4 5 6 4 4 3 3 5 6 5 5 7 11 9 8 10 5
-DST1309*30RRX020 0 7 4 5 6 6 3 2 3 4 1 -1 0 0 1 -1 -1 0 3 5 6 5 7 6 7 3
-DST1310*01RRX020 0 12 14 17 15 18 19 20 23 23 24 23 18 17 13 15 7 11 19 19 12 8 1 -4 -6 14
-DST1310*02RRX020 0 -2 0 30 -7 -16 -35 -65 -67 -61 -55 -58 -56 -61 -58 -54 -51 -45 -39 -39 -44 -47 -51 -51 -44 -41
-DST1310*03RRX020 0 -44 -50 -49 -47 -47 -45 -43 -40 -35 -33 -32 -30 -29 -28 -26 -21 -16 -12 -11 -11 -20 -22 -24 -24 -31
-DST1310*04RRX020 0 -23 -19 -15 -14 -15 -14 -14 -16 -15 -15 -14 -16 -16 -17 -17 -15 -14 -14 -13 -11 -11 -11 -9 -11 -15
-DST1310*05RRX020 0 -12 -12 -11 -8 -8 -11 -10 -9 -8 -8 -9 -9 -9 -9 -8 -9 -8 -8 -9 -9 -8 -6 -5 -2 -9
-DST1310*06RRX020 0 -6 -6 -3 -4 -3 -1 0 1 0 -2 0 2 1 1 0 -1 -1 2 0 -2 -4 -7 -7 -5 -2
-DST1310*07RRX020 0 -3 1 5 -1 -6 -8 -10 -10 -9 -10 -9 -7 -6 -7 -9 -7 -8 -8 -10 -11 -7 -7 -7 -9 -7
-DST1310*08RRX020 0 -9 -8 -6 -9 -7 -2 0 0 -1 -1 -2 -3 -6 -5 2 8 11 13 14 9 21 13 -30 -17 -1
-DST1310*09RRX020 0 -62 -65 -56 -62 -55 -50 -49 -45 -40 -29 -28 -38 -39 -36 -26 -15 -17 -23 -26 -24 -20 -5 -7 -8 -34
-DST1310*10RRX020 0 -23 -33 -28 -28 -36 -38 -34 -28 -24 -21 -23 -25 -26 -24 -23 -22 -20 -19 -19 -19 -18 -20 -15 -16 -24
-DST1310*11RRX020 0 -20 -22 -20 -21 -23 -21 -19 -21 -20 -19 -19 -17 -15 -10 -8 -8 -7 -6 -2 -6 -7 -7 -7 -9 -14
-DST1310*12RRX020 0 -9 -10 -10 -11 -12 -11 -9 -6 -5 -5 -5 -4 -2 0 3 6 7 5 2 2 1 2 0 -7 -3
-DST1310*13RRX020 0 -7 -6 -4 -5 -4 -2 0 3 6 7 6 3 0 0 -1 0 3 6 6 6 5 4 0 -5 1
-DST1310*14RRX020 0 -6 -5 -6 -11 -12 -7 -6 -3 1 8 -3 -15 -13 -4 -7 -16 -21 -23 -23 -36 -39 -37 -35 -38 -15
-DST1310*15RRX020 0 -38 -42 -38 -45 -41 -40 -37 -34 -26 -22 -22 -23 -26 -21 -20 -21 -20 -16 -14 -13 -12 -12 -10 -15 -25
-DST1310*16RRX020 0 -19 -20 -19 -26 -28 -23 -21 -23 -22 -21 -21 -18 -15 -12 -11 -12 -18 -17 -17 -11 -7 -6 -6 -9 -17
-DST1310*17RRX020 0 -10 -11 -12 -12 -12 -16 -18 -17 -17 -19 -18 -17 -18 -13 -13 -15 -18 -19 -17 -16 -13 -10 -12 -12 -15
-DST1310*18RRX020 0 -9 -9 -10 -13 -14 -13 -12 -14 -14 -12 -11 -11 -10 -6 -5 -4 -4 -6 -7 -5 0 -2 -2 -2 -8
-DST1310*19RRX020 0 -2 -3 -2 -3 -3 -1 0 -1 -1 -1 -2 0 0 1 0 -1 -3 -4 -3 -3 -4 -4 -3 -1 -2
-DST1310*20RRX020 0 2 3 2 -2 -3 -2 -2 -1 0 3 3 3 2 3 3 2 1 -1 0 -1 -1 0 2 3 1
-DST1310*21RRX020 0 4 3 3 0 -1 0 1 1 2 3 5 6 8 10 12 11 10 10 12 13 13 11 10 10 7
-DST1310*22RRX020 0 11 13 14 17 18 19 17 16 14 15 16 16 17 15 11 7 8 11 10 10 12 9 6 4 13
-DST1310*23RRX020 0 4 2 2 0 -1 -3 -7 -10 -5 -4 -6 -2 2 5 8 6 5 6 5 6 8 7 5 0 1
-DST1310*24RRX020 0 -2 -2 0 2 4 9 9 7 8 9 9 9 12 11 13 13 12 11 11 12 11 9 6 2 8
-DST1310*25RRX020 0 0 -1 0 -3 -1 6 9 8 7 5 4 6 6 5 3 3 4 6 7 9 11 13 7 7 5
-DST1310*26RRX020 0 5 3 3 1 2 6 9 10 7 8 8 7 5 6 5 4 5 8 7 5 5 6 7 7 6
-DST1310*27RRX020 0 7 10 10 7 5 8 10 7 10 14 16 16 15 14 13 13 14 15 12 11 12 15 13 9 12
-DST1310*28RRX020 0 9 7 6 7 9 10 9 12 12 13 14 14 13 11 10 12 12 11 12 9 11 13 13 12 11
-DST1310*29RRX020 0 10 11 11 8 10 12 15 14 13 10 12 10 3 9 14 11 10 11 9 7 1 2 6 8 9
-DST1310*30RRX020 0 7 5 1 -1 3 8 4 -5 -15 -21 -25 -30 -30 -25 -20 -22 -21 -20 -22 -31 -35 -42 -50 -52 -18
-DST1310*31RRX020 0 -45 -38 -36 -38 -36 -30 -27 -26 -25 -20 -14 -7 -12 -9 -6 -4 -6 -8 -15 -17 -18 -17 -19 -21 -21
-DST1311*01RRX020 0 -30 -30 -27 -26 -28 -28 -29 -32 -32 -34 -32 -27 -23 -25 -22 -20 -17 -15 -17 -19 -21 -19 -15 -15 -24
-DST1311*02RRX020 0 -15 -13 -12 -12 -12 -12 -14 -15 -14 -13 -6 -3 -3 -4 -7 -8 -5 -3 -3 -4 -6 -10 -10 -13 -9
-DST1311*03RRX020 0 -15 -13 -11 -11 -16 -17 -17 -23 -18 -17 -15 -12 -7 -7 -6 -4 -2 -2 -5 -5 -8 -8 -15 -16 -11
-DST1311*04RRX020 0 -14 -13 -10 -10 -12 -15 -14 -15 -13 -15 -23 -22 -19 -16 -14 -17 -15 -7 -7 -9 -10 -11 -11 -14 -14
-DST1311*05RRX020 0 -14 -17 -14 -13 -17 -19 -19 -20 -26 -29 -23 -21 -19 -17 -14 -12 -8 -5 -5 -4 -4 -6 -4 -6 -14
-DST1311*06RRX020 0 -6 -5 -4 -2 -3 -4 -5 -7 -10 -9 -7 -5 -4 -2 2 6 7 8 5 5 4 0 -5 -11 -2
-DST1311*07RRX020 0 -8 -3 -2 -3 -9 -14 -20 -24 -21 -29 -40 -48 -54 -44 -36 -36 -32 -28 -26 -17 -18 -24 -26 -25 -24
-DST1311*08RRX020 0 -25 -21 -18 -15 -16 -19 -21 -21 -19 -16 -20 -17 -16 -15 -14 -13 -11 -10 -8 -4 -2 1 4 6 -13
-DST1311*09RRX020 0 7 4 1 -8 -23 -34 -57 -75 -81 -75 -74 -68 -59 -48 -44 -40 -37 -37 -36 -30 -29 -29 -26 -26 -39
-DST1311*10RRX020 0 -26 -32 -37 -35 -31 -29 -28 -27 -29 -33 -34 -33 -31 -32 -33 -31 -27 -26 -27 -21 -26 -32 -30 -31 -30
-DST1311*11RRX020 0 -39 -44 -41 -32 -38 -52 -67 -70 -58 -54 -56 -54 -51 -48 -38 -38 -37 -31 -28 -31 -29 -28 -27 -27 -42
-DST1311*12RRX020 0 -25 -25 -26 -25 -25 -22 -23 -26 -26 -22 -17 -17 -16 -16 -15 -17 -16 -15 -16 -17 -17 -18 -22 -26 -20
-DST1311*13RRX020 0 -27 -27 -23 -20 -20 -21 -25 -27 -25 -25 -23 -18 -16 -17 -19 -19 -17 -15 -16 -13 -11 -13 -12 -12 -19
-DST1311*14RRX020 0 -11 -12 -13 -14 -13 -10 -8 -8 -8 -11 -11 -9 -8 -10 -13 -13 -11 -10 -11 -10 -12 -13 -15 -19 -11
-DST1311*15RRX020 0 -20 -24 -24 -21 -17 -16 -19 -25 -22 -22 -23 -20 -21 -17 -10 -12 -20 -23 -22 -21 -25 -24 -14 -26 -20
-DST1311*16RRX020 0 -37 -35 -34 -26 -18 -22 -31 -28 -29 -29 -32 -25 -27 -16 -12 -16 -16 -17 -19 -18 -18 -17 -14 -18 -23
-DST1311*17RRX020 0 -21 -22 -18 -14 -15 -17 -25 -30 -26 -24 -26 -31 -25 -18 -19 -19 -16 -14 -14 -12 -12 -12 -13 -14 -19
-DST1311*18RRX020 0 -15 -15 -12 -10 -7 -7 -12 -15 -17 -18 -16 -13 -12 -13 -12 -11 -7 -7 -8 -4 -3 -3 -4 -3 -10
-DST1311*19RRX020 0 0 1 0 -2 -4 -4 -4 -7 -7 -8 -6 -1 0 1 0 5 8 6 0 -4 -7 -6 -5 -5 -2
-DST1311*20RRX020 0 -5 -7 -8 -7 -5 -5 -6 -10 -13 -16 -12 -11 -12 -9 -6 -5 -3 -4 -5 -6 -8 -8 -7 -8 -8
-DST1311*21RRX020 0 -6 -6 -7 -8 -7 -5 -5 -5 -4 -3 -2 0 -2 -3 -2 0 1 -1 -2 -3 -3 -3 -7 -8 -4
-DST1311*22RRX020 0 -10 -10 -7 -5 -2 -2 -2 -1 -1 -4 -4 -2 -1 0 0 2 4 5 4 2 0 -2 -3 -5 -2
-DST1311*23RRX020 0 -4 -2 1 -1 -4 0 1 -4 -14 -22 -24 -28 -28 -22 -22 -19 -15 -10 -11 -10 -8 -10 -11 -10 -12
-DST1311*24RRX020 0 -9 -7 -7 -9 -11 -11 -9 -8 -7 -10 -11 -10 -7 -7 -7 -8 -9 -8 -7 -8 -7 -8 -7 -6 -8
-DST1311*25RRX020 0 -4 -4 -6 -7 -6 -5 -4 -4 -5 -6 -6 -6 -6 -8 -6 -5 -4 -4 -4 -2 -2 -1 1 2 -4
-DST1311*26RRX020 0 1 0 0 -1 -1 -2 -2 -3 -1 -1 -3 -2 -1 0 0 0 4 7 8 7 8 9 14 15 2
-DST1311*27RRX020 0 15 17 15 13 10 10 7 7 8 10 10 10 9 9 8 9 6 7 8 7 7 9 10 10 10
-DST1311*28RRX020 0 10 9 10 11 11 11 10 11 11 10 10 8 9 11 10 9 10 9 7 8 7 4 3 1 9
-DST1311*29RRX020 0 2 3 6 16 15 7 10 5 0 1 7 6 9 10 9 4 8 2 -2 -6 -9 -11 -8 -8 3
-DST1311*30RRX020 0 -9 -7 -8 -5 -5 -5 -3 -1 -3 -7 -9 -9 -5 -3 -7 -10 -9 -9 -10 -13 -12 -6 -6 -12 -7
-DST1312*01RRX020 0 -8 -16 -21 -17 -22 -20 -16 -16 -19 -18 -12 -7 -5 6 -3 -4 -8 -7 -9 -10 -10 -10 -7 -10 -11
-DST1312*02RRX020 0 -8 -8 -5 -3 -3 -4 -3 -1 0 0 -1 -3 -2 -1 -1 0 -1 -2 -4 -7 -10 -10 -9 -8 -4
-DST1312*03RRX020 0 -5 -4 -2 -2 -3 0 4 1 -1 -8 -13 -18 -17 -16 -11 -16 -19 -16 -17 -19 -19 -13 -13 -11 -10
-DST1312*04RRX020 0 -8 -7 -6 -2 2 6 5 -1 -5 -6 -5 -7 -5 -5 -3 -2 -4 -5 -9 -12 -15 -18 -18 -18 -6
-DST1312*05RRX020 0 -19 -18 -16 -13 -12 -12 -16 -18 -19 -15 -18 -15 -13 -5 1 0 -3 -3 -4 -6 -10 -12 -11 -10 -11
-DST1312*06RRX020 0 -9 -4 -2 1 5 5 7 8 7 4 2 1 3 3 1 1 0 1 3 3 -1 0 -1 2 2
-DST1312*07RRX020 0 7 8 0 -2 -4 -7 -6 -7 -7 -5 -3 -4 -4 -2 0 3 4 4 5 5 3 6 17 19 1
-DST1312*08RRX020 0 15 10 9 -10 -48 -40 -38 -52 -66 -57 -48 -40 -35 -31 -28 -31 -29 -33 -33 -29 -34 -32 -31 -29 -31
-DST1312*09RRX020 0 -26 -24 -20 -19 -18 -13 -13 -17 -20 -22 -22 -24 -24 -25 -23 -21 -20 -16 -17 -17 -16 -15 -16 -15 -19
-DST1312*10RRX020 0 -14 -12 -10 -10 -10 -6 -12 -19 -23 -23 -21 -19 -15 -14 -13 -14 -15 -15 -12 -9 -8 -8 -6 -4 -13
-DST1312*11RRX020 0 -4 -4 -5 -5 -6 -8 -9 -9 -11 -11 -10 -9 -10 -10 -9 -8 -9 -8 -5 -4 -4 -5 -6 -6 -7
-DST1312*12RRX020 0 -6 -7 -8 -6 -5 -5 -6 -7 -9 -10 -8 -6 -4 -6 -7 -9 -10 -8 -5 -4 -2 0 2 2 -6
-DST1312*13RRX020 0 3 4 4 3 2 4 4 3 4 5 9 11 13 22 32 28 27 23 26 25 25 25 23 22 14
-DST1312*14RRX020 0 25 17 7 5 0 -1 4 4 3 1 3 5 3 0 -4 -11 -25 -37 -36 -29 -24 -18 -16 -12 -6
-DST1312*15RRX020 0 -9 -7 -7 -4 -5 -9 -12 -15 -17 -16 -15 -15 -16 -12 -7 -4 -1 -10 -14 -13 -13 -14 -15 -11 -11
-DST1312*16RRX020 0 -7 -3 3 -1 -8 -17 -21 -22 -24 -20 -17 -15 -11 -11 -12 -17 -19 -16 -15 -15 -13 -9 -10 -9 -13
-DST1312*17RRX020 0 -8 -5 -3 -4 -5 -5 -7 -8 -10 -11 -10 -10 -10 -10 -7 -5 -5 -7 -7 -7 -8 -4 -2 -3 -7
-DST1312*18RRX020 0 -1 2 3 -1 -8 -10 -9 -10 -11 -9 -7 -6 -5 -2 -2 -6 -9 -9 -5 -4 -5 -7 -7 -3 -5
-DST1312*19RRX020 0 0 0 -3 -3 -4 -3 -5 -8 -11 -9 -6 -6 -5 -4 -5 -9 -13 -17 -20 -22 -19 -18 -14 -10 -9
-DST1312*20RRX020 0 -10 -9 -5 -4 -9 -7 -5 -6 -10 -13 -13 -13 -8 -5 -5 -4 -7 -10 -10 -9 -9 -9 -10 -12 -8
-DST1312*21RRX020 0 -12 -8 -6 -6 -7 -9 -8 -9 -7 -5 -4 -5 -4 -2 -1 -2 -4 -5 -3 -2 -1 0 1 3 -4
-DST1312*22RRX020 0 3 4 2 0 1 8 7 5 3 3 6 10 9 9 7 7 8 9 9 7 6 6 5 6 6
-DST1312*23RRX020 0 6 6 7 6 5 4 6 6 6 6 7 7 7 10 10 9 4 3 4 5 4 3 4 5 6
-DST1312*24RRX020 0 6 6 7 8 7 8 9 9 10 12 13 13 13 13 10 7 2 2 4 5 4 3 5 6 8
-DST1312*25RRX020 0 7 8 12 16 16 20 14 6 -2 -11 -16 -22 -31 -35 -34 -35 -33 -30 -26 -18 -14 -14 -13 -13 -10
-DST1312*26RRX020 0 -10 -11 -9 -9 -12 -14 -12 -9 -7 -4 -8 -9 -8 -4 0 1 3 2 3 3 2 0 0 -1 -5
-DST1312*27RRX020 0 -1 0 1 2 5 5 6 6 8 8 8 9 7 7 7 8 7 7 5 9 16 18 18 21 8
-DST1312*28RRX020 0 22 20 16 15 14 13 15 16 17 19 21 17 10 4 3 4 5 4 8 15 16 12 2 -1 12
-DST1312*29RRX020 0 -4 -4 -7 -6 -5 -2 2 1 -1 0 -3 -1 2 5 5 1 -1 -3 -1 1 1 2 2 1 -1
-DST1312*30RRX020 0 0 0 0 1 -1 -2 -4 -6 -7 -8 -12 -13 -7 -5 -3 -5 -9 -6 -4 -1 -2 -2 -4 -5 -4
-DST1312*31RRX020 0 -9 -9 -6 -3 -6 -4 -1 0 -1 -6 -5 -2 2 1 3 3 4 5 6 5 6 7 7 6 0
-DST1401*01RRX020 0 -1 -1 -2 -3 -4 -8 -10 -9 -8 3 11 10 -2 -20 -34 -40 -32 -25 -25 -24 -25 -25 -19 -17 -13
-DST1401*02RRX020 0 -19 -19 -19 -28 -27 -24 -20 -25 -21 -21 -24 -23 -16 -22 -28 -29 -24 -17 -17 -10 -10 -16 -18 -17 -21
-DST1401*03RRX020 0 -14 -11 -10 -13 -16 -15 -19 -21 -19 -22 -22 -19 -21 -19 -17 -18 -26 -28 -28 -30 -30 -26 -24 -22 -20
-DST1401*04RRX020 0 -19 -15 -14 -16 -15 -17 -14 -10 -10 -14 -12 -7 -3 -6 -9 -12 -11 -7 -5 -10 -15 -16 -14 -14 -12
-DST1401*05RRX020 0 -15 -12 -12 -12 -11 -10 -7 -9 -10 -11 -12 -14 -16 -14 -11 -12 -10 -4 -3 -4 -9 -10 -10 -12 -10
-DST1401*06RRX020 0 -15 -13 -12 -12 -9 -7 -7 -9 -10 -12 -8 -11 -7 -8 -7 -5 -3 -6 -7 -8 -10 -10 -13 -14 -9
-DST1401*07RRX020 0 -14 -13 -11 -14 -13 -9 -9 -11 -13 -13 -12 -11 -11 -14 -13 -5 -3 -9 -10 -3 -2 -3 1 -2 -9
-DST1401*08RRX020 0 -6 -12 -16 -17 -16 -14 -14 -13 -15 -16 -14 -12 -14 -16 -16 -12 -10 -7 -5 -4 -8 -6 -3 -5 -11
-DST1401*09RRX020 0 -5 -9 -18 -26 -25 -23 -20 -18 -22 -24 -23 -21 -20 -17 -12 -7 -3 -1 -1 -4 2 0 0 -1 -12
-DST1401*10RRX020 0 -2 -5 -9 -10 -8 -11 -10 -7 -6 0 1 -1 -4 -5 -4 -3 -7 -8 -8 -8 -5 -6 -6 -8 -6
-DST1401*11RRX020 0 -8 -10 -13 -14 -12 -8 -4 1 1 1 1 1 1 3 6 4 3 4 3 -3 -10 -13 -11 -6 -3
-DST1401*12RRX020 0 -7 -11 -12 -11 -8 -8 -5 -1 -6 -9 -10 -10 -11 -15 -16 -12 -9 -10 -9 -10 -15 -11 -17 -19 -11
-DST1401*13RRX020 0 -20 -20 -23 -23 -22 -15 -11 -3 -2 0 2 -1 -4 -4 -5 -8 -5 -5 -6 -4 -7 -8 -8 -10 -9
-DST1401*14RRX020 0 -14 -20 -17 -16 -12 -13 -12 -10 -12 -12 -6 -4 -7 -11 -14 -16 -13 -4 -6 -8 -12 -12 -9 -12 -11
-DST1401*15RRX020 0 -14 -14 -14 -15 -19 -20 -20 -17 -17 -16 -14 -11 -9 -7 -7 -7 -6 -6 -5 -4 -8 -11 -11 -12 -12
-DST1401*16RRX020 0 -12 -11 -10 -9 -7 -5 -5 -4 -3 -3 -2 -3 -5 -5 -4 -4 -2 0 1 2 1 1 0 -3 -4
-DST1401*17RRX020 0 -4 -2 -1 -1 -2 -2 -1 1 3 3 3 1 0 0 -1 -1 3 7 5 2 -3 -5 -7 -9 0
-DST1401*18RRX020 0 -10 -11 -13 -11 -10 -8 -6 -5 -7 -6 -5 -3 -1 1 2 1 -1 -2 -1 3 8 10 11 8 -2
-DST1401*19RRX020 0 11 12 11 8 4 5 7 8 6 5 6 8 9 9 10 10 9 8 7 4 -1 -4 -4 -3 6
-DST1401*20RRX020 0 -3 -2 -1 3 8 7 5 2 0 -2 -4 -6 -5 -5 -5 -4 -2 -2 -1 -2 -1 1 2 5 -1
-DST1401*21RRX020 0 5 3 7 8 8 7 3 0 4 5 -3 -8 -3 -1 8 13 9 -1 -3 0 -1 -14 -11 -9 1
-DST1401*22RRX020 0 -9 -10 -11 -13 -14 -14 -15 -17 -20 -16 -12 -11 -14 -12 -13 -12 -7 -6 -4 -6 -8 -10 -9 -8 -11
-DST1401*23RRX020 0 -8 -10 -10 -10 -14 -17 -11 -9 -9 -7 -5 -4 -6 -11 -12 -7 -6 -4 -4 -6 -10 -14 -17 -18 -10
-DST1401*24RRX020 0 -17 -13 -13 -12 -13 -11 -6 -3 -5 -6 -5 -4 -2 2 1 1 1 1 3 5 4 3 -3 -4 -4
-DST1401*25RRX020 0 -3 -5 -11 -18 -18 -17 -15 -14 -8 -4 -2 -2 -2 -3 -8 -13 -16 -12 -7 -5 -5 -12 -15 -18 -10
-DST1401*26RRX020 0 -17 -18 -20 -25 -29 -30 -29 -29 -30 -22 -14 -10 -10 -11 -11 -11 -10 -8 -3 -6 -7 -7 -4 0 -15
-DST1401*27RRX020 0 3 3 -3 -11 -18 -16 -13 -10 -10 -6 -1 -2 -5 -6 -5 -4 -2 -1 -1 -2 -5 -7 -7 -7 -6
-DST1401*28RRX020 0 -3 -1 -4 -10 -13 -13 -8 -3 -2 -5 -7 -7 -8 -7 -4 -4 -1 0 -10 -12 -14 -17 -18 -17 -8
-DST1401*29RRX020 0 -14 -6 -8 -13 -18 -19 -20 -19 -18 -11 -6 -4 -2 -5 -12 -16 -16 -14 -14 -13 -12 -13 -10 -11 -12
-DST1401*30RRX020 0 -11 -8 -9 -18 -22 -19 -17 -18 -20 -17 -12 -10 -10 -10 -11 -14 -11 -9 -10 -10 -14 -12 -12 -13 -13
-DST1401*31RRX020 0 -11 -10 -12 -15 -14 -13 -11 -9 -8 -4 1 0 -2 -3 -5 -5 -3 -2 0 1 -2 -5 -7 -7 -6
-DST1402*01RRX020 0 4 6 8 8 11 12 12 10 11 8 5 9 14 13 15 16 14 14 11 7 7 2 -3 0 9
-DST1402*02RRX020 0 1 1 3 5 2 2 4 4 5 6 2 7 11 9 7 5 7 10 11 10 7 3 1 0 5
-DST1402*03RRX020 0 8 12 14 15 12 8 9 13 11 11 8 10 12 10 6 4 -1 3 7 9 9 5 -3 -6 8
-DST1402*04RRX020 0 -4 -7 1 5 10 12 10 10 10 10 7 5 5 5 5 5 2 4 9 13 16 16 13 11 7
-DST1402*05RRX020 0 11 8 10 10 16 18 16 14 15 14 10 10 12 9 7 9 11 14 17 18 20 19 13 5 13
-DST1402*06RRX020 0 4 3 3 5 4 -2 -8 -7 -8 -14 -22 -23 -21 -25 -25 -18 -22 -16 -12 -7 -5 -9 -11 -13 -10
-DST1402*07RRX020 0 -14 -15 -14 -12 -8 -6 -8 -10 -12 -9 -9 -6 -3 -1 1 1 -4 14 12 14 14 17 10 -16 -3
-DST1402*08RRX020 0 -20 12 22 23 16 2 -2 -12 -21 -16 -14 -13 -9 -21 -21 -21 -21 -27 -26 -19 -15 -22 -25 -21 -11
-DST1402*09RRX020 0 -24 -32 -28 -24 -19 -23 -30 -28 -27 -21 -17 -17 -14 -21 -21 -19 -20 -21 -22 -15 -20 -23 -24 -21 -22
-DST1402*10RRX020 0 -18 -18 -14 -13 -14 -18 -20 -20 -17 -17 -22 -20 -18 -17 -16 -16 -15 -13 -6 -7 -14 -14 -13 -15 -16
-DST1402*11RRX020 0 -14 -14 -11 -10 -7 -6 -9 -9 -7 -7 -10 -10 -7 -6 -7 -6 -5 -1 2 1 -6 -11 -15 -16 -8
-DST1402*12RRX020 0 -9 -8 -6 -7 -10 -12 -12 -11 -6 -8 -14 -13 -8 -7 -7 -7 -10 -10 -7 -4 -2 -1 4 5 -7
-DST1402*13RRX020 0 4 8 10 10 11 12 12 12 10 8 11 12 13 13 11 11 10 9 10 10 10 11 10 10 10
-DST1402*14RRX020 0 11 12 13 13 13 12 14 14 13 10 11 10 9 13 16 13 12 8 8 8 8 10 10 8 11
-DST1402*15RRX020 0 5 1 -1 2 7 10 10 9 8 3 2 7 16 31 32 37 39 42 47 47 50 52 46 36 22
-DST1402*16RRX020 0 14 -6 3 6 -2 -5 -2 -2 -2 -7 -11 -16 -10 -4 -5 -4 -15 -17 -15 -19 -21 -22 -19 -14 -8
-DST1402*17RRX020 0 -13 -16 -17 -15 -10 -12 -14 -16 -17 -17 -19 -18 -13 -9 -10 -12 -13 -8 -4 -6 -5 -3 -7 -8 -12
-DST1402*18RRX020 0 -6 -5 -2 -2 -3 -4 -1 2 -2 -3 -3 0 5 7 7 5 -1 -10 -6 -11 -18 -26 -35 -44 -7
-DST1402*19RRX020 0 -52 -54 -58 -51 -48 -68 -90-102-112 -90 -79 -68 -63 -51 -52 -51 -44 -42 -40 -37 -35 -35 -34 -38 -58
-DST1402*20RRX020 0 -40 -43 -45 -30 -43 -66 -73 -60 -57 -54 -70 -85 -86 -78 -59 -55 -56 -47 -37 -38 -37 -39 -42 -42 -53
-DST1402*21RRX020 0 -44 -48 -47 -41 -38 -39 -42 -44 -45 -45 -45 -44 -39 -38 -39 -40 -35 -32 -30 -31 -31 -31 -47 -58 -41
-DST1402*22RRX020 0 -63 -66 -55 -56 -53 -53 -55 -48 -45 -43 -38 -39 -34 -33 -31 -31 -30 -27 -26 -25 -22 -23 -28 -28 -40
-DST1402*23RRX020 0 -28 -29 -28 -26 -20 -11 -8 4 -2 -1 -5 -17 -23 -21 -12 -25 -39 -43 -47 -55 -52 -46 -52 -56 -27
-DST1402*24RRX020 0 -54 -50 -48 -48 -43 -40 -41 -41 -42 -39 -35 -34 -34 -34 -33 -31 -28 -24 -19 -15 -13 -12 -12 -13 -33
-DST1402*25RRX020 0 -15 -18 -18 -19 -19 -20 -22 -22 -20 -16 -16 -19 -21 -22 -21 -17 -14 -13 -14 -14 -13 -13 -14 -12 -17
-DST1402*26RRX020 0 -14 -16 -15 -13 -10 -9 -10 -11 -9 -8 -8 -9 -9 -10 -10 -10 -10 -7 -9 -8 -4 -1 2 -2 -9
-DST1402*27RRX020 0 -3 -2 -4 -9 -10 -8 -9 -10 -8 -6 -5 -8 -14 -16 -19 -22 -17 -8 -19 -36 -65 -96 -98 -99 -25
-DST1402*28RRX020 0 -95 -96 -92 -82 -76 -72 -72 -70 -72 -65 -59 -56 -59 -62 -61 -58 -55 -56 -50 -44 -39 -38 -38 -35 -63
-DST1403*01RRX020 0 -30 -29 -29 -30 -32 -37 -43 -48 -50 -46 -44 -41 -37 -35 -32 -30 -30 -27 -26 -26 -24 -20 -20 -20 -33
-DST1403*02RRX020 0 -24 -25 -27 -26 -25 -25 -23 -21 -23 -21 -22 -21 -20 -20 -20 -20 -19 -17 -14 -11 -7 -1 2 2 -18
-DST1403*03RRX020 0 -1 -8 -14 -20 -23 -24 -21 -22 -24 -21 -18 -17 -20 -18 -14 -10 -8 -7 -7 -5 -3 0 -2 -2 -13
-DST1403*04RRX020 0 -6 -10 -11 -11 -6 -2 1 0 -3 -6 -13 -13 -12 -12 -10 -11 -10 -6 -5 -3 -3 -2 -1 -4 -7
-DST1403*05RRX020 0 -5 -7 -6 -5 -4 -3 -3 -3 -7 -7 -9 -7 -6 -3 -4 -4 -2 1 -2 -3 -9 -4 -2 -3 -4
-DST1403*06RRX020 0 -3 -5 -5 -3 -2 -1 -2 -3 -4 -5 -8 -6 -3 -3 -6 -9 -13 -11 -10 -7 -5 -4 -1 -2 -5
-DST1403*07RRX020 0 -3 -5 -5 -4 -4 -4 -4 -3 -2 -3 -2 -1 0 0 0 -2 -2 -4 -4 -4 -4 -5 -5 -5 -3
-DST1403*08RRX020 0 -8 -8 -7 -6 -4 -4 -3 -3 -4 -2 -3 -2 -2 -3 -3 -4 -3 -3 -4 -5 -3 1 1 -3 -4
-DST1403*09RRX020 0 -2 -1 -2 0 0 0 -3 -3 -1 0 1 2 1 0 -1 1 4 6 4 5 7 7 9 9 2
-DST1403*10RRX020 0 8 7 7 7 10 13 14 14 11 7 -1 2 4 2 0 3 2 -1 -5 -6 -4 -3 0 2 4
-DST1403*11RRX020 0 3 2 0 -1 1 2 4 5 2 3 4 4 6 4 3 3 2 1 -3 -5 -8 -6 -3 -2 1
-DST1403*12RRX020 0 -2 -4 -5 -7 -5 -4 -4 -5 -6 -1 2 3 0 -2 -1 -1 -2 1 0 0 2 2 -3 -9 -2
-DST1403*13RRX020 0 -9 -17 -29 -36 -38 -32 -31 -29 -22 -20 -19 -18 -16 -20 -18 -15 -12 -10 -9 -6 -10 -9 -4 -1 -18
-DST1403*14RRX020 0 -3 -8 -15 -17 -15 -13 -11 -8 -9 -7 -9 -11 -12 -12 -11 -11 -9 -8 -9 -8 -8 -4 -1 -3 -9
-DST1403*15RRX020 0 -7 -8 -10 -13 -11 -10 -7 -5 -4 -2 -4 0 4 5 5 5 4 4 2 -1 -5 -4 0 1 -3
-DST1403*16RRX020 0 -1 -3 -4 -6 -8 -7 -5 -4 -4 -2 1 0 -1 -1 -1 1 0 0 0 0 -1 -1 -1 0 -2
-DST1403*17RRX020 0 4 5 7 7 7 7 8 8 8 8 6 3 5 8 10 8 7 7 8 10 7 3 -1 0 6
-DST1403*18RRX020 0 -2 -1 1 1 1 -2 0 1 1 -4 -7 -9 -9 -11 -12 -9 -7 -3 -1 -1 1 4 5 4 -2
-DST1403*19RRX020 0 1 0 -1 1 1 1 -1 0 -2 0 3 4 4 2 0 1 1 1 1 2 0 3 5 4 1
-DST1403*20RRX020 0 0 0 0 1 2 3 9 13 10 6 5 7 17 22 22 21 20 17 17 13 12 19 19 14 11
-DST1403*21RRX020 0 6 2 -3 -9 -11 -10 -11 -13 -17 -16 -20 -14 -4 -5 -7 -5 -7 -7 -5 -3 -6 -6 -7 -3 -8
-DST1403*22RRX020 0 1 5 -1 2 5 8 9 12 10 10 6 5 5 6 4 6 4 4 5 5 3 3 5 3 5
-DST1403*23RRX020 0 0 -1 -1 1 1 0 4 5 2 0 -3 -5 -3 0 0 -1 -3 -4 -4 -9 -6 -5 -8 -7 -2
-DST1403*24RRX020 0 -7 -7 -5 -1 3 5 8 9 7 7 3 0 4 7 6 7 4 0 -3 0 1 1 0 -2 2
-DST1403*25RRX020 0 -4 -5 -1 4 9 10 12 13 14 18 10 10 13 11 13 14 9 4 2 3 18 20 15 2 9
-DST1403*26RRX020 0 -5 -12 -14 -9 -6 -7 -6 -13 -18 -8 -8 -13 -12 -6 -3 -3 -1 -3 -8 -11 -7 -3 -1 1 -7
-DST1403*27RRX020 0 2 2 3 4 6 4 1 3 3 1 -7 -12 -12 -12 -14 -16 -16 -20 -22 -22 -16 -11 -9 -7 -7
-DST1403*28RRX020 0 -6 -6 -6 -2 -2 -1 -2 -1 1 -3 -13 -11 -11 -10 -6 -5 -6 -7 -6 -5 -9 -7 -7 -12 -6
-DST1403*29RRX020 0 -15 -16 -16 -19 -17 -11 -8 -10 -7 -4 -5 -6 -7 -5 -3 -1 -2 -1 -1 -1 -1 -2 1 2 -6
-DST1403*30RRX020 0 1 2 5 7 5 2 1 6 8 8 1 -1 0 6 9 10 9 7 5 4 2 0 1 2 4
-DST1403*31RRX020 0 -1 -2 -2 0 2 6 8 8 5 4 2 -2 0 5 8 10 4 -6 -12 -7 -4 -4 -6 -8 0
-DST1404*01RRX020 0 -12 -14 -11 -6 -3 1 2 0 -1 0 -2 0 5 9 12 8 2 -2 -6 -3 0 2 -2 -2 -1
-DST1404*02RRX020 0 -3 -2 0 4 7 8 7 6 4 1 -3 -1 3 5 6 7 3 1 3 4 3 0 -1 -3 2
-DST1404*03RRX020 0 -9 -9 -6 -1 6 6 7 8 6 1 -1 -1 5 8 9 8 4 1 1 5 5 1 0 0 2
-DST1404*04RRX020 0 -2 -1 0 5 8 10 9 6 2 4 1 1 1 6 7 8 6 3 2 2 5 5 4 3 4
-DST1404*05RRX020 0 1 -3 0 5 9 8 7 11 10 1 -7 -4 -14 -6 0 3 4 9 11 10 14 9 11 -1 4
-DST1404*06RRX020 0 -7 -6 -4 0 2 4 7 8 6 3 -2 -1 -1 -1 -3 -2 -4 -4 -4 -1 1 3 4 2 0
-DST1404*07RRX020 0 -8 -11 -12 -11 -10 -8 -7 -4 -1 0 -1 -1 5 12 8 -5 -3 -7 -7 -11 -14 -15 -16 -18 -6
-DST1404*08RRX020 0 -17 -16 -14 -10 -10 -7 -3 -1 -1 0 -6 -6 -7 -13 -11 -7 -8 -12 -14 -14 -14 -11 -9 -6 -9
-DST1404*09RRX020 0 -6 -7 -6 -4 -2 1 2 -2 -5 -7 -10 -10 -8 -7 -6 -6 -7 -9 -12 -15 -14 -11 -10 -9 -7
-DST1404*10RRX020 0 -9 -9 -8 -5 -3 -2 -1 -4 -8 -5 -7 -9 -7 -3 0 -1 -1 -2 -5 -7 -1 3 3 3 -4
-DST1404*11RRX020 0 1 1 4 7 13 21 23 17 9 11 9 7 5 4 2 1 -2 -7 -16 -22 -27 -29 -36 -48 -2
-DST1404*12RRX020 0 -59 -53 -56 -56 -63 -70 -76 -74 -79 -81 -83 -81 -74 -59 -56 -54 -53 -54 -51 -49 -53 -51 -48 -45 -62
-DST1404*13RRX020 0 -43 -46 -49 -53 -55 -57 -52 -45 -45 -44 -39 -31 -31 -29 -30 -29 -26 -27 -32 -34 -33 -37 -42 -37 -39
-DST1404*14RRX020 0 -33 -31 -30 -27 -23 -18 -18 -17 -18 -16 -20 -21 -19 -16 -14 -14 -14 -16 -18 -23 -25 -25 -24 -26 -21
-DST1404*15RRX020 0 -24 -19 -18 -16 -16 -10 -11 -8 -10 -10 -13 -13 -12 -11 -9 -8 -9 -10 -14 -17 -17 -17 -16 -13 -13
-DST1404*16RRX020 0 -11 -8 -6 -3 0 1 0 1 2 1 -5 -8 -3 4 8 9 7 6 6 4 3 3 2 -1 1
-DST1404*17RRX020 0 -3 -3 -11 -11 -5 2 3 3 0 0 -2 2 6 7 -3 -11 -13 -13 -14 -12 -10 -7 -7 -9 -5
-DST1404*18RRX020 0 -11 -11 -8 -5 -8 -5 -2 -2 -6 -7 -11 -6 1 5 4 8 12 14 12 10 8 8 7 2 0
-DST1404*19RRX020 0 0 -4 -8 4 11 -6 -12 -6 1 -7 -16 -11 -6 2 5 5 4 3 5 3 2 0 -6 -11 -2
-DST1404*20RRX020 0 -11 -1 4 4 7 0 0 3 1 1 -1 21 20 13 19 6 2 2 -5 -1 10 3 -5 -12 3
-DST1404*21RRX020 0 -14 -14 -22 -22 -18 -13 -12 -9 3 -8 -19 -15 -15 -21 -26 -23 -12 -14 -17 -11 -5 -9 -10 -12 -14
-DST1404*22RRX020 0 -17 -20 -20 -20 -11 -7 -3 2 5 4 -3 -10 -10 -8 -8 -7 -10 -14 -14 -13 -10 -8 -9 -8 -9
-DST1404*23RRX020 0 -12 -12 -6 -5 -1 2 5 4 3 2 -4 -8 -7 -6 -4 -1 -2 -6 -10 -16 -13 -7 -4 -6 -5
-DST1404*24RRX020 0 -11 -9 -2 4 3 2 3 1 -11 -14 -14 -18 -16 -13 -15 -14 -15 -15 -16 -16 -13 -9 -14 -21 -10
-DST1404*25RRX020 0 -22 -18 -14 -11 -10 -6 -3 -2 -5 -6 -9 -11 -14 -12 -9 -8 -10 -13 -7 -21 -23 -23 -23 -26 -13
-DST1404*26RRX020 0 -26 -24 -21 -20 -18 -16 -12 -10 -9 -10 -17 -22 -21 -20 -19 -17 -18 -21 -27 -28 -25 -22 -20 -17 -19
-DST1404*27RRX020 0 -15 -13 -13 -12 -10 -7 -4 -2 -3 -3 -6 -8 -5 -3 -2 -1 -3 -3 -4 -8 -5 -4 -4 0 -6
-DST1404*28RRX020 0 0 1 -1 -5 -8 -9 -9 -12 -17 -16 -15 -15 -15 -14 -11 -8 -9 -9 -10 -11 -10 -11 -14 -13 -10
-DST1404*29RRX020 0 -10 -9 -10 -7 -5 -3 -1 1 -1 -1 -3 -2 2 7 9 10 11 11 12 12 16 7 -2 -8 2
-DST1404*30RRX020 0 -18 -26 -29 -33 -39 -46 -56 -60 -63 -67 -69 -64 -59 -52 -52 -53 -52 -51 -50 -41 -42 -41 -39 -33 -47
-DST1405*01RRX020 0 -35 -31 -25 -22 -23 -22 -19 -18 -17 -16 -18 -16 -13 -11 -11 -7 -7 -9 -13 -17 -17 -17 -18 -20 -18
-DST1405*02RRX020 0 -21 -17 -16 -15 -13 -10 -7 -6 -9 -8 -9 -7 -4 -4 -5 -5 -4 -3 -3 -3 -5 -6 -9 -9 -8
-DST1405*03RRX020 0 -10 -9 -3 1 6 8 10 7 4 4 4 6 8 8 8 10 12 12 12 -1 -6 -19 -30 -34 0
-DST1405*04RRX020 0 -39 -40 -34 -30 -35 -38 -41 -41 -48 -47 -38 -34 -26 -33 -31 -26 -26 -30 -29 -24 -21 -24 -24 -22 -33
-DST1405*05RRX020 0 -21 -18 -15 -9 -16 -26 -21 -18 -22 -19 -16 -16 -17 -13 -13 -18 -26 -29 -26 -25 -21 -21 -21 -22 -20
-DST1405*06RRX020 0 -22 -19 -16 -13 -11 -11 -9 -9 -10 -9 -12 -13 -9 -5 -5 -5 -4 -3 -5 -9 -8 -9 -11 -11 -10
-DST1405*07RRX020 0 -9 -8 -5 -2 0 -1 -1 -2 -4 -6 -9 -8 -7 -6 -5 -4 -1 -2 -4 -7 -10 -12 -10 -8 -5
-DST1405*08RRX020 0 -10 -11 -10 -13 -18 -21 -28 -39 -48 -40 -32 -21 -22 -23 -26 -26 -32 -33 -34 -27 -34 -43 -48 -43 -28
-DST1405*09RRX020 0 -43 -44 -39 -35 -35 -33 -29 -31 -27 -23 -24 -22 -18 -14 -10 -7 -9 -10 -12 -12 -14 -16 -16 -15 -22
-DST1405*10RRX020 0 -13 -12 -9 -9 -9 -15 -11 -12 -22 -22 -20 -16 -14 -13 -13 -10 -10 -11 -15 -26 -34 -39 -33 -29 -17
-DST1405*11RRX020 0 -34 -39 -29 -27 -25 -23 -14 -12 -16 -18 -27 -24 -19 -16 -17 -17 -16 -19 -22 -27 -30 -34 -31 -25 -23
-DST1405*12RRX020 0 -23 -23 -18 -18 -17 -16 -16 -16 -20 -22 -23 -25 -22 -17 -14 -11 -11 -8 -9 -15 -18 -20 -19 -17 -17
-DST1405*13RRX020 0 -14 -9 -7 -7 -5 0 1 -2 -4 -6 -8 -9 -6 1 4 7 7 5 6 4 1 -2 -6 -5 -2
-DST1405*14RRX020 0 -4 -1 1 2 3 5 6 7 4 3 0 -1 5 -3 -3 -1 -1 1 2 1 -2 -6 -8 -5 0
-DST1405*15RRX020 0 -5 -5 -3 2 6 6 6 5 2 0 -2 0 2 4 8 13 15 12 8 6 4 3 1 -2 4
-DST1405*16RRX020 0 -5 -4 -2 -4 -6 -3 2 4 4 5 5 4 5 8 10 11 10 7 3 -5 -8 -11 -13 -12 0
-DST1405*17RRX020 0 -9 -5 -2 -3 -3 -1 1 -1 -5 -6 -10 -12 -11 -9 -6 -1 3 5 3 4 4 1 -4 -9 -3
-DST1405*18RRX020 0 -9 -10 -3 0 -3 -1 4 4 3 3 2 0 2 4 4 5 4 2 1 0 0 -3 -8 -10 0
-DST1405*19RRX020 0 -8 -6 -2 -2 0 3 6 8 6 6 2 0 -2 -3 -2 2 4 5 3 2 0 -4 -8 -7 0
-DST1405*20RRX020 0 -6 -5 -3 -1 -1 1 2 -1 -5 -5 -7 -5 -6 -5 -1 3 3 4 4 2 0 -2 -5 -5 -2
-DST1405*21RRX020 0 -5 -4 0 1 3 4 4 5 5 5 2 0 2 5 8 14 16 17 14 11 9 10 7 5 6
-DST1405*22RRX020 0 4 7 10 13 15 10 6 6 4 5 5 5 4 4 6 3 2 -1 -11 -17 -20 -17 -16 -13 1
-DST1405*23RRX020 0 -20 -20 -24 -26 -19 -16 -12 -8 -4 -4 -5 -4 -5 -6 -5 -2 -4 -12 -17 -27 -33 -45 -31 -35 -16
-DST1405*24RRX020 0 -31 -27 -27 -25 -23 -20 -20 -16 -17 -15 -15 -15 -14 -13 -15 -15 -15 -17 -20 -22 -25 -28 -26 -26 -20
-DST1405*25RRX020 0 -20 -17 -17 -15 -14 -12 -10 -9 -8 -6 -9 -12 -12 -14 -13 -11 -7 -5 -6 -8 -10 -14 -16 -16 -12
-DST1405*26RRX020 0 -16 -12 -9 -8 -7 -9 -7 -7 -8 -6 -11 -11 -9 -7 -4 -3 -3 -2 -5 -10 -14 -17 -20 -17 -9
-DST1405*27RRX020 0 -14 -12 -8 -5 -3 -2 1 2 0 0 -3 -2 2 2 7 13 15 14 10 6 2 -2 -1 3 1
-DST1405*28RRX020 0 9 6 1 0 -2 -1 1 3 2 1 -2 -3 -3 -1 1 2 1 -2 -5 -5 -7 -7 -6 -9 -1
-DST1405*29RRX020 0 -6 0 2 0 -2 -1 3 4 0 -3 -12 -21 -21 -18 -15 -11 -8 -8 -9 -13 -14 -15 -17 -18 -8
-DST1405*30RRX020 0 -19 -16 -10 -6 -1 0 -2 -2 -2 2 5 9 4 6 4 1 -3 -7 -17 -31 -28 -22 -20 -21 -7
-DST1405*31RRX020 0 -17 -13 -8 -1 4 9 6 4 1 2 -1 1 7 10 13 16 15 12 699999999999999999999 3
+DST1306*01PPX120 0 20 9 -32 -68 -98-106-103-116-119 -98 -85 -80 -80 -82 -71 -65 -65 -61 -55 -51 -50 -46 -43 -37 -66
+DST1306*02PPX120 0 -35 -38 -34 -45 -46 -46 -47 -38 -34 -32 -36 -39 -35 -34 -39 -38 -38 -34 -33 -38 -36 -29 -24 -25 -36
+DST1306*03PPX120 0 -25 -24 -28 -28 -29 -26 -22 -18 -19 -20 -23 -24 -24 -23 -23 -18 -18 -17 -16 -16 -17 -18 -14 -18 -21
+DST1306*04PPX120 0 -16 -21 -23 -21 -22 -21 -19 -21 -18 -13 -15 -20 -22 -22 -22 -21 -20 -17 -13 -11 -11 -6 -3 -2 -17
+DST1306*05PPX120 0 -7 -7 -5 -7 -14 -18 -14 -8 -8 -8 -9 -9 -9 -5 -7 -7 -8 -11 -12 -15 -16 -16 -17 -18 -11
+DST1306*06PPX120 0 -19 -19 -17 -12 -10 -6 -6 -10 -15 -11 -10 -12 -14 -19 -17 -9 -15 -12 -18 -33 -41 -49 -56 -54 -20
+DST1306*07PPX120 0 -57 -63 -71 -62 -70 -73 -68 -67 -51 -46 -44 -35 -39 -42 -39 -42 -39 -34 -32 -29 -25 -23 -20 -17 -45
+DST1306*08PPX120 0 -17 -19 -20 -20 -15 -19 -12 -14 -6 -2 -4 -12 -11 -12 -13 -14 -14 -12 -8 -9 -10 -9 -8 -9 -12
+DST1306*09PPX120 0 -7 -7 -1 0 3 4 5 5 5 5 4 4 5 2 -2 -9 -12 -15 -7 -6 -2 -4 -5 -4 -2
+DST1306*10PPX120 0 -3 -7 -11 -10 -13 -13 -9 -8 -5 -7 -4 -5 -7 -8 -4 -7 -4 -3 -2 -6 -8 -9 -8 -5 -7
+DST1306*11PPX120 0 -4 -2 -2 -3 -5 -5 -5 -2 -2 -3 -3 0 -3 -4 -9 -10 -11 -10 -13 -11 -9 -8 -7 -6 -6
+DST1306*12PPX120 0 -9 -8 -4 -5 -7 -7 -7 -9 -8 -8 -7 -5 -5 -6 -8 -7 -5 -5 -4 -2 -2 -4 -2 -4 -6
+DST1306*13PPX120 0 -8 -11 -7 -3 0 0 2 2 0 -1 0 2 1 -2 -4 -5 -4 -2 -2 0 0 0 -1 0 -2
+DST1306*14PPX120 0 2 2 2 1 1 0 -1 -1 0 1 5 5 7 9 11 11 11 11 10 6 5 6 3 -1 4
+DST1306*15PPX120 0 -1 4 7 9 11 14 15 9 6 4 3 1 -2 -5 -6 -4 -2 -3 1 3 1 -1 -3 -1 3
+DST1306*16PPX120 0 1 3 7 8 8 8 6 6 6 7 6 7 8 7 5 5 3 1 -1 -1 1 4 7 8 5
+DST1306*17PPX120 0 8 9 5 3 1 0 -1 -2 0 0 -2 -2 -4 -5 -4 -4 -3 1 2 3 4 5 8 13 1
+DST1306*18PPX120 0 16 13 6 -1 -8 -10 -7 -5 -4 -3 -5 -5 -7 -6 -8 -8 -9 -9 -9 -8 -6 -6 -4 6 -4
+DST1306*19PPX120 0 11 8 3 -2 -1 0 1 4 5 6 5 3 -1 -4 -4 -3 -1 1 3 2 1 2 6 11 2
+DST1306*20PPX120 0 6 -2 -4 -4 -5 -5 -2 1 3 8 7 10 9 2 -5 -7 -8 -4 -1 -2 -5 -7 -2 -4 -1
+DST1306*21PPX120 0 -6 -16 -17 -12 -12 -13 -14 -12 -12 -10 -12 -11 -10 -11 -11 -8 -3 0 0 -5 -9 -21 -19 -16 -11
+DST1306*22PPX120 0 -11 -15 -14 -16 -12 -15 -14 -14 -12 -12 -18 -20 -18 -18 -17 -18 -18 -20 -19 -24 -27 -24 -21 -16 -17
+DST1306*23PPX120 0 -14 -14 -13 -16 -14 -14 -18 -13 -12 -23 -28 -27 -22 -17 -20 -22 -21 -24 -20 -20 -18 -23 -32 -33 -20
+DST1306*24PPX120 0 -28 -23 -21 -23 -26 -28 -20 -14 -14 -22 -29 -31 -31 -25 -22 -26 -27 -28 -31 -39 -35 -40 -43 -45 -28
+DST1306*25PPX120 0 -36 -31 -30 -31 -29 -26 -23 -20 -18 -15 -22 -24 -25 -23 -21 -18 -14 -11 -10 -13 -16 -17 -14 -14 -21
+DST1306*26PPX120 0 -14 -14 -10 -6 -5 -3 -2 -1 -3 -4 -6 -9 -9 -7 -5 -5 -7 -9 -5 -7 -10 -13 -15 -14 -8
+DST1306*27PPX120 0 -13 -12 -9 -8 -10 -10 -7 -6 -7 -7 -10 -11 -11 -9 -2 8 4 1 5 1 0 1 0 2 -5
+DST1306*28PPX120 0 9 6 -3 -1 -8 -13 -11 -10 -9 -8 -12 -15 -22 -28 -32 -32 -41 -43 -48 -54 -62 -71 -77 -87 -28
+DST1306*29PPX120 0 -92 -98 -96 -94 -94 -96 -98 -94 -97 -87 -94 -74 -87 -80 -71 -72 -70 -71 -62 -62 -64 -56 -44 -41 -79
+DST1306*30PPX120 0 -44 -48 -42 -38 -38 -35 -33 -31 -29 -30 -30 -28 -31 -29 -28 -29 -29 -30 -30 -30 -34 -36 -37 -38 -34
+DST1307*01PPX120 0 -29 -30 -31 -27 -25 -25 -25 -24 -23 -22 -20 -18 -17 -17 -17 -17 -19 -19 -19 -16 -15 -13 -9 -7 -20
+DST1307*02PPX120 0 -7 -8 -10 -10 -9 -8 -6 -6 -9 -10 -9 -8 -8 -6 -6 -7 -8 -6 -4 -3 -2 -1 -1 1 -6
+DST1307*03PPX120 0 0 -5 -7 -6 -6 -5 -2 -1 -3 -3 -3 -3 -3 -4 -4 -4 -2 0 -2 -5 -4 -1 4 4 -3
+DST1307*04PPX120 0 1 -1 0 0 0 0 1 4 6 7 9 8 8 8 5 4 4 7 13 18 21 19 21 16 7
+DST1307*05PPX120 0 9 7 9 8 4 -8 -14 -12 -11 -8 2 12 10 11 6 8 9 13 20 13 0 -1 3 5 4
+DST1307*06PPX120 0 -1 -15 -27 -38 -43 -48 -57 -62 -68 -69 -68 -67 -67 -69 -71 -74 -76 -75 -79 -77 -74 -73 -70 -59 -59
+DST1307*07PPX120 0 -41 -39 -37 -34 -29 -24 -20 -18 -18 -16 -14 -13 -12 -11 -10 -9 -7 -5 -7 -10 -11 -10 -10 -9 -17
+DST1307*08PPX120 0 -8 -8 -8 -8 -7 -8 -14 -12 -9 -7 -7 -6 -6 -4 1 0 -1 -1 0 2 3 1 -1 0 -5
+DST1307*09PPX120 0 2 5 6 8 8 9 9 9 6 5 9 11 13 15 11 8 5 7 3 4 9 23 17 12 9
+DST1307*10PPX120 0 10 7 -5 -11 -21 -31 -37 -41 -43 -39 -39 -44 -39 -32 -39 -45 -43 -42 -44 -41 -43 -47 -45 -35 -33
+DST1307*11PPX120 0 -26 -25 -27 -19 -18 -23 -29 -36 -29 -32 -34 -35 -36 -38 -38 -38 -33 -35 -35 -38 -34 -32 -27 -25 -31
+DST1307*12PPX120 0 -19 -16 -14 -19 -21 -20 -17 -15 -15 -14 -12 -13 -12 -9 -10 -9 -10 1 1 -3 -8 -7 0 0 -11
+DST1307*13PPX120 0 -6 -10 10 9 2 2 -1 3 1 0 5 4 5 5 6 10 9 7 2 -5 -14 -18 -18 -20 -1
+DST1307*14PPX120 0 -20 -25 -27 -24 -23 -26 -28 -22 -21 -29 -34 -36 -28 -37 -44 -50 -51 -56 -61 -58 -60 -69 -72 -73 -41
+DST1307*15PPX120 0 -67 -52 -46 -46 -42 -40 -36 -39 -43 -40 -36 -40 -42 -44 -45 -47 -43 -41 -35 -28 -25 -26 -25 -22 -40
+DST1307*16PPX120 0 -19 -16 -18 -19 -20 -18 -17 -16 -16 -16 -15 -15 -16 -13 -11 -12 -15 -15 -13 -11 -12 -12 -8 -5 -15
+DST1307*17PPX120 0 -4 -4 -2 -1 0 -2 -1 3 7 9 11 11 9 7 6 6 9 11 13 16 16 11 9 8 6
+DST1307*18PPX120 0 7 8 8 8 9 12 16 15 18 20 18 18 16 23 24 16 15 14 12 3 1 -2 -1 1 12
+DST1307*19PPX120 0 3 2 -2 -10 -12 -12 -6 -6 -11 -14 -10 -8 -4 -8 -12 -11 -11 -16 -13 -9 -7 -9 -7 -7 -8
+DST1307*20PPX120 0 -4 -5 -1 -1 0 0 1 1 -2 -1 0 -1 -1 1 1 2 0 0 -1 -3 -6 -7 -3 -2 -1
+DST1307*21PPX120 0 1 5 7 8 6 7 8 7 6 4 3 4 7 7 5 9 8 3 1 1 1 3 5 6 5
+DST1307*22PPX120 0 7 7 7 7 9 10 14 14 13 13 14 14 12 12 12 14 13 13 9 8 7 4 8 7 10
+DST1307*23PPX120 0 10 9 4 4 4 6 8 10 9 7 7 3 -1 0 3 7 7 7 5 3 -1 -3 -4 -1 4
+DST1307*24PPX120 0 1 -2 -2 -3 -3 1 5 7 7 9 11 10 7 5 5 6 5 3 -1 -4 -4 -3 0 2 3
+DST1307*25PPX120 0 5 7 9 11 11 10 7 6 5 7 12 13 17 20 22 24 24 27 16 12 12 2 7 3 12
+DST1307*26PPX120 0 -8 -9 -3 -1 -8 -8 -1 1 -2 -3 -1 1 -1 -5 1 1 -2 -1 -5 -11 -12 -15 -10 -9 -5
+DST1307*27PPX120 0 -7 -7 -6 -7 -5 -5 -2 -1 -1 -1 1 5 7 7 7 10 5 3 -6 -7 -6 -6 -6 -11 -2
+DST1307*28PPX120 0 -11 -10 -15 -16 -13 -10 -6 -8 -8 -8 -4 -1 3 2 2 -1 0 0 -2 -2 -7 -10 -9 -7 -6
+DST1307*29PPX120 0 -4 -2 1 2 1 -1 0 1 1 1 4 6 7 4 3 5 5 5 5 7 9 9 12 12 4
+DST1307*30PPX120 0 13 14 10 6 1 3 3 3 5 6 7 4 3 -1 -3 -2 -2 -4 -9 -10 -11 -9 -6 -1 1
+DST1307*31PPX120 0 0 0 2 1 -1 1 3 5 4 4 5 3 6 8 8 5 6 3 2 3 3 3 6 6 4
+DST1308*01PPX120 0 0 -1 -1 0 2 1 -1 -4 -4 -4 -4 -3 -1 0 5 9 8 14 17 17 16 14 14 13 4
+DST1308*02PPX120 0 13 12 11 8 9 11 10 9 8 8 9 9 8 6 9 11 12 11 12 12 11 10 10 4 10
+DST1308*03PPX120 0 3 3 3 6 10 12 11 13 12 12 11 11 10 10 12 14 13 17 15 11 10 8 5 9 10
+DST1308*04PPX120 0 12 10 9 11 18 24 24 17 10 7 15 17 13 13 13 22 10 -22 -19 -19 -27 -34 -39 -31 2
+DST1308*05PPX120 0 -35 -42 -44 -38 -39 -35 -29 -27 -32 -34 -30 -29 -22 -21 -22 -21 -21 -20 -14 -13 -20 -25 -27 -31 -28
+DST1308*06PPX120 0 -34 -33 -27 -25 -22 -18 -17 -17 -17 -16 -13 -11 -10 -10 -8 -8 -7 -5 -6 -9 -11 -17 -18 -17 -16
+DST1308*07PPX120 0 -17 -18 -16 -13 -9 -6 -6 -5 -4 -4 -4 -3 -1 1 0 -2 -2 -3 -5 -8 -10 -10 -11 -11 -7
+DST1308*08PPX120 0 -11 -11 -12 -8 -5 -1 -1 -4 -5 -8 -7 -4 -2 -1 0 0 -1 -3 -2 -3 0 5 0 -2 -4
+DST1308*09PPX120 0 -2 -5 -2 5 10 8 10 10 12 14 13 11 6 10 16 16 12 10 11 9 9 4 3 0 8
+DST1308*10PPX120 0 -2 -1 -4 -3 2 5 6 3 5 4 5 11 13 11 5 9 10 14 17 18 18 16 14 10 8
+DST1308*11PPX120 0 5 3 7 7 5 7 9 11 11 10 9 10 9 9 8 7 5 4 3 6 9 7 5 -1 7
+DST1308*12PPX120 0 -2 3 6 8 13 15 15 14 13 14 14 13 13 10 11 15 11 13 12 11 12 9 6 3 11
+DST1308*13PPX120 0 3 3 1 1 5 10 12 11 14 12 7 10 16 20 21 25 16 2 -2 2 4 -1 -3 -2 8
+DST1308*14PPX120 0 -5 -10 -19 -22 -20 -13 -11 -6 -4 -2 -2 1 0 -1 -2 0 4 11 10 8 4 -2 -9 -15 -4
+DST1308*15PPX120 0 -20 -23 -22 -17 -11 -4 -2 3 0 -8 -19 -16 -4 -1 -3 -4 -7 -9 -4 1 -4 -11 -19 -19 -9
+DST1308*16PPX120 0 -12 -16 -18 -25 -35 -29 -20 -23 -30 -30 -26 -21 -26 -27 -28 -26 -26 -25 -24 -21 -20 -20 -21 -23 -24
+DST1308*17PPX120 0 -20 -18 -18 -16 -18 -17 -15 -11 -11 -12 -12 -13 -14 -16 -18 -17 -14 -12 -12 -13 -14 -16 -13 -10 -15
+DST1308*18PPX120 0 -7 -7 -6 -9 -8 -5 -6 -8 -9 -5 -4 -3 -6 -7 -7 -5 -4 -9 -13 -16 -14 -11 -8 -6 -8
+DST1308*19PPX120 0 -5 -6 -6 -3 0 2 3 3 3 1 0 1 -2 -4 -7 -9 -8 -7 -8 -6 -6 -6 -6 -5 -3
+DST1308*20PPX120 0 -3 -3 -1 1 1 1 1 2 2 2 3 3 0 0 1 4 6 8 11 16 16 18 26 35 6
+DST1308*21PPX120 0 27 28 27 8 -9 -20 -20 -9 -7 -9 -8 -12 -15 -15 -8 -4 0 9 10 -7 -7 -17 -15 -10 -3
+DST1308*22PPX120 0 -8 -7 -13 -10 -4 -4 -10 -12 -7 -9 -11 -10 -13 -12 -11 -11 -13 -13 -11 -4 -6 -10 -14 -23 -10
+DST1308*23PPX120 0 -27 -31 -34 -26 -20 -21 -21 -17 -16 -18 -28 -26 -17 -17 -20 -20 -20 -21 -19 -17 -15 -16 -16 -19 -21
+DST1308*24PPX120 0 -16 -13 -12 -9 -5 -1 -1 -1 -4 -8 -10 -11 -12 -12 -16 -15 -11 -11 -10 -13 -15 -17 -17 -17 -11
+DST1308*25PPX120 0 -16 -15 -11 -7 -4 -6 -9 -13 -15 -17 -12 -14 -18 -19 -18 -19 -17 -19 -20 -20 -20 -20 -21 -23 -16
+DST1308*26PPX120 0 -21 -18 -16 -13 -9 -8 -8 -5 -4 -1 -1 -1 -5 -5 -4 -1 -3 -4 -2 1 -1 -1 -1 -4 -6
+DST1308*27PPX120 0 -8 -13 -12 -9 -7 -4 -1 2 3 3 2 -4 -9 -10 -7 4 5 -1 -23 -37 -51 -54 -47 -47 -14
+DST1308*28PPX120 0 -45 -44 -49 -49 -45 -37 -35 -29 -22 -22 -22 -21 -21 -23 -24 -22 -21 -18 -19 -21 -22 -21 -21 -22 -28
+DST1308*29PPX120 0 -18 -14 -13 -12 -10 -8 -7 -5 -4 -4 -6 -6 -4 -4 -6 -9 -9 -7 -9 -8 -7 -7 -6 -6 -8
+DST1308*30PPX120 0 -4 -2 0 3 5 5 6 7 9 13 15 9 6 7 10 13 9 5 2 -5 -7 -4 -10 -26 3
+DST1308*31PPX120 0 -33 -36 -37 -32 -22 -16 -16 -26 -35 -30 -26 -21 -20 -26 -27 -24 -23 -21 -19 -19 -16 -9 -9 -11 -23
+DST1309*01PPX120 0 -17 -15 -13 -15 -15 -17 -17 -21 -17 -12 -11 -12 -14 -20 -24 -25 -22 -20 -22 -25 -30 -32 -30 -27 -20
+DST1309*02PPX120 0 -24 -21 -16 -12 -11 -22 -21 -17 -20 -24 -24 -22 -19 -21 -25 -26 -22 -22 -23 -22 -20 -18 -17 -16 -20
+DST1309*03PPX120 0 -10 -4 2 7 8 6 0 -1 1 -5 -7 -12 -14 -13 -14 -12 -6 -2 -2 -5 -7 -8 -14 -21 -6
+DST1309*04PPX120 0 -16 -9 -6 -3 -2 -4 -5 -7 -6 -3 -4 -11 -14 -11 -9 -7 -3 -1 1 -1 -4 -10 -12 -11 -7
+DST1309*05PPX120 0 -6 -1 -1 0 3 2 2 1 1 1 -2 -3 -2 0 0 1 2 3 3 0 -5 -10 -13 -10 -1
+DST1309*06PPX120 0 -9 -4 -2 -4 0 0 2 1 -1 -1 -4 -2 -2 1 0 -2 -3 -5 -7 -11 -15 -20 -22 -21 -5
+DST1309*07PPX120 0 -15 -11 -10 -8 -6 -9 -10 -7 -5 -7 -7 -4 -1 0 0 0 0 1 2 3 1 -1 -2 -1 -4
+DST1309*08PPX120 0 -1 7 4 -2 6 7 4 -2 -3 -5 -6 -10 -11 -12 -10 -7 -7 -6 -2 -3 -5 -8 -11 -14 -4
+DST1309*09PPX120 0 -14 -14 -13 -11 -8 -8 -7 -8 -5 -5 -10 -10 -9 -8 -6 -5 -3 0 5 5 2 0 -4 -7 -6
+DST1309*10PPX120 0 -8 -10 -10 -7 -3 -1 1 1 0 -4 -8 -10 -4 -2 -6 3 3 4 2 2 -7 -13 -13 -8 -4
+DST1309*11PPX120 0 -5 -4 0 3 4 2 1 -3 -5 -5 -4 -2 -2 -2 -2 -3 -6 -6 -6 -2 -1 1 -2 -4 -2
+DST1309*12PPX120 0 -4 -1 3 5 3 -1 -5 -8 -10 -6 -3 1 1 5 6 5 9 12 10 9 1 -9 -10 -12 0
+DST1309*13PPX120 0 -9 -6 -4 -2 -1 -2 -2 -4 -5 -2 0 0 -4 -3 0 2 1 2 0 -8 -8 -8 -8 -8 -3
+DST1309*14PPX120 0 -7 -7 -6 -7 -5 -6 -7 -8 -8 -6 -6 -4 -6 -3 -3 -4 -2 0 -1 -3 -2 -3 -4 -7 -5
+DST1309*15PPX120 0 -8 -7 -5 -2 -1 -1 -1 -1 0 2 1 0 -2 0 2 1 2 3 2 1 -1 -3 -6 -7 -1
+DST1309*16PPX120 0 -6 -8 -9 -7 -7 -6 -6 -7 -5 -3 -1 -1 -3 -5 -5 -5 -4 -3 -2 -3 -5 -6 -6 -4 -5
+DST1309*17PPX120 0 2 5 2 1 -5 -12 -11 -14 -11 -12 -11 -9 -10 -6 0 6 6 4 8 12 7 -5 -7 -9 -3
+DST1309*18PPX120 0 -10 -6 -2 -2 -1 -1 0 2 2 3 3 6 7 14 11 8 3 4 8 1 -5 -7 -10 -13 1
+DST1309*19PPX120 0 -9 -8 -9 -9 -14 -19 -17 -16 -18 -12 -12 -14 -18 -13 -11 -10 -8 -11 -12 -14 -17 -19 -19 -16 -14
+DST1309*20PPX120 0 -9 -3 -2 -5 -7 -10 -12 -16 -15 -12 -14 -13 -13 -12 -10 -6 -5 -5 -2 -4 -5 -10 -10 -10 -9
+DST1309*21PPX120 0 -10 -14 -15 -11 -7 -4 -4 -5 -7 -6 -4 1 2 -2 -2 -3 -4 1 1 0 -3 -5 -9 -8 -5
+DST1309*22PPX120 0 -10 -7 -9 -7 -10 -8 -5 -8 -9 -8 -7 -5 -5 -6 -8 -8 -8 -3 2 2 0 -3 -5 -7 -6
+DST1309*23PPX120 0 -7 -9 -8 -7 -4 -6 -4 -3 -3 -4 -2 -1 -1 -2 -3 -2 2 6 6 5 2 0 -4 -9 -2
+DST1309*24PPX120 0 -10 -11 -12 -7 -3 0 0 2 6 13 7 -13 -25 -13 -23 -21 -20 -14 -11 -11 -16 -21 -24 -24 -10
+DST1309*25PPX120 0 -21 -16 -14 -11 -11 -12 -11 -14 -13 -12 -12 -10 -10 -9 -8 -6 -3 0 0 -3 -7 -7 -9 -13 -10
+DST1309*26PPX120 0 -14 -11 -7 -6 -5 -5 -4 -4 -4 -4 -4 -2 -1 0 0 -2 -4 -5 -4 -4 -5 -5 -2 1 -4
+DST1309*27PPX120 0 3 3 3 3 4 5 4 3 2 1 1 1 2 0 0 0 -2 -1 0 1 -1 0 1 2 1
+DST1309*28PPX120 0 3 4 2 0 0 -1 -1 -1 -2 -3 -3 -2 -2 -2 -2 0 1 1 0 -1 1 5 6 5 0
+DST1309*29PPX120 0 5 5 5 4 2 2 2 3 4 6 6 5 4 3 3 5 7 6 5 8 12 9 8 10 5
+DST1309*30PPX120 0 8 4 5 6 7 4 2 3 4 2 0 1 0 1 -1 -1 0 2 6 6 5 6 7 7 4
+DST1310*01PPX120 0 14 16 17 17 20 20 21 23 23 22 23 19 17 13 13 7 12 20 19 13 9 2 -3 -4 15
+DST1310*02PPX120 0 -1 2 30 -6 -14 -35 -64 -67 -61 -56 -58 -55 -60 -58 -54 -50 -45 -39 -38 -43 -46 -50 -50 -43 -40
+DST1310*03PPX120 0 -42 -49 -48 -46 -44 -44 -42 -40 -35 -32 -30 -29 -29 -28 -26 -22 -16 -13 -11 -12 -20 -22 -23 -23 -30
+DST1310*04PPX120 0 -23 -20 -16 -15 -16 -16 -16 -16 -13 -10 -12 -15 -17 -17 -17 -16 -14 -14 -13 -12 -12 -11 -10 -11 -15
+DST1310*05PPX120 0 -13 -12 -10 -9 -10 -10 -9 -8 -8 -9 -9 -8 -8 -8 -8 -8 -7 -7 -8 -8 -7 -5 -3 -3 -8
+DST1310*06PPX120 0 -4 -4 -2 -2 -1 0 1 1 2 1 2 3 2 0 -1 -1 0 3 1 -2 -3 -6 -6 -3 -1
+DST1310*07PPX120 0 -1 3 6 0 -4 -7 -9 -9 -9 -11 -9 -6 -5 -6 -8 -6 -7 -7 -9 -11 -8 -6 -6 -7 -6
+DST1310*08PPX120 0 -8 -5 -5 -7 -4 -1 1 1 0 -2 -2 -2 -5 -4 2 9 12 14 15 10 22 14 -29 -15 0
+DST1310*09PPX120 0 -61 -62 -54 -58 -50 -49 -48 -44 -40 -28 -28 -37 -38 -34 -24 -14 -16 -23 -25 -23 -18 -4 -6 -8 -33
+DST1310*10PPX120 0 -21 -31 -27 -26 -33 -36 -33 -27 -24 -22 -22 -24 -25 -23 -22 -21 -18 -19 -18 -19 -17 -19 -15 -15 -23
+DST1310*11PPX120 0 -18 -19 -19 -19 -21 -20 -18 -20 -20 -19 -19 -16 -14 -10 -7 -7 -6 -4 -1 -5 -6 -6 -6 -7 -13
+DST1310*12PPX120 0 -7 -8 -9 -9 -9 -10 -8 -6 -5 -5 -4 -4 0 1 5 7 8 6 3 3 3 3 1 -4 -2
+DST1310*13PPX120 0 -5 -4 -3 -2 -2 -1 1 4 7 7 6 4 2 1 0 2 4 7 7 6 7 5 1 -3 2
+DST1310*14PPX120 0 -4 -3 -5 -9 -10 -6 -5 -3 2 8 -3 -13 -12 -3 -5 -15 -20 -22 -22 -36 -37 -36 -33 -37 -14
+DST1310*15PPX120 0 -37 -39 -37 -43 -39 -39 -36 -33 -26 -22 -22 -21 -24 -20 -19 -20 -19 -15 -13 -12 -11 -11 -8 -13 -24
+DST1310*16PPX120 0 -16 -18 -18 -24 -25 -22 -20 -21 -21 -21 -20 -17 -13 -11 -10 -11 -16 -15 -16 -11 -5 -5 -4 -6 -15
+DST1310*17PPX120 0 -8 -9 -11 -10 -10 -14 -17 -16 -17 -18 -18 -16 -17 -11 -11 -14 -17 -19 -16 -15 -12 -9 -10 -10 -14
+DST1310*18PPX120 0 -7 -7 -8 -11 -12 -11 -10 -14 -14 -12 -11 -10 -9 -5 -3 -2 -2 -5 -6 -4 2 -1 -1 0 -7
+DST1310*19PPX120 0 0 0 -1 -2 -1 0 1 -1 -1 -2 -1 1 2 2 2 0 -2 -2 -1 -2 -3 -3 -2 0 -1
+DST1310*20PPX120 0 4 5 3 0 -1 -1 0 0 1 3 3 3 4 5 4 4 2 0 1 0 1 0 3 6 2
+DST1310*21PPX120 0 6 5 4 3 1 2 3 2 3 3 6 7 9 12 14 13 11 11 13 15 15 12 11 12 8
+DST1310*22PPX120 0 13 15 15 19 20 20 18 16 15 15 17 17 18 16 13 9 9 12 12 11 14 10 7 6 14
+DST1310*23PPX120 0 6 5 4 2 2 -1 -6 -9 -4 -4 -6 -1 4 6 9 8 6 7 6 6 9 8 6 2 3
+DST1310*24PPX120 0 0 1 1 5 6 10 10 8 8 9 9 11 13 13 14 14 13 12 12 12 13 10 7 4 9
+DST1310*25PPX120 0 2 1 1 0 1 7 10 9 8 4 4 7 7 6 5 4 6 7 9 10 12 14 9 9 6
+DST1310*26PPX120 0 7 5 4 3 4 8 10 10 7 7 8 8 7 6 6 6 6 8 8 6 6 8 8 9 7
+DST1310*27PPX120 0 9 12 11 9 7 10 11 8 10 13 17 17 16 15 15 14 15 16 13 11 13 16 14 11 13
+DST1310*28PPX120 0 11 9 7 9 11 12 10 13 13 13 13 14 14 12 11 13 13 13 12 10 13 14 14 13 12
+DST1310*29PPX120 0 12 12 12 10 12 13 16 14 13 9 12 12 5 10 15 13 12 12 10 7 2 3 8 10 11
+DST1310*30PPX120 0 9 7 2 1 6 9 5 -4 -14 -22 -24 -29 -29 -24 -20 -20 -20 -19 -21 -30 -34 -41 -49 -50 -17
+DST1310*31PPX120 0 -43 -36 -35 -36 -34 -29 -26 -26 -25 -21 -13 -6 -10 -8 -5 -3 -5 -7 -14 -16 -17 -16 -19 -19 -20
+DST1311*01PPX120 0 -30 -30 -27 -26 -28 -29 -29 -31 -33 -34 -32 -27 -23 -24 -26 -20 -18 -16 -17 -20 -21 -20 -15 -15 -25
+DST1311*02PPX120 0 -15 -13 -11 -12 -12 -12 -14 -15 -14 -13 -7 -3 -3 -4 -6 -9 -6 -4 -4 -4 -6 -10 -10 -13 -9
+DST1311*03PPX120 0 -15 -13 -11 -12 -16 -17 -18 -23 -19 -17 -15 -12 -7 -7 -6 -5 -3 -3 -5 -6 -8 -7 -15 -16 -12
+DST1311*04PPX120 0 -14 -12 -10 -10 -12 -16 -15 -15 -13 -15 -23 -22 -19 -15 -14 -17 -16 -8 -8 -9 -10 -11 -11 -13 -14
+DST1311*05PPX120 0 -14 -16 -14 -13 -17 -19 -20 -21 -26 -28 -22 -20 -19 -17 -14 -13 -9 -6 -5 -4 -4 -6 -4 -5 -14
+DST1311*06PPX120 0 -6 -5 -3 -2 -3 -5 -5 -7 -9 -9 -7 -4 -3 -2 2 5 6 7 5 4 4 0 -5 -11 -2
+DST1311*07PPX120 0 -7 -2 -1 -2 -8 -14 -20 -23 -20 -30 -40 -48 -54 -44 -36 -36 -32 -28 -26 -17 -19 -24 -26 -26 -24
+DST1311*08PPX120 0 -25 -21 -17 -15 -16 -19 -21 -21 -19 -16 -20 -17 -16 -15 -13 -14 -12 -11 -8 -4 -2 0 4 6 -13
+DST1311*09PPX120 0 6 4 1 -8 -24 -34 -58 -75 -81 -75 -74 -68 -59 -56 -47 -46 -44 -42 -37 -31 -29 -27 -26 -26 -40
+DST1311*10PPX120 0 -26 -29 -33 -32 -29 -27 -27 -28 -31 -37 -37 -34 -30 -32 -36 -36 -31 -30 -27 -21 -24 -28 -30 -31 -30
+DST1311*11PPX120 0 -39 -44 -41 -32 -38 -53 -67 -70 -58 -54 -56 -55 -51 -48 -37 -38 -38 -32 -28 -31 -29 -28 -27 -27 -43
+DST1311*12PPX120 0 -26 -25 -26 -26 -25 -22 -23 -26 -26 -22 -17 -17 -16 -15 -16 -18 -16 -15 -16 -18 -17 -18 -22 -26 -21
+DST1311*13PPX120 0 -28 -27 -23 -20 -20 -22 -25 -27 -25 -25 -23 -18 -16 -16 -19 -20 -18 -17 -16 -14 -11 -13 -12 -12 -19
+DST1311*14PPX120 0 -11 -12 -13 -14 -13 -10 -8 -8 -8 -11 -11 -9 -8 -9 -13 -13 -12 -11 -11 -10 -10 -10 -11 -14 -11
+DST1311*15PPX120 0 -13 -15 -18 -20 -16 -18 -19 -22 -20 -22 -22 -18 -18 -14 -9 -11 -18 -18 -21 -22 -21 -25 -25 -31 -19
+DST1311*16PPX120 0 -38 -43 -44 -39 -31 -32 -33 -29 -28 -27 -26 -21 -24 -17 -12 -14 -10 -10 -11 -13 -14 -15 -16 -18 -24
+DST1311*17PPX120 0 -15 -14 -14 -17 -18 -18 -23 -27 -23 -22 -22 -23 -21 -17 -17 -18 -14 -11 -12 -11 -12 -12 -12 -13 -17
+DST1311*18PPX120 0 -15 -16 -11 -10 -8 -7 -12 -15 -18 -18 -16 -13 -12 -13 -12 -11 -8 -8 -8 -4 -3 -3 -4 -3 -10
+DST1311*19PPX120 0 0 1 0 -2 -5 -4 -5 -7 -7 -8 -6 -1 0 1 0 4 7 5 0 -4 -7 -6 -6 -6 -2
+DST1311*20PPX120 0 -5 -7 -8 -7 -5 -5 -6 -10 -13 -16 -12 -11 -13 -9 -6 -6 -4 -5 -6 -6 -8 -8 -8 -8 -8
+DST1311*21PPX120 0 -6 -7 -7 -8 -7 -6 -5 -6 -5 -4 -2 -1 -3 -4 -2 -1 -1 -2 -3 -3 -4 -4 -7 -8 -4
+DST1311*22PPX120 0 -10 -9 -8 -5 -2 -3 -2 -1 -1 -4 -4 -3 -1 -1 0 0 3 4 3 1 -1 -2 -4 -5 -2
+DST1311*23PPX120 0 -5 -3 1 -2 -4 0 1 -4 -15 -22 -24 -28 -27 -22 -23 -19 -17 -11 -12 -11 -9 -10 -11 -10 -12
+DST1311*24PPX120 0 -9 -7 -7 -10 -11 -11 -10 -8 -8 -10 -11 -10 -7 -7 -7 -9 -10 -9 -7 -9 -8 -7 -7 -6 -9
+DST1311*25PPX120 0 -4 -4 -6 -8 -6 -5 -4 -4 -5 -6 -6 -6 -6 -8 -6 -6 -5 -4 -4 -2 -2 -1 1 2 -4
+DST1311*26PPX120 0 1 0 0 0 -1 -3 -3 -2 -1 -1 -3 -2 -1 0 0 -1 2 6 7 7 8 9 14 15 2
+DST1311*27PPX120 0 15 17 16 13 10 9 7 6 8 10 9 10 9 9 8 9 5 5 7 7 7 9 9 10 9
+DST1311*28PPX120 0 10 10 10 11 11 11 10 11 11 9 10 8 9 11 10 9 12 11 7 8 7 4 2 1 9
+DST1311*29PPX120 0 2 2 6 15 15 10 9 5 1 3 7 6 9 10 9 4 8 2 -2 -7 -9 -11 -8 -7 3
+DST1311*30PPX120 0 -9 -7 -8 -5 -5 -5 -4 -2 -3 -7 -9 -9 -6 -3 -7 -11 -10 -10 -11 -14 -13 -5 -6 -13 -8
+DST1312*01PPX120 0 -7 -15 -20 -16 -21 -19 -15 -16 -17 -17 -12 -7 -4 6 -2 -3 -7 -6 -8 -9 -10 -9 -7 -9 -10
+DST1312*02PPX120 0 -8 -7 -5 -2 -2 -3 -3 0 1 1 0 -2 -2 -1 0 0 0 -2 -3 -7 -10 -9 -8 -7 -3
+DST1312*03PPX120 0 -5 -3 -2 -2 -2 1 4 2 0 -7 -12 -17 -17 -16 -10 -15 -19 -15 -16 -18 -19 -13 -13 -11 -9
+DST1312*04PPX120 0 -8 -7 -6 -2 3 6 6 -1 -4 -5 -5 -6 -5 -4 -4 -2 -3 -5 -9 -12 -14 -18 -17 -18 -6
+DST1312*05PPX120 0 -18 -17 -16 -13 -11 -12 -15 -18 -19 -15 -17 -15 -13 -5 1 0 -2 -2 -3 -6 -9 -11 -11 -10 -11
+DST1312*06PPX120 0 -8 -4 -2 1 6 5 7 9 8 4 3 1 3 3 1 2 1 2 3 3 0 0 0 3 2
+DST1312*07PPX120 0 7 8 1 -2 -3 -7 -6 -7 -6 -5 -3 -4 -4 -1 0 3 4 5 5 5 3 6 18 19 2
+DST1312*08PPX120 0 15 10 9 -10 -47 -40 -37 -52 -66 -56 -48 -39 -35 -31 -28 -31 -29 -32 -33 -29 -33 -31 -31 -29 -31
+DST1312*09PPX120 0 -26 -24 -20 -19 -17 -13 -13 -16 -20 -22 -22 -23 -24 -24 -23 -21 -20 -16 -16 -17 -15 -14 -16 -15 -19
+DST1312*10PPX120 0 -14 -11 -10 -10 -11 -6 -11 -19 -23 -23 -21 -19 -16 -14 -13 -14 -15 -15 -11 -9 -8 -8 -6 -4 -13
+DST1312*11PPX120 0 -3 -4 -5 -4 -6 -7 -9 -9 -10 -10 -10 -9 -10 -10 -8 -8 -9 -8 -5 -4 -5 -5 -7 -7 -7
+DST1312*12PPX120 0 -6 -8 -8 -6 -6 -6 -6 -7 -9 -11 -9 -6 -4 -6 -8 -10 -11 -8 -5 -4 -2 0 2 2 -6
+DST1312*13PPX120 0 3 4 4 3 2 4 4 3 4 4 9 11 13 23 33 28 27 23 26 25 25 25 23 22 15
+DST1312*14PPX120 0 25 17 7 4 0 -1 4 3 2 1 3 5 2 0 -4 -11 -26 -37 -37 -30 -24 -18 -16 -12 -6
+DST1312*15PPX120 0 -9 -7 -7 -4 -5 -8 -11 -15 -17 -17 -15 -16 -17 -12 -7 -5 -1 -9 -14 -13 -13 -14 -15 -11 -11
+DST1312*16PPX120 0 -7 -3 3 -1 -9 -17 -22 -22 -24 -20 -17 -16 -11 -11 -12 -18 -20 -15 -15 -15 -13 -9 -10 -9 -13
+DST1312*17PPX120 0 -8 -5 -4 -4 -5 -5 -7 -8 -10 -10 -10 -10 -10 -10 -7 -5 -5 -7 -7 -8 -8 -5 -2 -3 -7
+DST1312*18PPX120 0 -1 2 3 -1 -8 -10 -9 -10 -11 -9 -7 -6 -5 -2 -2 -6 -10 -9 -5 -4 -6 -7 -7 -3 -6
+DST1312*19PPX120 0 0 0 -3 -3 -5 -3 -6 -8 -11 -9 -7 -6 -5 -5 -5 -9 -13 -17 -20 -22 -19 -18 -14 -10 -9
+DST1312*20PPX120 0 -10 -9 -5 -4 -9 -7 -5 -7 -10 -13 -13 -13 -9 -5 -5 -4 -7 -10 -10 -9 -9 -9 -10 -12 -9
+DST1312*21PPX120 0 -11 -8 -7 -7 -7 -8 -9 -9 -7 -5 -4 -5 -4 -3 0 -2 -4 -4 -3 -2 -1 0 1 3 -4
+DST1312*22PPX120 0 3 4 2 0 1 8 7 4 2 3 6 10 9 8 7 7 8 9 9 7 5 6 6 6 6
+DST1312*23PPX120 0 6 6 6 6 4 3 6 6 6 6 6 6 7 10 10 9 4 3 4 4 3 3 4 5 6
+DST1312*24PPX120 0 7 7 6 8 7 8 9 9 10 12 13 12 12 13 11 7 2 3 6 6 3 3 5 6 8
+DST1312*25PPX120 0 7 10 12 15 16 19 14 6 -2 -11 -16 -22 -32 -35 -34 -35 -33 -30 -27 -18 -13 -14 -14 -12 -10
+DST1312*26PPX120 0 -11 -11 -10 -10 -12 -14 -12 -9 -7 -4 -7 -9 -7 -5 0 2 3 2 3 3 2 0 0 -1 -5
+DST1312*27PPX120 0 -1 0 1 2 4 5 6 6 8 8 8 9 7 7 7 8 8 7 5 9 16 18 18 21 8
+DST1312*28PPX120 0 22 20 16 15 14 13 15 16 17 19 20 17 10 4 3 4 5 4 8 15 16 12 2 -1 12
+DST1312*29PPX120 0 -5 -5 -7 -6 -5 -2 2 0 0 0 -3 -1 2 5 5 1 -2 -3 -1 1 1 2 2 0 -1
+DST1312*30PPX120 0 0 1 0 1 -1 -2 -4 -6 -7 -8 -12 -13 -7 -6 -3 -5 -9 -6 -4 -2 -2 -2 -4 -5 -4
+DST1312*31PPX120 0 -9 -9 -7 -3 -6 -4 -2 0 0 -6 -5 -2 1 1 3 3 3 5 6 5 6 7 7 6 0
+DST1401*01PPX120 0 -1 -1 -2 -4 -4 -9 -11 -10 -8 2 11 9 -3 -21 -34 -40 -32 -25 -24 -24 -26 -25 -19 -17 -13
+DST1401*02PPX120 0 -19 -19 -19 -28 -27 -24 -21 -25 -21 -21 -25 -24 -17 -22 -27 -29 -24 -17 -17 -10 -11 -16 -18 -17 -21
+DST1401*03PPX120 0 -14 -10 -9 -13 -17 -16 -19 -21 -19 -22 -23 -20 -21 -19 -17 -18 -26 -28 -28 -30 -30 -26 -24 -23 -21
+DST1401*04PPX120 0 -19 -15 -14 -16 -15 -16 -14 -11 -10 -14 -13 -7 -3 -6 -9 -12 -11 -6 -5 -10 -15 -16 -14 -14 -12
+DST1401*05PPX120 0 -14 -12 -12 -12 -12 -11 -8 -9 -10 -11 -12 -14 -16 -14 -11 -12 -10 -4 -2 -4 -9 -10 -10 -12 -10
+DST1401*06PPX120 0 -15 -12 -12 -12 -9 -7 -6 -8 -10 -12 -12 -10 -7 -8 -7 -5 -3 -5 -7 -8 -10 -10 -13 -14 -9
+DST1401*07PPX120 0 -14 -13 -11 -14 -13 -9 -9 -11 -12 -12 -12 -11 -11 -14 -12 -5 -3 -9 -10 -3 -2 -2 0 -2 -9
+DST1401*08PPX120 0 -6 -12 -15 -17 -16 -14 -14 -13 -15 -16 -14 -12 -14 -16 -15 -12 -9 -6 -4 -4 -8 -5 -2 -5 -11
+DST1401*09PPX120 0 -5 -9 -17 -25 -25 -23 -19 -17 -22 -23 -23 -20 -20 -17 -12 -7 -2 -1 0 -3 2 1 0 1 -12
+DST1401*10PPX120 0 1 -1 -4 -4 -8 -11 -9 -6 -6 0 2 -1 -4 -5 -4 -3 -6 -8 -8 -6 -5 -5 -6 -8 -5
+DST1401*11PPX120 0 -8 -8 -9 -11 -10 -8 -3 1 1 3 5 7 7 8 6 5 4 4 3 -3 -9 -13 -11 -6 -2
+DST1401*12PPX120 0 -7 -11 -11 -10 -8 -8 -5 -1 -5 -8 -9 -9 -11 -14 -15 -12 -9 -10 -8 -10 -15 -11 -17 -19 -10
+DST1401*13PPX120 0 -19 -19 -23 -23 -22 -15 -11 -3 -2 0 1 -1 -4 -4 -5 -8 -5 -5 -6 -4 -7 -8 -8 -10 -9
+DST1401*14PPX120 0 -14 -19 -17 -16 -12 -13 -12 -10 -12 -11 -6 -4 -7 -11 -13 -16 -12 -8 -6 -8 -12 -12 -9 -12 -11
+DST1401*15PPX120 0 -14 -14 -14 -15 -19 -20 -19 -17 -17 -16 -14 -11 -10 -7 -7 -7 -6 -5 -5 -5 -8 -10 -11 -12 -12
+DST1401*16PPX120 0 -12 -12 -10 -9 -7 -5 -5 -4 -3 -2 -2 -3 -5 -5 -5 -4 -2 0 1 2 2 1 0 -3 -4
+DST1401*17PPX120 0 -4 -2 -1 -1 -2 -3 -2 1 3 3 3 1 0 0 -1 -1 4 7 6 1 -3 -6 -8 -9 -1
+DST1401*18PPX120 0 -10 -11 -12 -11 -10 -8 -6 -6 -6 -6 -6 -4 -1 1 2 1 -1 -3 -1 3 9 10 11 9 -2
+DST1401*19PPX120 0 10 12 11 8 5 5 7 8 6 5 6 8 9 9 10 10 9 8 7 4 -1 -4 -4 -2 6
+DST1401*20PPX120 0 -3 -2 0 3 8 7 5 2 1 -3 -4 -5 -5 -5 -5 -3 -2 -2 -1 -2 -1 1 2 5 0
+DST1401*21PPX120 0 4 3 8 8 8 8 3 -1 4 6 -3 -7 -2 0 9 14 10 -1 -2 0 -1 -13 -11 -9 1
+DST1401*22PPX120 0 -8 -10 -11 -13 -14 -14 -15 -17 -20 -16 -11 -11 -14 -12 -13 -12 -7 -6 -4 -5 -7 -10 -9 -8 -11
+DST1401*23PPX120 0 -8 -10 -10 -9 -14 -16 -11 -9 -9 -7 -6 -3 -6 -11 -12 -7 -6 -4 -4 -5 -10 -14 -16 -18 -9
+DST1401*24PPX120 0 -17 -12 -13 -12 -12 -11 -6 -3 -4 -6 -6 -3 -3 0 0 0 1 3 2 2 2 2 -2 -3 -4
+DST1401*25PPX120 0 -2 -5 -12 -18 -18 -16 -14 -13 -8 -5 -3 -2 0 -1 -7 -11 -13 -10 -5 -4 -6 -15 -20 -23 -10
+DST1401*26PPX120 0 -22 -19 -20 -24 -26 -29 -29 -28 -27 -20 -14 -11 -11 -11 -10 -11 -10 -10 -9 -11 -11 -9 -5 -3 -16
+DST1401*27PPX120 0 -1 0 -4 -11 -16 -15 -12 -9 -9 -6 -1 -2 -5 -6 -5 -4 -2 -1 -1 -2 -5 -6 -6 -6 -6
+DST1401*28PPX120 0 -3 -1 -3 -10 -13 -13 -8 -3 -2 -4 -7 -7 -8 -7 -4 -3 0 1 -3 -6 -11 -14 -14 -14 -7
+DST1401*29PPX120 0 -11 -2 -4 -9 -15 -17 -17 -17 -15 -9 -4 -2 0 -3 -7 -11 -11 -9 -9 -9 -8 -9 -6 -7 -9
+DST1401*30PPX120 0 -6 -4 -6 -14 -18 -14 -13 -15 -17 -14 -9 -6 -6 -6 -8 -10 -8 -6 -6 -7 -11 -8 -9 -10 -10
+DST1401*31PPX120 0 -8 -7 -9 -11 -11 -10 -8 -6 -5 -1 4 3 1 0 -2 -2 -1 2 3 4 0 -2 -3 -4 -3
+DST1402*01PPX120 0 1 3 5 6 8 9 9 8 9 6 3 7 11 10 13 14 11 10 9 5 4 -1 -4 -1 6
+DST1402*02PPX120 0 -2 -2 0 2 0 1 0 -1 0 -1 0 4 7 7 4 2 4 7 9 7 4 0 -2 -3 2
+DST1402*03PPX120 0 5 9 11 12 9 5 6 10 9 9 5 7 9 7 3 1 -4 -1 4 5 5 2 -7 -10 5
+DST1402*04PPX120 0 -8 -9 -3 2 6 8 7 8 8 7 4 2 2 1 1 2 -1 1 5 10 12 12 10 8 4
+DST1402*05PPX120 0 8 5 7 6 12 15 13 11 12 12 6 6 8 5 4 5 7 10 13 14 16 15 9 1 9
+DST1402*06PPX120 0 0 -1 -1 2 0 -6 -11 -11 -12 -17 -26 -27 -25 -28 -29 -22 -25 -19 -15 -10 -9 -13 -16 -16 -14
+DST1402*07PPX120 0 -18 -19 -18 -16 -12 -10 -12 -14 -15 -16 -17 -17 -14 -14 -12 -8 -10 10 8 10 9 14 7 -19 -8
+DST1402*08PPX120 0 -24 8 18 19 11 -2 -6 -16 -25 -19 -18 -17 -14 -25 -26 -25 -25 -31 -30 -23 -19 -26 -29 -25 -15
+DST1402*09PPX120 0 -29 -36 -32 -28 -23 -28 -34 -32 -30 -24 -21 -21 -18 -25 -25 -22 -25 -25 -27 -19 -24 -27 -28 -25 -26
+DST1402*10PPX120 0 -22 -22 -17 -17 -19 -22 -24 -24 -25 -26 -26 -24 -22 -21 -21 -20 -19 -17 -10 -11 -19 -18 -18 -20 -20
+DST1402*11PPX120 0 -18 -17 -15 -14 -12 -11 -14 -13 -10 -11 -14 -14 -11 -10 -10 -11 -9 -5 -4 -3 -10 -16 -20 -20 -12
+DST1402*12PPX120 0 -14 -12 -11 -11 -15 -17 -17 -14 -10 -13 -18 -17 -13 -11 -11 -11 -15 -14 -11 -8 -6 -5 -1 1 -11
+DST1402*13PPX120 0 0 5 7 6 8 9 8 8 6 4 7 7 8 8 7 6 6 5 5 6 6 6 6 6 6
+DST1402*14PPX120 0 7 8 9 9 8 7 10 10 9 7 6 6 4 9 12 9 7 3 4 4 4 6 6 4 7
+DST1402*15PPX120 0 1 -4 -6 -3 2 6 6 5 4 -1 -3 3 12 27 28 33 35 38 42 42 46 47 41 31 18
+DST1402*16PPX120 0 10 -10 -1 2 -7 -10 -7 -6 -6 -11 -20 -21 -15 -8 -10 -8 -19 -22 -20 -23 -26 -27 -24 -18 -13
+DST1402*17PPX120 0 -18 -20 -21 -20 -15 -17 -19 -21 -20 -21 -24 -22 -18 -14 -14 -16 -18 -13 -9 -10 -10 -7 -12 -13 -16
+DST1402*18PPX120 0 -10 -10 -7 -7 -8 -8 -6 -2 -6 -6 -7 -5 1 3 3 1 -5 -14 -11 -16 -22 -30 -40 -49 -11
+DST1402*19PPX120 0 -57 -59 -62 -56 -52 -72 -95-106-116 -94 -83 -73 -68 -55 -57 -55 -49 -46 -44 -41 -39 -40 -38 -43 -63
+DST1402*20PPX120 0 -45 -48 -49 -34 -48 -72 -78 -64 -61 -58 -74 -90 -91 -82 -63 -59 -60 -52 -42 -43 -41 -44 -46 -46 -58
+DST1402*21PPX120 0 -48 -52 -51 -45 -43 -44 -47 -48 -49 -49 -49 -49 -43 -41 -43 -44 -39 -36 -34 -35 -35 -35 -42 -53 -44
+DST1402*22PPX120 0 -58 -60 -50 -51 -48 -48 -49 -43 -39 -37 -33 -34 -28 -27 -25 -26 -25 -21 -20 -19 -16 -17 -23 -23 -34
+DST1402*23PPX120 0 -22 -23 -22 -21 -14 -6 -3 10 5 5 1 -11 -17 -15 -7 -19 -33 -37 -42 -49 -46 -40 -46 -51 -21
+DST1402*24PPX120 0 -48 -44 -42 -42 -38 -35 -35 -35 -35 -33 -29 -29 -28 -29 -27 -26 -23 -18 -13 -9 -7 -7 -7 -8 -27
+DST1402*25PPX120 0 -9 -12 -13 -13 -13 -15 -16 -16 -13 -10 -10 -13 -15 -16 -15 -11 -8 -7 -8 -8 -8 -7 -9 -6 -11
+DST1402*26PPX120 0 -8 -9 -9 -6 -5 -3 -5 -5 -3 -1 -2 -2 -3 -4 -5 -4 -4 -2 -2 -2 1 4 7 4 -3
+DST1402*27PPX120 0 3 4 2 -3 -5 -3 -3 -4 -2 0 1 -2 -9 -10 -13 -16 -11 -3 -13 -30 -59 -90 -92 -94 -19
+DST1402*28PPX120 0 -89 -90 -86 -76 -71 -67 -66 -64 -66 -59 -53 -51 -53 -56 -55 -52 -50 -51 -44 -38 -34 -32 -32 -29 -57
+DST1403*01PPX120 0 -31 -29 -30 -30 -32 -37 -43 -48 -50 -47 -44 -41 -37 -35 -33 -31 -30 -27 -27 -26 -24 -20 -20 -20 -33
+DST1403*02PPX120 0 -24 -26 -27 -26 -25 -25 -23 -21 -23 -21 -22 -22 -20 -20 -20 -20 -20 -18 -15 -11 -7 -2 1 2 -18
+DST1403*03PPX120 0 -2 -8 -15 -21 -24 -24 -22 -22 -24 -21 -19 -17 -20 -17 -15 -10 -8 -8 -7 -5 -3 -1 -2 -3 -13
+DST1403*04PPX120 0 -6 -10 -12 -10 -7 -2 0 0 -3 -6 -13 -14 -12 -12 -11 -11 -10 -7 -5 -3 -3 -2 -1 -5 -7
+DST1403*05PPX120 0 -6 -8 -7 -6 -5 -3 -3 -4 -7 -7 -9 -8 -6 -2 -4 -4 -2 0 -2 -3 -9 -4 -2 -3 -5
+DST1403*06PPX120 0 -3 -6 -5 -3 -2 -1 -2 -3 -4 -5 -9 -6 -4 -3 -7 -10 -13 -11 -10 -7 -5 -4 -1 -2 -5
+DST1403*07PPX120 0 -3 -5 -5 -4 -4 -4 -4 -3 -2 -3 -3 -1 0 0 0 -2 -3 -4 -4 -4 -4 -4 -5 -6 -3
+DST1403*08PPX120 0 -8 -8 -7 -6 -4 -4 -2 -2 -4 -2 -2 -2 -2 -3 -3 -4 -3 -3 -4 -4 -3 1 0 -3 -3
+DST1403*09PPX120 0 -2 -1 -2 0 0 0 -3 -4 -1 0 1 2 1 -1 -2 1 4 5 4 5 7 7 9 9 2
+DST1403*10PPX120 0 8 7 7 7 10 13 14 14 11 7 -1 2 4 2 0 2 2 -1 -5 -6 -4 -2 0 2 4
+DST1403*11PPX120 0 2 2 0 -1 1 2 4 5 2 3 4 4 6 4 3 2 2 1 -3 -5 -8 -6 -3 -2 1
+DST1403*12PPX120 0 -3 -4 -5 -7 -6 -4 -4 -5 -6 -1 1 2 0 -2 -1 -1 -3 0 0 1 2 1 -3 -10 -2
+DST1403*13PPX120 0 -9 -17 -29 -37 -39 -32 -31 -29 -22 -20 -19 -17 -16 -20 -18 -15 -11 -11 -9 -5 -10 -9 -4 -2 -18
+DST1403*14PPX120 0 -4 -8 -16 -17 -15 -13 -11 -8 -9 -8 -10 -12 -12 -13 -11 -11 -9 -9 -10 -9 -9 -4 -1 -4 -10
+DST1403*15PPX120 0 -7 -9 -11 -12 -11 -9 -7 -6 -4 -2 -4 0 4 5 4 5 4 4 1 -1 -5 -4 0 1 -3
+DST1403*16PPX120 0 -1 -3 -4 -6 -8 -7 -5 -4 -4 -1 1 1 -2 -1 -1 1 0 0 1 -1 -1 -1 -1 0 -2
+DST1403*17PPX120 0 3 5 7 7 7 7 8 9 8 9 6 3 6 8 10 9 7 7 8 10 7 3 -1 0 6
+DST1403*18PPX120 0 -2 -1 0 1 1 -2 0 1 2 -4 -7 -9 -9 -11 -11 -9 -7 -3 -1 -1 1 3 6 5 -2
+DST1403*19PPX120 0 1 1 -1 1 1 1 -1 0 -2 0 3 4 4 2 1 1 2 1 1 2 0 3 5 4 1
+DST1403*20PPX120 0 0 0 0 1 2 4 9 14 11 6 5 7 18 22 22 21 21 17 17 13 12 18 19 13 11
+DST1403*21PPX120 0 6 2 -3 -9 -10 -10 -11 -13 -17 -16 -20 -14 -4 -4 -7 -5 -6 -7 -4 -3 -6 -6 -7 -3 -7
+DST1403*22PPX120 0 1 6 -1 3 5 9 9 12 10 10 7 6 5 6 4 7 4 4 5 6 4 3 5 4 6
+DST1403*23PPX120 0 0 -1 -1 1 1 0 4 5 3 0 -3 -5 -3 0 1 -1 -3 -3 -4 -9 -6 -5 -7 -7 -2
+DST1403*24PPX120 0 -6 -6 -4 0 4 6 9 9 8 8 3 0 5 7 7 7 4 1 -2 0 2 1 1 -2 3
+DST1403*25PPX120 0 -4 -5 -1 5 9 11 13 13 14 19 10 11 13 11 13 14 10 4 2 4 18 20 15 2 9
+DST1403*26PPX120 0 -4 -12 -14 -9 -6 -6 -6 -13 -18 -8 -8 -13 -11 -6 -3 -2 -1 -3 -8 -11 -7 -2 -1 1 -7
+DST1403*27PPX120 0 2 2 3 4 6 4 2 3 3 2 -7 -12 -12 -11 -14 -16 -16 -20 -22 -21 -15 -10 -9 -7 -7
+DST1403*28PPX120 0 -7 -6 -5 -3 -1 0 -2 -1 1 -3 -13 -10 -11 -9 -6 -5 -6 -7 -6 -5 -9 -7 -7 -13 -6
+DST1403*29PPX120 0 -15 -15 -17 -19 -17 -11 -8 -10 -6 -4 -5 -6 -7 -4 -3 -1 -2 -1 -2 -1 -1 -2 1 2 -6
+DST1403*30PPX120 0 1 2 5 8 5 2 1 6 8 8 1 0 0 6 9 11 9 7 5 4 3 0 1 1 4
+DST1403*31PPX120 0 -1 -2 -2 0 3 6 9 8 5 4 2 -1 0 6 8 11 4 -6 -12 -7 -4 -3 -5 -8 1
+DST1404*01PPX120 0 -7 -7 -5 -2 -1 1 1 -2 -1 0 1 5 9 11 14 9 3 1 -1 2 2 4 1 1 2
+DST1404*02PPX120 0 2 4 6 8 9 7 6 5 4 1 1 5 8 7 9 8 5 3 5 5 3 2 2 1 5
+DST1404*03PPX120 0 -1 1 3 6 8 6 6 7 6 2 3 5 9 11 11 10 5 4 6 10 8 4 3 3 6
+DST1404*04PPX120 0 4 6 8 10 10 10 8 5 2 5 5 8 6 9 10 10 8 7 7 8 7 7 6 6 7
+DST1404*05PPX120 0 7 4 7 11 10 8 6 9 10 1 -3 2 -9 -3 2 4 6 12 16 15 16 12 13 1 7
+DST1404*06PPX120 0 -1 0 2 5 3 3 6 6 5 3 1 4 3 1 -1 -1 -2 -1 0 3 3 5 6 4 2
+DST1404*07PPX120 0 -2 -5 -6 -6 -9 -9 -9 -6 -2 0 3 5 9 14 9 -5 -2 -4 -3 -7 -13 -14 -15 -16 -4
+DST1404*08PPX120 0 -12 -9 -9 -6 -9 -8 -4 -3 -2 0 -2 0 -4 -11 -10 -6 -7 -10 -9 -10 -12 -9 -6 -4 -7
+DST1404*09PPX120 0 -1 -1 0 0 -1 -1 -1 -5 -6 -7 -7 -5 -5 -5 -5 -5 -6 -7 -7 -11 -13 -9 -9 -7 -5
+DST1404*10PPX120 0 -4 -3 -3 -1 -2 -2 -3 -7 -8 -5 -3 -4 -4 -1 1 0 0 0 0 -2 1 5 5 5 -1
+DST1404*11PPX120 0 6 8 10 11 14 20 21 15 8 10 12 12 8 6 3 2 -1 -5 -11 -18 -25 -28 -34 -46 0
+DST1404*12PPX120 0 -55 -47 -50 -52 -62 -72 -78 -76 -80 -81 -79 -75 -71 -57 -55 -53 -52 -52 -47 -44 -51 -49 -45 -43 -59
+DST1404*13PPX120 0 -38 -40 -44 -49 -53 -58 -54 -47 -46 -44 -35 -25 -27 -27 -29 -28 -25 -24 -28 -29 -30 -35 -39 -34 -37
+DST1404*14PPX120 0 -28 -25 -24 -22 -21 -19 -19 -19 -19 -16 -17 -15 -15 -14 -13 -13 -12 -13 -14 -19 -23 -23 -22 -23 -19
+DST1404*15PPX120 0 -18 -13 -12 -12 -14 -11 -13 -11 -10 -10 -9 -8 -8 -9 -7 -7 -7 -7 -9 -13 -16 -15 -14 -11 -11
+DST1404*16PPX120 0 -5 -2 -1 1 1 0 -1 -1 1 1 -2 -3 0 6 9 10 8 9 10 9 5 5 4 1 3
+DST1404*17PPX120 0 2 3 -5 -7 -4 1 2 0 -1 0 1 8 9 9 -1 -10 -12 -10 -9 -7 -9 -6 -5 -7 -2
+DST1404*18PPX120 0 -6 -5 -2 -1 -7 -7 -4 -5 -7 -7 -8 -1 3 7 5 9 13 17 17 14 10 9 9 3 2
+DST1404*19PPX120 0 4 2 -2 7 12 -7 -14 -9 0 -7 -13 -6 -3 4 6 5 5 6 9 8 4 2 -5 -10 0
+DST1404*20PPX120 0 -6 4 10 8 8 -1 -2 0 0 1 2 28 24 15 20 6 4 4 -1 3 11 5 -4 -10 5
+DST1404*21PPX120 0 -10 -9 -16 -18 -18 -14 -14 -11 2 -9 -16 -10 -12 -20 -25 -23 -11 -11 -13 -6 -3 -8 -8 -10 -12
+DST1404*22PPX120 0 -12 -15 -15 -16 -10 -8 -5 0 4 4 0 -5 -7 -6 -6 -7 -9 -8 -9 -10 -9 -7 -7 -6 -7
+DST1404*23PPX120 0 -8 -6 -1 -1 0 0 3 2 2 2 0 -3 -4 -4 -3 -1 0 -3 -6 -12 -11 -5 -3 -4 -3
+DST1404*24PPX120 0 -6 -3 3 9 4 1 1 -2 -12 -15 -11 -13 -12 -11 -14 -13 -14 -13 -12 -12 -11 -8 -12 -19 -8
+DST1404*25PPX120 0 -17 -12 -9 -7 -9 -7 -5 -5 -6 -7 -5 -6 -11 -10 -8 -8 -9 -10 -10 -13 -17 -17 -18 -20 -10
+DST1404*26PPX120 0 -17 -14 -12 -12 -14 -14 -10 -9 -7 -6 -10 -13 -15 -14 -14 -13 -13 -15 -19 -19 -20 -17 -15 -11 -13
+DST1404*27PPX120 0 -7 -3 -3 -5 -5 -5 -2 -1 0 0 1 1 2 3 3 3 2 4 4 0 0 1 1 5 0
+DST1404*28PPX120 0 8 11 9 3 -3 -7 -7 -11 -14 -12 -8 -6 -8 -9 -6 -4 -4 -3 -2 -3 -5 -6 -9 -7 -4
+DST1404*29PPX120 0 -1 1 0 1 -1 -1 1 3 2 2 4 7 9 12 14 14 16 18 20 20 21 12 4 -2 7
+DST1404*30PPX120 0 -10 -16 -19 -26 -34 -44 -54 -59 -60 -64 -63 -55 -52 -46 -47 -48 -47 -44 -42 -34 -37 -37 -33 -28 -42
+DST1405*01PPX120 0 -24 -22 -22 -20 -22 -21 -19 -17 -13 -12 -11 -8 -8 -9 -11 -9 -10 -12 -12 -13 -12 -10 -7 -7 -14
+DST1405*02PPX120 0 -10 -8 -12 -13 -12 -9 -7 -6 -6 -4 -2 1 1 -2 -4 -7 -7 -6 -2 0 0 2 2 4 -4
+DST1405*03PPX120 0 0 0 0 3 7 10 11 9 7 8 11 14 13 11 8 8 9 10 12 3 -1 -11 -19 -23 4
+DST1405*04PPX120 0 -29 -31 -30 -28 -33 -37 -41 -39 -44 -44 -32 -27 -22 -31 -31 -28 -29 -33 -29 -20 -16 -17 -13 -10 -29
+DST1405*05PPX120 0 -10 -9 -11 -7 -15 -25 -21 -16 -19 -16 -9 -8 -12 -11 -12 -20 -29 -32 -26 -21 -16 -14 -9 -9 -16
+DST1405*06PPX120 0 -11 -10 -12 -11 -9 -10 -9 -7 -7 -6 -5 -5 -4 -3 -5 -7 -7 -5 -5 -5 -3 -2 -1 1 -6
+DST1405*07PPX120 0 1 0 -1 0 1 0 -1 -1 -1 -3 -3 -1 -2 -4 -6 -6 -5 -4 -4 -4 -4 -5 1 4 -2
+DST1405*08PPX120 0 0 -3 -7 -11 -17 -20 -28 -38 -44 -37 -26 -13 -17 -21 -26 -28 -35 -36 -33 -24 -30 -36 -38 -31 -25
+DST1405*09PPX120 0 -33 -36 -36 -33 -34 -33 -28 -30 -24 -20 -17 -15 -14 -13 -10 -10 -12 -14 -12 -9 -9 -10 -5 -3 -19
+DST1405*10PPX120 0 -4 -4 -6 -7 -8 -14 -11 -11 -18 -19 -14 -9 -10 -11 -13 -13 -13 -14 -15 -22 -29 -31 -22 -18 -14
+DST1405*11PPX120 0 -24 -30 -26 -25 -23 -22 -14 -10 -12 -15 -20 -17 -15 -14 -16 -19 -19 -21 -22 -24 -25 -27 -20 -13 -20
+DST1405*12PPX120 0 -12 -14 -14 -16 -16 -15 -15 -15 -17 -18 -17 -17 -17 -15 -14 -14 -14 -11 -9 -12 -13 -12 -8 -5 -14
+DST1405*13PPX120 0 -4 -1 -3 -4 -3 0 1 0 -1 -3 -1 -2 -1 2 4 5 4 2 6 7 6 4 5 7 1
+DST1405*14PPX120 0 6 8 4 5 5 6 7 8 7 6 6 6 3 -1 -3 -3 -4 -2 2 4 3 1 3 8 4
+DST1405*15PPX120 0 5 3 1 4 7 7 6 6 5 3 4 7 7 6 8 10 12 9 9 8 8 10 12 10 7
+DST1405*16PPX120 0 6 5 2 -1 -5 -3 2 5 7 8 12 12 10 10 10 9 6 4 2 -1 -3 -4 -2 0 4
+DST1405*17PPX120 0 1 3 2 -2 -2 0 0 0 -2 -3 -4 -4 -7 -7 -7 -4 0 2 3 7 9 8 6 3 0
+DST1405*18PPX120 0 1 -1 1 3 -2 -1 4 5 6 6 8 7 6 6 4 2 1 -1 1 3 5 4 2 1 3
+DST1405*19PPX120 0 2 3 1 -1 1 3 7 9 10 9 9 7 3 0 -2 -1 1 2 2 6 5 3 2 4 4
+DST1405*20PPX120 0 4 3 0 1 0 2 2 0 -3 -3 -1 2 -2 -4 -1 0 0 1 4 5 5 5 6 6 1
+DST1405*21PPX120 0 5 4 3 3 4 5 4 6 8 8 9 7 7 6 8 11 12 14 14 14 14 17 17 17 9
+DST1405*22PPX120 0 14 15 14 14 15 10 6 7 7 8 11 12 9 6 5 1 -1 -4 -11 -15 -16 -10 -6 -2 4
+DST1405*23PPX120 0 -11 -12 -21 -24 -18 -15 -11 -7 -1 -1 0 3 -1 -5 -5 -4 -7 -15 -17 -24 -29 -38 -20 -23 -13
+DST1405*24PPX120 0 -21 -19 -24 -23 -23 -20 -20 -16 -14 -11 -9 -8 -10 -11 -16 -18 -19 -20 -20 -19 -20 -21 -16 -14 -17
+DST1405*25PPX120 0 -10 -10 -14 -14 -13 -12 -11 -9 -5 -3 -4 -5 -9 -12 -14 -13 -11 -8 -7 -5 -6 -7 -6 -5 -9
+DST1405*26PPX120 0 -6 -4 -6 -6 -6 -9 -7 -6 -6 -4 -6 -4 -4 -5 -5 -6 -7 -6 -5 -7 -9 -11 -10 -6 -6
+DST1405*27PPX120 0 -4 -5 -5 -4 -3 -2 1 3 2 2 3 5 3 4 7 10 11 10 10 8 7 5 9 15 4
+DST1405*28PPX120 0 18 13 4 1 -2 0 1 4 4 4 4 4 1 0 0 -1 -3 -5 -5 -3 -3 -1 3 3 2
+DST1405*29PPX120 0 4 8 5 2 -1 0 3 6 3 0 -6 -14 -17 -17 -16 -14 -12 -10 -9 -10 -9 -7 -7 -7 -5
+DST1405*30PPX120 0 -8 -7 -6 -4 0 0 -2 -1 1 6 11 17 8 8 3 -2 -6 -10 -17 -29 -23 -15 -10 -10 -4
+DST1405*31PPX120 0 -6 -5 -4 1 5 10 7 5 4 4 6 8 12 12 13 13 12 9 7 10 10 9 11 15 7
+DST1406*01PPX120 0 12 11 9 9 11 12 12 11 14 10 6 8 10 11 12 11 9 10 12 14 12 10 9 6 10
+DST1406*02PPX120 0 6 6 7 9 7 9 8 7 7 10 10 10 10 11 12 7 6 9 13 14 15 13 9 6 9
+DST1406*03PPX120 0 -1 -5 -8 1 9 7 3 1 0 2 4 7 8 8 6 5 4 7 10 14 13 10 9 8 5
+DST1406*04PPX120 0 7 8 7 5 4 4 2 -1 -3 -2 0 2 6 8 7 2 -1 3 2 -2 -2 -3 -2 -5 2
+DST1406*05PPX120 0 -5 -3 -5 -9 -8 -3 1 -1 -1 0 1 1 -2 0 2 1 2 4 4 2 0 -4 -4 -7 -1
+DST1406*06PPX120 0 -11 -16 -15 -17 -15 -9 -7 -7 -6 -4 -1 -1 -1 0 -1 0 7 9 5 2 3 5 8 9 -3
+DST1406*07PPX120 0 10 8 3 4 4 3 2 4 -3 -9 -11 -7 -3 -1 -4 -5 -3 18 23 30 14 8 12 4 4
+DST1406*08PPX120 0 -1 -4 18 16 9 -12 -35 -26 -9 -7 -22 -35 -32 -33 -30 -32 -24 -21 -24 -25 -29 -36 -37 -38 -20
+DST1406*09PPX120 0 -35 -32 -32 -30 -23 -19 -18 -22 -24 -23 -25 -23 -22 -23 -24 -25 -25 -23 -23 -21 -21 -18 -14 -10 -23
+DST1406*10PPX120 0 -8 -10 -12 -15 -15 -13 -10 -10 -11 -9 -8 1 4 5 4 6 3 2 -1 -1 -4 -10 -9 -8 -5
+DST1406*11PPX120 0 0 4 6 5 2 3 1 3 4 0 -1 3 4 5 2 -1 -1 0 0 -4 -8 -8 -6 -8 0
+DST1406*12PPX120 0 -6 -6 -7 -8 -7 -7 -7 -7 -8 -7 -7 -7 -6 -3 0 0 0 1 2 1 1 -1 2 3 -4
+DST1406*13PPX120 0 3 2 3 5 9 10 10 9 8 7 10 14 20 24 23 23 20 17 17 16 14 12 8 5 12
+DST1406*14PPX120 0 1 2 2 5 10 4 1 1 -5 -6 -2 -1 -2 -2 0 -1 0 -1 -5 -4 0 -1 -5 -3 -1
+DST1406*15PPX120 0 -2 -4 -3 -3 -2 -1 0 1 0 0 -1 0 1 1 0 3 3 4 5 7 7 8 5 1 1
+DST1406*16PPX120 0 2 2 3 4 4 5 7 4 3 5 6 7 6 5 5 3 1 -2 -2 1 -1 1 -1 -7 3
+DST1406*17PPX120 0 -8 -10 -6 -3 0 -1 -3 -9 -15 -9 -4 1 5 9 9 9 10 9 8 11 5 -7 -13 -14 -1
+DST1406*18PPX120 0 -23 -26 -26 -24 -18 -15 -17 -20 -22 -25 -22 -19 -16 -13 -13 -16 -22 -27 -24 -20 -13 -16 -33 -26 -21
+DST1406*19PPX120 0 -15 -9 -11 -19 -14 -14 -12 -13 -18 -16 -13 -15 -15 -16 -15 -14 -15 -16 -14 -13 -15 -13 -13 -14 -14
+DST1406*20PPX120 0 -14 -13 -12 -10 -9 -8 -9 -6 -7 -7 -5 -1 2 2 7 4 6 6 8 9 5 2 -3 -4 -2
+DST1406*21PPX120 0 -1 3 7 7 4 2 0 -9 -17 -23 -21 -17 -18 -15 -15 -14 -13 -10 -9 -10 -13 -13 -11 -6 -9
+DST1406*22PPX120 0 -4 -5 -6 -6 -8 -8 -7 -5 -5 -5 -4 -4 -5 -7 -8 -9 -9 -10 -9 -9 -14 -14 -12 -12 -8
+DST1406*23PPX120 0 -9 -3 0 0 0 -1 -2 -5 -5 -4 -3 -3 -2 1 3 3 3 1 2 2 3 2 0 10 0
+DST1406*24PPX120 0 9 13 14 9 1 -1 -5 -5 -5 -4 -3 -1 -1 1 1 -1 0 0 3 9 7 3 0 -4 2
+DST1406*25PPX120 0 -2 -1 0 1 5 6 3 -2 -9 -5 -1 9 15 16 19 15 11 8 17 20 16 3 2 0 6
+DST1406*26PPX120 0 0 2 3 8 11 14 11 7 5 3 0 1 -1 -3 -5 -7 -3 1 1 -1 -1 0 1 -1 2
+DST1406*27PPX120 0 -3 1 3 5 4 3 1 1 1 3 5 4 4 4 4 3 3 2 3 3 6 7 6 5 3
+DST1406*28PPX120 0 5 4 8 12 9 7 5 7 9 8 9 6 4 2 -1 -4 -4 1 6 7 -1 -5 -1 -2 4
+DST1406*29PPX120 0 0 0 -1 5 9 6 3 1 3 2 2 2 3 5 6 4 5 8 12 19 16 15 13 8 6
+DST1406*30PPX120 0 -4 -7 -2 0 4 5 6 5 4 6 10 12 9 9 7 6 2 0 4 7 7 6 1 -4 4
+DST1407*01PPX120 0 -8 -4 -2 -3 -4 -3 -1 -1 -2 -5 -4 -1 1 3 6 5 6 6 3 -1 -3 -2 -2 1 -1
+DST1407*02PPX120 0 5 8 8 9 10 6 6 7 6 6 5 5 3 5 9 10 10 7 5 5 7 7 8 10 7
+DST1407*03PPX120 0 15 28 26 20 10 -3 -7 -15 -16 -12 -16 -17 -21 -20 -16 -14 -13 -13 -12 -14 -14 -10 -4 -4 -6
+DST1407*04PPX120 0 -4 -4 -6 -7 -5 -4 -5 -7 -10 -13 -8 -5 -7 -8 -7 -5 -3 -2 -1 0 2 3 2 1 -4
+DST1407*05PPX120 0 0 3 1 0 -1 0 1 1 1 -1 -2 -2 -1 2 5 8 9 12 11 7 4 3 5 4 3
+DST1407*06PPX120 0 3 2 0 0 3 3 3 3 3 2 1 9 7 7 10 13 12 13 14 13 13 12 11 6 7
+DST1407*07PPX120 0 7 8 7 6 3 0 1 1 2 2 3 2 -1 -6 -3 1 2 2 3 4 5 3 1 2 2
+DST1407*08PPX120 0 6 7 3 0 3 3 4 2 -4 -2 3 6 5 4 5 9 14 13 9 3 -3 -6 -3 -7 3
+DST1407*09PPX120 0 -6 -2 0 -2 -2 -4 -1 3 4 -1 -5 -7 -13 -13 -7 -2 3 6 4 3 0 -5 -8 -12 -3
+DST1407*10PPX120 0 -12 -19 -24 -29 -24 -22 -19 -16 -13 -12 -11 -12 -13 -14 -16 -17 -12 -5 -4 -6 -8 -9 -11 -11 -14
+DST1407*11PPX120 0 -10 -12 -13 -14 -12 -8 -8 -9 -10 -12 -11 -13 -16 -17 -17 -14 -12 -10 -10 -10 -9 -10 -10 -8 -11
+DST1407*12PPX120 0 -2 3 2 -1 -10 -16 -13 -11 -16 -21 -23 -26 -32 -33 -28 -26 -23 -21 -20 -14 -9 -11 -15 -16 -16
+DST1407*13PPX120 0 -14 -12 -10 -7 -10 -14 -11 -10 -6 -2 -1 -3 -6 -8 -6 -5 -3 -1 0 -1 -1 3 0 -3 -5
+DST1407*14PPX120 0 -3 2 5 1 -2 -1 2 5 9 12 19 24 26 27 32 42 34 27 25 19 9 4 3 8 14
+DST1407*15PPX120 0 12 16 16 15 12 12 8 2 -5 -7 -6 -8 -7 -11 -9 -11 -14 -13 -12 -11 -8 -7 -7 -9 -2
+DST1407*16PPX120 0 -7 -6 -7 -7 -4 -4 -9 -10 -8 -6 -4 -4 -6 -6 -3 -1 -2 0 -1 -1 1 0 -2 -1 -4
+DST1407*17PPX120 0 2 4 3 2 1 0 2 0 -1 -1 0 -1 -4 -3 -3 -4 -3 -2 -1 -2 -1 0 -1 -3 -1
+DST1407*18PPX120 0 -7 -7 -7 -6 -5 -4 -5 -5 -3 -3 -3 -2 -2 -4 -4 -2 0 0 -2 -4 -6 -6 -4 -3 -4
+DST1407*19PPX120 0 -1 -1 0 0 -1 -1 -1 -2 -1 -1 -1 0 -1 -2 -3 -3 -4 -4 -2 0 3 4 2 3 -1
+DST1407*20PPX120 0 6 8 8 5 2 1 2 3 4 3 4 4 6 9 7 4 2 1 4 7 8 7 7 7 5
+DST1407*21PPX120 0 6 4 2 1 3 5 6 8 9 10 8 3 -1 -4 -3 -1 -1 1 0 -3 -2 -1 -4 -9 2
+DST1407*22PPX120 0 -11 -10 -9 -4 -4 -3 -4 -4 -3 -2 -1 -2 -2 -1 -1 -2 -2 -4 -5 -6 -9 -10 -8 -4 -5
+DST1407*23PPX120 0 2 4 3 0 -1 -2 -1 -1 -1 -3 -2 0 2 5 10 12 10 8 5 1 4 4 1 -3 2
+DST1407*24PPX120 0 -4 1 5 4 7 4 3 2 2 -3 -4 -3 -4 -8 -7 -6 -6 -4 -3 -1 2 6 9 10 0
+DST1407*25PPX120 0 7 1 -2 1 4 1 -2 -5 -9 -13 -12 -9 -7 -6 -5 -3 0 0 1 -1 -4 -4 -4 -5 -3
+DST1407*26PPX120 0 -2 1 1 -2 -1 -6 -9 -14 -23 -22 -21 -19 -17 -14 -13 -12 -13 -14 -13 -10 -10 -13 -13 -13 -11
+DST1407*27PPX120 0 -14 -12 -9 -6 -7 -9 -8 -8 -8 -10 -8 -4 0 2 3 2 2 5 8 6 2 -2 -1 2 -3
+DST1407*28PPX120 0 7 9 14 11 12 8 8 -2 -12 -8 -4 -1 2 5 9 8 3 5 5 -1 -10 -15 -17 -20 1
+DST1407*29PPX120 0 -20 -16 -11 -7 0 1 1 -1 -3 -3 -4 -5 -7 -8 -5 -3 0 0 3 6 4 2 2 0 -3
+DST1407*30PPX120 0 -3 -4 0 4 3 -2 -3 -4 -5 -7 -10 -8 -5 -3 0 -1 0 2 3 2 1 0 -1 -3 -2
+DST1407*31PPX120 0 -4 -4 -1 2 3 2 1 3 5 6 6 8 7 5 5 2 3 3 2 2 3 -1 -4 -4 2
+DST1408*01PPX120 0 -1 -6 -7 -4 -1 6 11 10 7 3 -2 -5 4 9 11 9 9 11 11 4 -3 0 -3 -3 3
+DST1408*02PPX120 0 -8 -14 -14 -16 -17 -18 -18 -18 -11 -9 -13 -13 -11 -13 -16 -15 -13 -12 -8 -6 -6 -6 -5 -6 -12
+DST1408*03PPX120 0 -6 -6 -8 -13 -13 -9 -4 -3 -4 -5 -7 -4 3 6 5 5 4 1 -1 -4 -7 -10 -10 -4 -4
+DST1408*04PPX120 0 -4 -5 -4 -10 -15 -17 -13 -10 -12 -18 -25 -22 -14 -12 -12 -14 -15 -17 -12 -11 -18 -15 -10 -7 -13
+DST1408*05PPX120 0 -9 -16 -14 -15 -14 -18 -21 -17 -12 -11 -13 -19 -21 -21 -20 -18 -18 -16 -21 -25 -25 -21 -16 -12 -17
+DST1408*06PPX120 0 -10 -13 -14 -21 -27 -31 -28 -26 -21 -21 -21 -22 -23 -22 -21 -18 -19 -17 -17 -17 -15 -10 -4 0 -18
+DST1408*07PPX120 0 1 0 -5 -10 -12 -11 -10 -12 -12 -13 -11 -13 -12 -10 -5 -1 0 -4 -8 -13 -13 -8 -5 -5 -8
+DST1408*08PPX120 0 -11 -17 -20 -16 -14 -16 -21 -25 -23 -19 -16 -11 -6 -5 -6 -5 -4 -4 -5 -7 -8 -7 -5 -5 -12
+DST1408*09PPX120 0 -8 -11 -12 -13 -16 -14 -12 -11 -8 -6 -3 0 2 1 0 0 -3 -2 -2 -3 -3 -2 2 5 -5
+DST1408*10PPX120 0 6 4 2 1 0 1 2 1 1 5 6 2 -1 -5 -10 -11 -8 -7 -8 -7 -9 -4 5 13 -1
+DST1408*11PPX120 0 12 9 3 -1 -1 1 7 11 9 9 12 13 12 10 8 2 -6 -5 -2 -2 -3 -2 1 -3 4
+DST1408*12PPX120 0 -9 -13 -15 -16 -11 -5 -3 -1 1 -1 1 2 2 1 -3 -5 -5 -10 -16 -11 -16 -10 -8 -10 -7
+DST1408*13PPX120 0 -16 -17 -15 -17 -13 -12 -12 -12 -16 -15 -13 -7 -3 -5 -10 -11 -10 -7 -5 -5 -9 -7 -3 0 -10
+DST1408*14PPX120 0 -5 -9 -13 -15 -11 -10 -9 -6 -7 -5 -6 -4 0 -4 -8 -10 -9 -6 -6 -4 -2 -1 2 7 -6
+DST1408*15PPX120 0 4 -1 -4 -9 -6 -3 -2 0 1 1 1 0 -2 -2 -7 -10 -9 -6 -4 -3 -2 -2 -2 -2 -3
+DST1408*16PPX120 0 -4 -7 -11 -12 -9 -5 -3 -1 0 1 2 4 5 5 4 4 4 3 1 -1 -3 -1 3 5 -1
+DST1408*17PPX120 0 7 3 -1 -2 1 5 11 13 15 15 15 18 28 17 17 19 19 20 18 18 17 16 12 13 13
+DST1408*18PPX120 0 6 3 0 -2 1 1 2 0 2 3 4 6 7 3 0 0 0 -2 -4 -4 -4 -1 -1 0 1
+DST1408*19PPX120 0 -1 -3 -4 -5 -4 -3 -1 7 5 3 4 11 13 10 9 11 15 17 4 -6 -9 -14 -13 -13 1
+DST1408*20PPX120 0 -11 -9 -14 -14 -11 -11 -4 -2 -1 0 -2 1 -1 -2 -8 -10 -12 -9 -10 -8 -2 -4 -6 -6 -7
+DST1408*21PPX120 0 -12 -24 -28 -31 -30 -31 -32 -32 -29 -21 -20 -21 -21 -23 -26 -27 -28 -30 -30 -29 -28 -25 -20 -15 -26
+DST1408*22PPX120 0 -16 -20 -20 -19 -17 -13 -12 -10 -9 -8 -10 -9 -9 -9 -10 -11 -10 -9 -9 -8 -8 -7 -7 -5 -11
+DST1408*23PPX120 0 -3 -4 -7 -10 -8 -10 -8 -8 -6 -4 -1 1 3 4 -1 -1 -1 -2 -2 -2 -4 -1 2 4 -3
+DST1408*24PPX120 0 6 6 4 0 0 -1 -4 -6 -7 -7 -4 -5 -6 -6 -3 -3 1 1 -1 0 2 2 1 -1 -1
+DST1408*25PPX120 0 -4 -3 3 6 9 7 6 8 8 8 6 5 3 -2 -3 -3 -2 -1 0 2 4 5 3 1 3
+DST1408*26PPX120 0 0 -1 -2 -1 2 3 4 6 7 7 8 5 5 11 12 13 10 8 10 11 9 6 5 6 6
+DST1408*27PPX120 0 8 7 7 8 -3 -15 -22 -30 -39 -50 -59 -64 -59 -56 -63 -72 -77 -74 -80 -79 -79 -74 -66 -54 -45
+DST1408*28PPX120 0 -50 -50 -52 -50 -56 -59 -65 -61 -52 -46 -41 -42 -42 -43 -39 -42 -53 -55 -53 -45 -42 -40 -35 -28 -48
+DST1408*29PPX120 0 -27 -31 -37 -34 -36 -40 -43 -39 -32 -27 -33 -37 -27 -22 -26 -25 -27 -23 -18 -26 -37 -32 -25 -33 -31
+DST1408*30PPX120 0 -41 -44 -44 -43 -42 -34 -29 -23 -22 -23 -23 -24 -22 -20 -19 -18 -16 -18 -22 -26 -24 -16 -13 -14 -26
+DST1408*31PPX120 0 -19 -24 -27 -26 -23 -24 -19 -16 -14 -14 -23 -28 -29 -25 -22 -22 -21 -24 -22 -24 -27 -24 -28 -33 -23
+DST1409*01PPX120 0 -17 -16 -21 -19 -14 -10 -8 -10 -12 -9 -7 -5 -6 -9 -9 -12 -11 -7 -9 -6 -5 -1 -1 -5 -10
+DST1409*02PPX120 0 -6 -4 1 1 2 1 -2 3 3 1 1 -5 -4 -2 -5 -10 -10 -9 -7 -2 -4 -8 -8 -8 -3
+DST1409*03PPX120 0 -7 -5 -3 -5 -5 -7 -7 -5 -4 -4 -5 -2 0 2 4 1 -3 -2 -1 0 1 -1 -2 -3 -3
+DST1409*04PPX120 0 -3 -4 -2 -3 -7 -10 -13 -11 -6 -4 -3 -6 -4 -1 -1 -2 -1 0 -1 0 -1 -2 -2 -1 -4
+DST1409*05PPX120 0 7 11 13 12 8 6 2 2 2 3 5 1 -1 -1 3 1 -5 -8 -8 -5 -1 1 1 3 2
+DST1409*06PPX120 0 5 8 10 12 17 18 11 1 4 10 15 13 10 7 18 16 8 11 15 14 17 6 0 -5 10
+DST1409*07PPX120 0 -3 -8 -12 -11 -12 -6 4 7 4 3 2 -1 -5 -4 -2 -4 -5 -5 -2 0 6 6 5 7 -2
+DST1409*08PPX120 0 7 9 10 11 10 12 12 5 6 10 11 11 7 4 3 0 2 5 4 4 6 4 5 8 7
+DST1409*09PPX120 0 9 10 9 9 8 6 5 5 6 7 9 10 7 8 11 9 12 15 14 16 16 10 4 3 9
+DST1409*10PPX120 0 5 8 11 16 19 20 21 20 14 13 11 11 9 9 13 15 17 17 19 19 17 13 16 16 15
+DST1409*11PPX120 0 8 9 7 1 2 0 1 1 0 -3 -7 -7 -3 1 2 0 -2 0 3 3 2 2 5 12 2
+DST1409*12PPX120 0 30 8 -16 -10 -7 -4 -4 0 3 -3 -8 -7 -7 -2 3 4 32 21 19 30 24 -7 -53 -75 -1
+DST1409*13PPX120 0 -49 -44 -47 -51 -45 -39 -19 -15 -30 -27 -28 -29 -31 -23 -18 -20 -13 -15 -12 -6 -9 -18 -26 -27 -27
+DST1409*14PPX120 0 -26 -26 -24 -22 -20 -20 -17 -16 -16 -19 -20 -18 -15 -14 -11 -10 -13 -15 -16 -14 -12 -9 -7 -8 -16
+DST1409*15PPX120 0 -8 -10 -11 -10 -8 -5 -2 1 -1 -3 -4 -4 -2 2 5 5 2 0 0 0 -1 0 1 -1 -2
+DST1409*16PPX120 0 1 3 5 8 12 7 4 7 9 7 4 3 3 5 6 4 6 6 10 11 9 5 3 -1 6
+DST1409*17PPX120 0 -7 -8 -4 0 2 4 3 4 5 5 9 11 10 8 8 16 17 15 16 17 12 17 16 17 8
+DST1409*18PPX120 0 21 24 24 23 22 19 22 21 22 19 15 15 18 23 25 22 21 17 10 6 -2 -4 -1 -6 16
+DST1409*19PPX120 0 -13 -22 -21 -17 -21 -18 -9 4 -8 -6 -7 -4 -4 1 0 -4 -2 -11 -15 -9 -8 -10 -10 -10 -9
+DST1409*20PPX120 0 -9 -6 -3 -2 -4 -4 -4 -4 -4 -1 -2 -3 -2 0 -3 -5 -5 -1 2 3 4 2 0 -2 -2
+DST1409*21PPX120 0 -3 2 4 3 1 -2 -4 -3 -1 2 4 5 6 7 4 1 1 3 5 6 6 3 1 1 2
+DST1409*22PPX120 0 3 6 7 2 -1 -5 -9 -6 -3 -1 -7 -12 -11 -10 -10 -12 -12 -15 -15 -8 -4 -3 -1 0 -5
+DST1409*23PPX120 0 2 3 3 7 11 8 2 2 6 5 -1 -4 -12 -9 -6 -1 -1 -4 -8 -16 -11 -4 2 -5 -1
+DST1409*24PPX120 0 -18 -24 -27 -21 -22 -23 -21 -19 -20 -17 -14 -10 -5 -9 -8 -9 -14 -7 -10 -19 -21 -23 -15 -20 -17
+DST1409*25PPX120 0 -15 -12 -13 -15 -13 -10 -4 -3 -6 -11 -6 -2 3 5 5 4 0 -2 0 -3 2 3 1 -6 -4
+DST1409*26PPX120 0 -8 -9 -4 -4 -5 -5 -2 -3 -1 -2 -9 -20 -14 -8 -15 -24 -25 -25 -20 -16 -18 -22 -22 -19 -13
+DST1409*27PPX120 0 -14 -16 -22 -21 -19 -23 -19 -20 -16 -12 -13 -14 -15 -10 -11 -15 -17 -17 -16 -16 -13 -9 -4 -4 -15
+DST1409*28PPX120 0 -4 -7 -5 -6 -4 -4 -2 -5 -7 -4 2 -8 -14 -11 -11 -12 -14 -17 -19 -14 -8 -6 -5 -6 -8
+DST1409*29PPX120 0 -8 -8 -6 -2 3 4 3 -2 -5 1 2 1 3 0 1 -1 -4 -4 -6 -7 -5 -7 -5 -5 -2
+DST1409*30PPX120 0 -7 -15 -19 -22 -27 -24 -23 -22 -22 -19 -18 -19 -17 -13 -10 -14 -18 -18 -21 -21 -14 -14 -16 -21 -18
+DST1410*01PPX120 0 -31 -28 -27 -24 -21 -20 -19 -22 -18 -18 -17 -18 -22 -22 -18 -20 -22 -25 -25 -22 -20 -19 -18 -16 -21
+DST1410*02PPX120 0 -16 -16 -14 -13 -12 -17 -16 -15 -11 -7 -2 -6 -11 -9 -11 -9 -8 -10 -10 -10 -15 -20 -25 -25 -13
+DST1410*03PPX120 0 -21 -19 -18 -15 -10 -6 -6 -3 0 -1 -3 -4 -6 -7 -6 -2 0 3 5 5 2 1 1 2 -5
+DST1410*04PPX120 0 4 8 6 4 2 0 -1 -3 0 1 4 7 8 7 8 9 8 7 4 0 -1 0 4 10 4
+DST1410*05PPX120 0 12 11 13 13 12 12 13 16 16 15 14 12 9 7 5 4 -2 -2 -3 -1 0 2 2 2 8
+DST1410*06PPX120 0 1 -2 -5 -5 -1 -1 -1 -1 -3 -1 1 0 -2 -1 2 6 6 4 2 0 -1 -4 -3 0 0
+DST1410*07PPX120 0 2 -1 -7 -7 -10 -9 -6 -4 -3 -2 -3 -7 -11 -9 -6 -4 -4 -4 -4 -2 -1 -2 -1 3 -4
+DST1410*08PPX120 0 8 12 13 17 20 20 17 19 19 17 1 -9 -17 -17 -13 -9 -12 -18 -21 -24 -25 -26 -24 -22 -3
+DST1410*09PPX120 0 -22 -21 -24 -26 -28 -31 -42 -46 -45 -34 -27 -24 -33 -33 -26 -20 -19 -19 -20 -17 -20 -19 -16 -13 -26
+DST1410*10PPX120 0 -15 -14 -18 -20 -25 -28 -23 -19 -20 -18 -15 -13 -12 -12 -10 -11 -14 -13 -12 -7 -6 -13 -17 -20 -16
+DST1410*11PPX120 0 -23 -25 -28 -26 -22 -22 -27 -34 -36 -33 -32 -28 -29 -28 -22 -19 -13 -7 -3 0 0 -3 -7 -8 -20
+DST1410*12PPX120 0 -9 -7 -5 -3 -1 -1 0 2 1 2 3 1 2 4 6 4 4 2 5 10 20 22 16 13 4
+DST1410*13PPX120 0 12 12 12 12 13 13 14 5 3 3 4 3 7 8 9 7 4 4 -1 4 5 3 -6 -4 6
+DST1410*14PPX120 0 -4 -4 -6 -1 6 12 14 13 15 14 16 14 11 8 10 8 -19 -29 -40 -40 -30 -28 -41 -43 -6
+DST1410*15PPX120 0 -31 -34 -38 -36 -32 -30 -29 -23 -20 -14 -11 -10 -13 -15 -18 -21 -23 -19 -16 -12 -10 -9 -9 -10 -20
+DST1410*16PPX120 0 -11 -14 -11 -13 -13 -13 -15 -15 -13 -8 -6 -9 -16 -15 -14 -12 -10 -8 -9 -9 -5 -7 -14 -12 -11
+DST1410*17PPX120 0 -13 -11 -10 -16 -21 -16 -11 -10 -13 -12 -8 -7 -6 -6 -5 -6 -7 -10 -11 -11 -11 -14 -15 -13 -11
+DST1410*18PPX120 0 -18 -25 -21 -19 -13 -14 -8 -6 -10 -10 -10 -10 2 4 1 -7 -15 -15 -18 -17 -21 -24 -24 -18 -13
+DST1410*19PPX120 0 -24 -30 -30 -24 -18 -17 -20 -26 -24 -20 -16 -17 -24 -27 -24 -22 -20 -20 -21 -23 -21 -15 -7 -5 -21
+DST1410*20PPX120 0 -11 -11 -11 -9 -9 -20 -27 -29 -27 -20 -20 -22 -35 -43 -39 -33 -43 -45 -45 -43 -34 -30 -31 -37 -28
+DST1410*21PPX120 0 -36 -32 -33 -32 -31 -30 -29 -38 -38 -28 -23 -25 -27 -23 -25 -28 -31 -31 -28 -31 -33 -26 -26 -29 -30
+DST1410*22PPX120 0 -34 -34 -38 -35 -30 -28 -28 -27 -22 -19 -16 -16 -17 -23 -25 -23 -26 -22 -26 -23 -21 -23 -21 -18 -25
+DST1410*23PPX120 0 -18 -17 -19 -20 -16 -15 -16 -17 -21 -25 -25 -19 -17 -21 -19 -12 -13 -13 -15 -15 -12 -7 -10 -11 -16
+DST1410*24PPX120 0 -15 -16 -14 -12 -11 -11 -14 -16 -23 -25 -26 -19 -15 -17 -22 -23 -28 -36 -35 -29 -26 -22 -19 -22 -21
+DST1410*25PPX120 0 -25 -25 -22 -19 -22 -28 -25 -23 -25 -22 -18 -20 -25 -29 -23 -17 -13 -13 -12 -14 -10 -12 -12 -12 -19
+DST1410*26PPX120 0 -18 -18 -23 -21 -15 -16 -23 -32 -29 -23 -21 -18 -21 -26 -31 -32 -31 -26 -24 -21 -14 -9 -10 -13 -21
+DST1410*27PPX120 0 -19 -22 -22 -18 -18 -23 -21 -22 -28 -29 -22 -23 -20 -17 -13 -9 -12 -17 -14 -15 -17 -24 -33 -41 -21
+DST1410*28PPX120 0 -46 -48 -42 -41 -39 -38 -35 -31 -32 -37 -37 -31 -30 -29 -25 -24 -23 -20 -20 -21 -27 -24 -22 -22 -31
+DST1410*29PPX120 0 -24 -30 -34 -32 -26 -22 -25 -29 -30 -30 -27 -25 -22 -20 -18 -19 -23 -25 -23 -22 -19 -16 -17 -18 -24
+DST1410*30PPX120 0 -21 -21 -19 -18 -16 -15 -15 -17 -21 -20 -21 -17 -11 -8 -8 -10 -6 -5 -6 -5 -5 -3 3 -1 -12
+DST1410*31PPX120 0 0 3 2 2 -1 0 1 0 3 4 5 5 6 4 6 5 3 1 1 -2 -9 -8 -7 -7 1
+DST1411*01PPX120 0 -7 -6 -5 -7 -7 -8 -9 3 5 6 6 4 3 3 8 5 2 1 1 3 5 5 3 1 1
+DST1411*02PPX120 0 0 3 3 -1 -6 -5 -7 -5 0 2 10 8 3 2 6 10 7 8 7 10 15 15 14 10 5
+DST1411*03PPX120 0 10 12 4 2 2 0 -2 0 1 6 6 1 2 8 11 9 10 10 6 3 4 7 17 30 7
+DST1411*04PPX120 0 34 34 32 29 27 28 25 18 5 -18 -39 -35 -24 -28 -35 -33 -23 -14 -13 -16 -22 -13 -11 -15 -4
+DST1411*05PPX120 0 -15 -12 -11 -12 -22 -22 -20 -19 -26 -38 -34 -34 -32 -17 -10 -12 -15 -15 -15 -14 -14 -19 -22 -19 -20
+DST1411*06PPX120 0 -17 -16 -13 -13 -13 -20 -20 -18 -13 -11 -9 -11 -11 -8 -1 -1 -3 -3 -3 -1 -2 -1 -5 -11 -9
+DST1411*07PPX120 0 -13 -12 -9 -12 -18 -19 -20 -12 -10 -12 -10 -7 -4 -7 1 2 4 2 1 5 8 -2 -8 -14 -7
+DST1411*08PPX120 0 -12 -14 -14 -16 -14 -17 -16 -12 -11 -12 -8 -10 -9 -2 -5 -6 -5 -3 -5 -2 -1 0 -3 -6 -8
+DST1411*09PPX120 0 -3 -5 -7 -6 -4 -1 -4 -2 -1 2 7 6 4 7 10 6 4 3 -8 -12 -9 -1 2 -1 -1
+DST1411*10PPX120 0 -8 -20 -6 5 2 -3 -5 1 -12 -9 -7 -27 -32 -27 -32 -33 -39 -57 -47 -43 -45 -43 -38 -35 -23
+DST1411*11PPX120 0 -31 -27 -31 -32 -32 -33 -31 -26 -19 -21 -17 -16 -12 -5 3 1 -2 -3 -2 -1 -2 -8 -17 -28 -16
+DST1411*12PPX120 0 -32 -26 -26 -29 -28 -26 -23 -22 -25 -23 -21 -21 -18 -12 -9 -10 -9 -8 -9 -10 -7 -9 -9 -8 -18
+DST1411*13PPX120 0 -12 -15 -13 -16 -17 -15 -11 -9 -7 -7 -8 -7 -6 -5 -2 -2 0 0 -2 -1 -1 1 -1 -6 -7
+DST1411*14PPX120 0 -6 -14 -15 -14 -14 -13 -5 -18 -18 -17 -14 -13 -9 -4 3 0 0 0 -2 -7 -13 -17 -15 -11 -10
+DST1411*15PPX120 0 -12 -13 -12 -14 -19 -25 -25 -26 -27 -30 -32 -29 -22 -25 -22 -21 -18 -12 -8 -8 -14 -13 -10 -18 -19
+DST1411*16PPX120 0 -14 -21 -32 -40 -39 -39 -49 -50 -43 -36 -31 -33 -30 -26 -31 -34 -33 -32 -35 -30 -26 -29 -24 -24 -33
+DST1411*17PPX120 0 -24 -24 -23 -27 -32 -33 -29 -22 -20 -20 -17 -15 -20 -22 -13 -14 -16 -17 -13 -10 -15 -12 -11 -13 -19
+DST1411*18PPX120 0 -17 -17 -19 -23 -22 -22 -27 -21 -19 -15 -17 -24 -26 -20 -17 -20 -22 -20 -20 -21 -20 -15 -13 -16 -20
+DST1411*19PPX120 0 -21 -23 -20 -21 -23 -26 -29 -26 -20 -17 -13 -11 -11 -5 0 -4 -6 -6 -4 -3 -11 -10 -6 -4 -13
+DST1411*20PPX120 0 -7 -12 -11 -12 -17 -26 -32 -30 -27 -24 -16 -20 -19 -15 -11 -16 -21 -28 -30 -26 -19 -17 -16 -17 -20
+DST1411*21PPX120 0 -23 -25 -19 -19 -27 -37 -32 -26 -25 -28 -25 -20 -17 -14 -12 -21 -25 -26 -24 -22 -24 -26 -23 -23 -23
+DST1411*22PPX120 0 -25 -27 -26 -25 -27 -31 -29 -24 -24 -26 -25 -26 -21 -16 -11 -15 -13 -13 -14 -17 -13 -15 -14 -11 -20
+DST1411*23PPX120 0 -10 -13 -11 -14 -16 -23 -25 -19 -18 -21 -21 -25 -18 -19 -16 -22 -25 -25 -22 -20 -22 -24 -24 -22 -20
+DST1411*24PPX120 0 -22 -20 -20 -23 -24 -25 -25 -24 -19 -18 -16 -13 -12 -12 -12 -19 -23 -18 -19 -21 -23 -25 -23 -22 -20
+DST1411*25PPX120 0 -19 -18 -18 -18 -18 -19 -20 -14 -10 -11 -11 -13 -13 -4 0 -4 -6 -9 -13 -11 -14 -17 -21 -19 -13
+DST1411*26PPX120 0 -14 -11 -9 -13 -14 -17 -17 -16 -19 -20 -15 -11 -10 -11 -9 -11 -12 -10 -8 -6 -7 -9 -12 -15 -12
+DST1411*27PPX120 0 -17 -15 -9 -8 -14 -2 -4 -2 -1 2 6 8 7 6 8 3 -1 6 11 11 2 -8 -7 -10 -1
+DST1411*28PPX120 0 -10 -6 0 1 2 5 4 3 5 6 9 7 7 4 -6 -3 -3 -2 2 3 4 6 5 5 2
+DST1411*29PPX120 0 5 6 5 7 10 6 7 9 15 15 15 14 10 8 10 11 14 11 10 9 9 5 3 1 9
+DST1411*30PPX120 0 4 4 8 9 7 6 7 10 10 11 8 10 15 21 23 16 9 4 8 8 2 -3 -11 -11 7
+DST1412*01PPX120 0 7 11 13 13 15 20 15 16 10 12 13 19 18 20 28 27 26 25 17 20 15 13 -5 -5 15
+DST1412*02PPX120 0 0 7 5 6 7 2 -3 -2 2 -3 -7 -1 8 10 9 6 -2 -4 -8 -4 -2 -1 -2 3 1
+DST1412*03PPX120 0 5 0 0 2 4 5 5 7 11 17 17 13 15 14 16 16 16 15 13 2 3 6 8 9 9
+DST1412*04PPX120 0 5 6 11 9 6 7 10 12 13 12 13 16 18 14 9 3 -4 -2 0 1 4 10 9 6 8
+DST1412*05PPX120 0 12 16 13 6 6 -4 -8 -6 -5 -5 -6 -2 7 3 3 2 -3 -4 -4 -2 -1 2 3 4 1
+DST1412*06PPX120 0 6 9 11 15 9 7 10 18 27 28 20 23 30 29 30 37 28 30 28 22 5 6 1 -8 18
+DST1412*07PPX120 0 -5 -5 -3 -1 -1 -1 -5 -7 -4 -1 -7 -15 -3 -6 -13 -15 -17 -21 -18 -17 -24 -23 -24 -16 -11
+DST1412*08PPX120 0 -14 -14 -14 -14 -14 -12 -10 -6 -8 -7 -10 -12 -8 -8 -3 -3 0 -5 1 -6 -9 -7 -11 -13 -9
+DST1412*09PPX120 0 -20 -21 -12 -9 -9 -11 -14 -11 -6 -10 -16 -14 -14 -5 -10 -14 -13 -14 -9 -7 -13 -7 -4 -2 -11
+DST1412*10PPX120 0 3 6 7 8 6 7 5 0 -6 -1 2 1 0 3 7 6 4 2 1 -1 -2 -2 -3 -2 2
+DST1412*11PPX120 0 1 3 9 9 9 10 12 13 15 16 13 13 15 15 14 11 11 12 11 12 16 17 22 22 13
+DST1412*12PPX120 0 20 19 8 6 12 12 5 -1 -5 -7 -6 0 -8 -18 -23 -32 -33 -30 -27 -32 -31 -24 -23 -18 -10
+DST1412*13PPX120 0 -16 -15 -14 -13 -13 -11 -5 -2 -4 -5 -5 -4 -5 -9 -7 -6 -10 -11 -8 -8 -8 -7 -15 -19 -9
+DST1412*14PPX120 0 -15 -11 -10 -11 -12 -11 -9 -6 -7 -6 -7 -7 -11 -12 -15 -13 -10 -10 -9 -12 -12 -5 2 4 -9
+DST1412*15PPX120 0 5 7 8 2 -1 7 9 6 -6 -14 -16 -9 -2 -8 -14 -12 -10 -10 -8 -6 -6 -15 -15 -11 -5
+DST1412*16PPX120 0 -8 -5 -5 -3 -4 -4 -4 -3 -1 1 -1 -4 -5 -4 -9 -4 0 1 -1 0 0 -2 -4 -6 -3
+DST1412*17PPX120 0 -11 -11 -8 -5 -8 -7 -2 -3 -6 -4 -2 -1 -2 -3 -2 -3 -7 -9 -5 -2 -2 2 4 4 -4
+DST1412*18PPX120 0 8 11 11 6 5 7 8 10 11 7 7 8 9 10 10 8 6 5 5 6 5 4 5 6 7
+DST1412*19PPX120 0 8 6 7 8 11 12 8 6 6 3 3 5 4 3 5 4 0 -7 -12 -11 -6 0 4 7 3
+DST1412*20PPX120 0 12 10 5 4 3 0 -1 1 4 3 1 -4 -3 0 3 0 -3 -3 0 2 2 3 -2 4 2
+DST1412*21PPX120 0 9 11 11 8 1 -9 -15 -12 -8 -10 -13 -13 -9 -5 -7 -12 -19 -25 -25 -16 -22 -29 -25 -17 -10
+DST1412*22PPX120 0 -19 -20 -22 -30 -36 -51 -49 -43 -41 -35 -33 -25 -19 -16 -12 -4 -4 -3 7 13 18 23 19 21 -15
+DST1412*23PPX120 0 19 15 14 11 7 6 11 12 12 9 6 26 31 28 24 24 20 20 16 11 -6 -25 -38 -31 9
+DST1412*24PPX120 0 -37 -36 -34 -25 -20 -20 -23 -22 -15 -18 -22 -21 -15 -12 -10 -16 -21 -20 -23 -29 -25 -28 -34 -33 -23
+DST1412*25PPX120 0 -25 -16 -13 -14 -17 -20 -17 -15 -13 -12 -9 -6 -3 -11 -7 -13 -18 -17 -12 -6 -8 -17 -28 -29 -14
+DST1412*26PPX120 0 -28 -36 -32 -33 -32 -29 -27 -21 -19 -23 -23 -18 -13 -10 -9 -7 -6 -6 -11 -23 -30 -30 -27 -24 -22
+DST1412*27PPX120 0 -28 -26 -20 -15 -12 -16 -18 -18 -18 -16 -16 -13 -13 -12 -7 -4 -3 -5 -6 -6 -5 -3 -4 -3 -12
+DST1412*28PPX120 0 1 -2 -3 -3 0 4 4 0 1 2 1 1 4 9 12 13 7 1 7 2 -7 0 2 5 3
+DST1412*29PPX120 0 3 7 9 10 14 10 9 8 5 -2 -15 -12 -9 -5 -5 1 -9 -23 -21 -15 -14 -23 -13 -21 -5
+DST1412*30PPX120 0 -18 -16 -16 -20 -19 -23 -10 -6 -6 -9 -10 -10 -7 -5 -2 -4 -4 -5 -4 -4 -12 -17 -17 -8 -11
+DST1412*31PPX120 0 -4 2 1 4 3 1 3 6 9 10 14 13 10 5 1 4 -1 -3 -7 -8 -9 -9 -5 -4 2
+DST1501*01RRX020 0 -14 -14 -15 -13 -12 -14 -13 -10 -8 -7 -3 -1 3 7 10 7 3 1 0 -3 -5 -7 -7 -15 -5
+DST1501*02RRX020 0 -22 -21 -16 -7 -3 -4 -5 0 -1 2 10 8 8 4 -4 -2 0 -3 -17 -30 -42 -42 -38 -31 -11
+DST1501*03RRX020 0 -32 -36 -28 -20 -9 -18 -29 -27 -23 -25 -23 -25 -20 -17 -12 -12 -14 -15 -16 -15 -12 -13 -14 -16 -20
+DST1501*04RRX020 0 -16 -17 -14 -9 -8 -13 -20 -26 -28 -27 -21 -28 -41 -51 -55 -55 -62 -51 -56 -58 -61 -71 -61 -53 -38
+DST1501*05RRX020 0 -63 -46 -37 -31 -33 -44 -47 -40 -40 -36 -31 -29 -30 -30 -25 -24 -22 -24 -24 -28 -32 -39 -37 -37 -35
+DST1501*06RRX020 0 -39 -34 -32 -27 -24 -30 -31 -29 -33 -42 -38 -30 -27 -23 -20 -22 -26 -24 -25 -13 -14 -20 -21 -13 -27
+DST1501*07RRX020 0 -9 1 6 6 6 1 7 18 -21 -66 -97 -99 -93 -93 -94 -90 -80 -66 -54 -42 -38 -32 -43 -45 -42
+DST1501*08RRX020 0 -48 -52 -41 -41 -40 -34 -41 -47 -49 -50 -48 -46 -41 -36 -29 -32 -36 -33 -31 -31 -27 -27 -31 -35 -39
+DST1501*09RRX020 0 -36 -38 -36 -31 -24 -24 -28 -30 -35 -36 -31 -30 -25 -24 -23 -21 -26 -28 -28 -26 -24 -21 -18 -20 -28
+DST1501*10RRX020 0 -26 -30 -23 -19 -17 -14 -19 -21 -23 -24 -21 -23 -21 -15 -10 -8 -10 -16 -16 -15 -11 -12 -11 -8 -17
+DST1501*11RRX020 0 -11 -16 -19 -18 -16 -19 -20 -21 -29 -29 -24 -26 -29 -30 -26 -21 -21 -22 -20 -18 -14 -21 -22 -19 -21
+DST1501*12RRX020 0 -19 -18 -16 -16 -11 -10 -13 -10 -10 -13 -17 -26 -30 -30 -27 -26 -21 -21 -19 -20 -19 -18 -17 -12 -18
+DST1501*13RRX020 0 -14 -15 -14 -12 -8 -8 -9 -10 -8 -9 -8 -11 -17 -24 -16 -13 -11 -12 -12 -11 -11 -17 -16 -15 -13
+DST1501*14RRX020 0 -19 -18 -17 -15 -14 -12 -9 -6 -5 -9 -16 -20 -22 -20 -11 -6 -4 -5 -8 -9 -7 -6 -6 -7 -11
+DST1501*15RRX020 0 -9 -8 -9 -7 -5 -5 -5 -8 -5 0 4 -3 -7 -7 -14 -14 -10 -9 -8 -7 -4 -3 -6 -5 -6
+DST1501*16RRX020 0 -3 -2 0 0 -12 -14 -11 -13 -7 -4 -3 -9 -11 -11 -6 -4 -5 -8 -8 -11 -10 -6 -6 -6 -7
+DST1501*17RRX020 0 -11 -14 -13 -12 -17 -21 -18 -14 -14 -14 -13 -7 -5 -5 -6 -4 -2 0 -2 -3 -5 -2 -6 -6 -9
+DST1501*18RRX020 0 -3 -4 -5 -5 -4 -3 -1 2 4 5 5 6 8 5 1 -1 -3 -1 -1 -3 -6 -11 -8 -8 -1
+DST1501*19RRX020 0 -4 -4 -5 -2 0 -1 -4 -4 -3 0 5 5 6 8 10 10 9 7 4 1 0 -1 -7 -15 1
+DST1501*20RRX020 0 -13 -8 -5 -4 -3 -4 -3 -3 -6 -9 -8 -4 -1 2 8 10 11 12 13 13 15 19 26 37 4
+DST1501*21RRX020 0 43 37 39 44 37 41 33 27 15 12 16 20 18 14 8 1 -8 -8 -9 -11 -6 -4 -3 1 15
+DST1501*22RRX020 0 -1 -7 -6 -6 -12 -11 -9 -6 -6 -8 -11 -13 -14 -19 -17 -14 -10 -9 -7 -8 -6 -5 -5 -6 -9
+DST1501*23RRX020 0 -4 -6 -7 -8 -8 -7 -10 -5 -2 -7 -9 -10 -11 -6 -3 -1 -2 -4 -5 -7 -5 -4 -3 0 -6
+DST1501*24RRX020 0 2 0 0 1 -2 -2 1 3 1 -4 -8 -13 -14 -11 -8 -7 -9 -8 -6 -4 -6 -3 2 2 -4
+DST1501*25RRX020 0 -1 -2 -1 -2 0 3 2 4 6 3 0 1 0 -1 1 1 -2 -2 0 4 5 6 7 6 2
+DST1501*26RRX020 0 -1 0 -3 -11 -7 -6 -1 1 -3 -14 -34 -22 -17 -15 -14 -18 -23 -22 -17 -16 -14 -13 -14 -16 -13
+DST1501*27RRX020 0 -17 -15 -12 -10 -18 -19 -19 -7 -7 -9 -9 -11 -9 -5 1 0 -1 -2 -1 3 3 -10 -15 -15 -9
+DST1501*28RRX020 0 -8 -9 -9 -5 -3 -7 -13 -14 -10 -9 -9 -10 -7 -4 -3 -6 -9 -7 -2 0 -2 -2 2 3 -6
+DST1501*29RRX020 0 2 3 1 -4 -8 -11 -11 -8 -5 -3 -2 5 0 -1 -3 -1 1 6 -1 -2 -12 -4 -1 -5 -3
+DST1501*30RRX020 0 -7 -4 -4 -7 -8 -13 -14 -9 -14 -14 -10 -9 -8 -5 -6 -7 -9 -16 -20 -24 -24 -26 -20 -11 -12
+DST1501*31RRX020 0 -8 -7 -7 -10 -12 -13 -14 -16 -18 -17 -12 -9 -8 -4 -5 -10 -11 -12 -15 -14 -10 -9 -14 -11 -11
+DST1502*01RRX020 0 -12 -11 -14 -13 -11 -11 -6 -5 -4 -5 -10 -7 -6 -3 0 0 -3 -2 -11 -6 -4 -21 -28 -25 -9
+DST1502*02RRX020 0 -16 -18 -25 -31 -28 -37 -46 -38 -36 -40 -39 -28 -28 -23 -18 -21 -30 -32 -27 -26 -23 -23 -22 -15 -28
+DST1502*03RRX020 0 -14 -16 -16 -19 -22 -25 -26 -24 -24 -23 -20 -19 -16 -17 -23 -21 -21 -22 -17 -15 -13 -13 -11 -8 -19
+DST1502*04RRX020 0 -6 -9 -7 -8 -12 -13 -15 -17 -17 -19 -21 -17 -14 -11 -14 -16 -18 -16 -16 -16 -16 -13 -11 -7 -14
+DST1502*05RRX020 0 -6 -11 -11 -8 -4 4 7 3 0 -6 -9 -4 3 7 -3 -7 -13 -14 -6 -9 -15 -15 -15 -11 -6
+DST1502*06RRX020 0 -12 -14 -14 -11 -9 -8 -7 -7 -10 -9 -11 -12 -6 -4 -3 -3 -4 -5 -4 -4 -4 -5 -4 -1 -7
+DST1502*07RRX020 0 0 1 2 3 4 5 4 -4 -23 -38 -39 -28 -17 -16 -21 -26 -25 -26 -23 -16 -14 -13 -13 -15 -14
+DST1502*08RRX020 0 -16 -13 -13 -10 -15 -22 -26 -30 -28 -27 -20 -18 -15 -14 -13 -13 -17 -20 -21 -17 -14 -13 -13 -13 -18
+DST1502*09RRX020 0 -14 -13 -10 -9 -7 -9 -10 -10 -11 -13 -14 -12 -8 -7 -8 -13 -14 -10 -10 -11 -8 -16 -20 -15 -11
+DST1502*10RRX020 0 -13 -15 -13 -10 -13 -15 -11 -9 -14 -17 -15 -12 -7 -6 -8 -8 -8 -6 -3 -9 -10 -12 -11 -11 -11
+DST1502*11RRX020 0 -8 -5 -6 -11 -7 -5 -5 -8 -8 -6 -6 -6 -8 -10 -12 -10 -7 -8 -8 -7 -4 -2 -3 -3 -7
+DST1502*12RRX020 0 -9 -10 -8 -4 -2 0 2 0 0 -1 -2 3 5 1 -2 -5 -7 -8 -8 -9 -10 -13 -12 -13 -5
+DST1502*13RRX020 0 -12 -11 -9 -6 -3 -1 -1 -1 -2 -4 -2 -3 -1 1 4 5 4 2 1 2 1 2 2 1 -1
+DST1502*14RRX020 0 4 4 4 3 0 -1 2 5 7 9 9 9 9 9 8 9 7 7 8 11 12 14 12 15 7
+DST1502*15RRX020 0 19 21 19 12 13 11 11 6 5 0 -6 0 4 2 -12 -15 -14 -9 -9 -10 -6 0 4 5 2
+DST1502*16RRX020 0 7 9 9 10 11 8 6 6 2 0 2 4 8 6 4 5 3 6 8 16 20 12 2 -3 7
+DST1502*17RRX020 0 -11 -18 -26 -25 -19 -14 -19 -24 -25 -34 -33 -26 -21 -16 -12 -12 -18 -24 -31 -31 -23 -39 -60 -62 -26
+DST1502*18RRX020 0 -64 -57 -50 -52 -50 -51 -57 -57 -57 -54 -48 -47 -40 -37 -36 -33 -35 -36 -34 -27 -24 -22 -24 -18 -42
+DST1502*19RRX020 0 -17 -21 -24 -29 -31 -29 -29 -25 -26 -23 -23 -21 -19 -20 -18 -18 -19 -19 -16 -16 -20 -20 -19 -12 -21
+DST1502*20RRX020 0 -10 -11 -11 -12 -16 -19 -17 -20 -22 -25 -27 -22 -16 -14 -10 -8 -9 -7 -5 -6 -8 -11 -15 -17 -14
+DST1502*21RRX020 0 -19 -19 -18 -14 -12 -10 -11 -12 -17 -19 -22 -17 -12 -8 -4 -2 -5 -7 -6 -5 -7 -5 0 -1 -11
+DST1502*22RRX020 0 -3 -3 -6 -5 -7 -10 -11 -9 -8 -6 -8 -7 -6 -9 -7 -4 -5 -3 -3 -3 -1 3 2 -3 -5
+DST1502*23RRX020 0 -10 -5 -5 3 2 -10 -13 -17 -16 -18 -16 -21 -25 -29 -23 -19 -31 -35 -20 -12 -12 -19 -27 -23 -17
+DST1502*24RRX020 0 -17 -17 -33 -52 -53 -50 -54 -55 -45 -40 -43 -34 -33 -31 -25 -23 -24 -24 -22 -23 -22 -20 -25 -24 -33
+DST1502*25RRX020 0 -21 -22 -22 -22 -20 -20 -17 -19 -31 -27 -23 -27 -23 -21 -20 -20 -15 -13 -13 -8 -8 -3 -6 -6 -18
+DST1502*26RRX020 0 -7 -10 -10 -9 -11 -10 -11 -14 -12 -12 -12 -13 -14 -13 -11 -9 -8 -8 -6 -6 -4 -3 0 1 -9
+DST1502*27RRX020 0 -1 1 2 2 3 2 1 3 6 9 9 7 4 6 7 7 10 10 9 8 5 6 7 6 5
+DST1502*28RRX020 0 7 8 7 7 6 4 6 6 -1 -4 0 1 0 -2 -1 8 6 -3 -10 -9 -22 -20 -11 -10 -1
+DST1503*01PPX120 0 -24 -34 -20 -20 -18 -32 -45 -42 -46 -41 -36 -33 -33 -28 -25 -22 -17 -15 -13 -10 -12 -11 -17 -15 -25
+DST1503*02PPX120 0 -11 -9 -20 -24 -19 -33 -33 -43 -54 -51 -40 -38 -40 -40 -39 -38 -30 -28 -25 -19 -17 -17 -16 -13 -29
+DST1503*03PPX120 0 -14 -12 -18 -15 -15 -17 -17 -15 -12 -15 -15 -15 -13 -14 -16 -16 -13 -13 -17 -11 -11 -13 -17 -21 -15
+DST1503*04PPX120 0 -17 -8 -6 -6 -4 -4 -2 2 5 6 7 5 2 -2 -6 -8 -8 -9 -7 -3 -4 -1 -5 -8 -3
+DST1503*05PPX120 0 -5 -1 0 2 3 4 6 7 6 5 5 5 0 -6 -2 -3 -3 0 0 1 3 3 7 7 2
+DST1503*06PPX120 0 7 10 12 16 13 4 -4 -20 -21 -10 -4 -3 -4 -2 -2 -1 1 4 3 2 -4 -7 1 4 0
+DST1503*07PPX120 0 3 -1 -2 -6 -9 -18 -17 -14 -10 -10 -11 -10 -7 1 0 -1 2 -2 -4 -4 -9 -14 -14 -10 -7
+DST1503*08PPX120 0 -7 -3 -4 -3 -4 -3 3 4 1 3 1 -6 -9 -5 -10 -8 -5 -8 -10 -6 -5 -3 -3 -3 -4
+DST1503*09PPX120 0 -7 -12 -11 -12 -9 -7 -7 -7 -7 -5 -3 0 2 3 1 2 2 2 6 7 7 7 6 8 -1
+DST1503*10PPX120 0 10 6 5 5 5 6 8 10 11 7 5 7 7 7 6 4 5 6 5 3 5 6 7 6 6
+DST1503*11PPX120 0 5 5 4 5 6 15 17 18 10 12 13 13 5 2 -2 -2 0 0 -5 -8 -7 -4 -4 -3 4
+DST1503*12PPX120 0 -4 -1 2 1 0 3 -1 -11 -14 -13 -7 -8 -5 -4 -8 -1 3 4 2 4 3 0 -3 -4 -3
+DST1503*13PPX120 0 -3 -1 1 8 9 11 12 11 9 9 10 11 8 -3 -8 0 5 2 -4 -3 1 2 3 1 4
+DST1503*14PPX120 0 -1 0 -2 -2 -3 -5 -2 2 2 4 7 6 7 9 12 15 16 15 14 14 10 8 5 0 5
+DST1503*15PPX120 0 0 -1 -1 0 1 0 2 3 3 4 5 5 5 10 13 16 12 12 14 13 9 4 5 9 6
+DST1503*16PPX120 0 15 21 26 22 19 25 12 2 8 15 23 29 28 24 19 24 30 29 26 27 22 19 16 15 21
+DST1503*17PPX120 0 15 14 13 13 25 56 37 -6 -43 -73 -63 -44 -44 -62 -81-106-131-150-143-165-171-187-223-214 -72
+DST1503*18PPX120 0-190-177-161-144-136-125-121-111-112-106-100 -89 -86 -78 -76 -79 -74 -69 -77 -82 -83 -83 -83 -81-105
+DST1503*19PPX120 0 -88 -83 -75 -69 -73 -73 -69 -61 -60 -65 -63 -66 -67 -71 -72 -68 -61 -59 -60 -58 -59 -58 -55 -58 -66
+DST1503*20PPX120 0 -64 -69 -63 -56 -53 -52 -58 -55 -52 -50 -49 -55 -48 -44 -43 -44 -50 -54 -53 -49 -47 -45 -45 -54 -52
+DST1503*21PPX120 0 -57 -53 -53 -45 -35 -34 -37 -33 -33 -33 -38 -37 -35 -32 -33 -34 -33 -31 -33 -32 -35 -29 -32 -30 -37
+DST1503*22PPX120 0 -27 -30 -24 -20 -27 -31 -31 -43 -38 -39 -33 -23 -31 -35 -43 -39 -36 -39 -42 -40 -35 -35 -34 -32 -34
+DST1503*23PPX120 0 -28 -32 -35 -34 -37 -35 -31 -32 -35 -33 -34 -32 -25 -22 -20 -24 -26 -23 -24 -25 -29 -39 -36 -36 -30
+DST1503*24PPX120 0 -36 -36 -33 -27 -20 -20 -19 -15 -18 -17 -14 -20 -22 -17 -16 -14 -20 -21 -20 -19 -17 -17 -23 -23 -21
+DST1503*25PPX120 0 -18 -18 -24 -20 -18 -21 -19 -18 -19 -17 -4 -3 6 8 9 1 -9 -4 -6 -10 -16 -20 -22 -20 -12
+DST1503*26PPX120 0 -17 -12 -13 -10 -9 -12 -13 -7 -5 -3 -2 1 2 0 1 -4 -7 -7 -9 -8 -15 -19 -20 -17 -9
+DST1503*27PPX120 0 -16 -16 -14 -14 -11 -17 -20 -14 -11 -15 -9 -12 -11 -11 -17 -18 -13 -10 -12 -11 -9 -9 -10 -9 -13
+DST1503*28PPX120 0 -9 -4 2 8 12 9 -8 -24 -29 -21 -14 -15 -16 -15 -13 -8 -2 1 -1 -3 -7 -9 -8 -5 -7
+DST1503*29PPX120 0 -7 -9 -7 -10 -16 -20 -19 -16 -13 -20 -31 -35 -24 -17 -21 -21 -20 -23 -28 -28 -26 -21 -21 -20 -20
+DST1503*30PPX120 0 -19 -15 -13 -13 -11 -9 -7 -7 -6 -7 -13 -15 -11 -8 -11 -12 -13 -13 -15 -15 -15 -17 -19 -17 -13
+DST1503*31PPX120 0 -12 -6 -2 2 3 2 -1 -4 0 4 5 6 -2 1 6 7 9 15 4 2 2 -1 -1 -1 2
+DST1504*01RRX020 0 -1 3 9 11 10 9 8 6 6 6 10 13 8 9 7 9 8 4 4 8 8 8 4 4 7
+DST1504*02RRX020 0 5 8 13 18 10 10 7 6 -7 -15 -12 -10 -8 -7 -8 -5 -6 -9 -6 -2 -2 -20 -20 -13 -3
+DST1504*03RRX020 0 -10 -9 -11 -14 -11 -9 -8 -5 -5 -5 -7 -6 -3 -2 -7 -7 -5 -5 -7 -7 -7 -10 -12 -19 -8
+DST1504*04RRX020 0 -21 -19 -17 -16 -15 -11 -13 -11 -8 -6 -7 -7 -7 -6 -5 -9 -10 -12 -11 -3 -1 2 3 0 -9
+DST1504*05RRX020 0 -3 -6 -5 -4 -6 -7 -8 -8 -4 -1 0 1 1 0 -1 -2 0 2 4 8 9 6 -2 -2 -1
+DST1504*06RRX020 0 -5 -7 -8 -4 -2 1 -2 -5 -5 -2 -2 -2 -3 -7 -8 -5 -2 0 1 4 3 0 -1 -6 -3
+DST1504*07RRX020 0 -8 -8 -6 -3 -4 -3 -1 3 4 6 6 5 4 1 -2 -2 2 4 8 7 10 11 12 7 2
+DST1504*08RRX020 0 4 5 5 5 5 5 4 6 9 10 9 8 8 9 9 7 6 4 4 7 9 12 13 8 7
+DST1504*09RRX020 0 5 3 9 4 -1 -3 -3 -3 -7 -4 4 1 4 6 3 7 9 9 11 17 22 23 24 15 6
+DST1504*10RRX020 0 -16 -33 -28 -32 -51 -47 -35 -37 -39 -45 -39 -33 -27 -27 -20 -15 -13 -15 -22 -27 -26 -26 -30 -32 -30
+DST1504*11RRX020 0 -38 -46 -52 -54 -60 -64 -69 -73 -72 -75 -68 -56 -53 -58 -58 -60 -58 -51 -47 -43 -35 -31 -25 -22 -53
+DST1504*12RRX020 0 -20 -20 -20 -19 -18 -18 -18 -17 -16 -15 -14 -15 -15 -13 -14 -11 -9 -9 -10 -11 -11 -10 -11 -11 -14
+DST1504*13RRX020 0 -9 -12 -18 -19 -14 -2 3 -4 -8 -11 -11 -5 0 2 2 0 -1 -2 1 6 6 7 8 7 -3
+DST1504*14RRX020 0 2 0 3 7 8 9 11 11 13 12 10 6 9 10 0 -6 -7 -26 -26 -14 -13 -19 -36 -36 -3
+DST1504*15RRX020 0 -28 -24 -21 -17 -21 -18 -8 0 3 0 -18 -42 -37 -36 -36 -30 -30 -32 -45 -51 -55 -44 -42 -43 -28
+DST1504*16RRX020 0 -44 -36 -43 -47 -47 -55 -59 -71 -60 -54 -51 -41 -41 -47 -44 -41 -37 -42 -47 -51 -48 -52 -75 -78 -50
+DST1504*17RRX020 0 -70 -65 -58 -54 -57 -60 -59 -55 -53 -48 -43 -42 -43 -45 -45 -40 -36 -35 -39 -39 -35 -33 -34 -36 -47
+DST1504*18RRX020 0 -39 -40 -31 -25 -24 -23 -20 -17 -18 -15 -15 -12 -9 -8 -10 -16 -18 -20 -21 -24 -24 -28 -29 -29 -21
+DST1504*19RRX020 0 -30 -27 -23 -22 -22 -19 -21 -19 -19 -22 -26 -23 -16 -17 -21 -21 -16 -14 -16 -20 -18 -17 -19 -22 -20
+DST1504*20RRX020 0 -26 -25 -20 -16 -19 -13 -12 -11 -10 -6 -2 -3 -1 3 10 15 16 20 15 12 5 12 0 -6 -3
+DST1504*21RRX020 0 -8 -16 -10 -11 -20 -23 -24 -28 -26 -17 -18 -16 -20 -19 -19 -25 -22 -18 -18 -13 -13 -16 -24 -22 -19
+DST1504*22RRX020 0 -20 -16 -13 -12 -13 -14 -19 -20 -20 -20 -17 -12 -10 -11 -11 -9 -9 -6 -3 -4 -2 -1 -5 -10 -12
+DST1504*23RRX020 0 -11 -10 -10 -16 -20 -13 -7 -6 -6 -8 -7 -3 2 3 1 1 2 1 0 0 -2 -4 -6 -6 -5
+DST1504*24RRX020 0 -6 -9 -7 -8 -14 -16 -12 -9 -10 -10 -9 -9 -9 -8 -8 -6 -7 -8 -7 -5 -2 -1 -2 -2 -8
+DST1504*25RRX020 0 -1 0 1 2 2 2 4 4 4 4 4 4 4 5 6 6 4 2 0 1 3 6 8 8 3
+DST1504*26RRX020 0 7 8 11 13 12 12 11 10 9 9 9 10 8 6 7 6 6 8 8 7 7 9 7 7 9
+DST1504*27RRX020 0 3 5 8 8 4 4 3 6 10 8 4 5 0 -4 -7 -7 -7 -11 -18 -20 -21 -17 -21 -27 -4
+DST1504*28RRX020 0 -31 -25 -18 -13 -14 -15 -15 -13 -7 -9 -16 -17 -12 -11 -13 -13 -14 -16 -10 0 6 2 0 -2 -12
+DST1504*29RRX020 0 -7 -5 -3 -2 -5 -6 -2 0 1 -1 -2 0 2 2 2 1 0 2 2 -3 -8 -13 -15 -11 -3
+DST1504*30RRX020 0 -6 1 6 8 9 7 4 1 1 2 2 4 5 6 5 5 6 7 7 2 3 5 5 2 4
+DST1505*01RRX020 0 11 13 13 6 -1 -6 -2 0 0 -1 -1 -3 0 2 1 4 6 5 5 7 11 14 12 9 4
+DST1505*02RRX020 0 7 10 12 10 9 8 5 3 3 4 6 9 8 7 5 4 -1 -3 -3 -4 0 -4 -2 -7 4
+DST1505*03RRX020 0 -11 -7 -4 -4 -7 -4 -2 -7 -12 -8 -8 -9 -8 -7 -3 -5 -5 -3 -3 -1 3 6 5 4 -4
+DST1505*04RRX020 0 1 1 -4 -3 1 1 -2 -4 -6 -3 3 5 3 2 -5 -6 -7 -6 -2 2 -4 -3 1 2 -1
+DST1505*05RRX020 0 5 8 7 6 7 4 1 -2 -5 -10 -8 -4 -3 -1 -2 -2 -6 -9 -9 -8 -6 -1 6 2 -1
+DST1505*06RRX020 0 -3 2 18 15 17 11 3 0 0 -7 -17 -18 -15 -13 -12 -16 -15 -26 -28 -23 -19 -17 -13 -4 -8
+DST1505*07RRX020 0 5 10 8 3 -1 -7 -7 -10 -9 -9 -9 -9 -9 -5 -4 -7 -5 -9 -13 -7 -2 5 2 -5 -4
+DST1505*08RRX020 0 -4 -2 0 -3 9 12 10 3 -5 -6 -6 -3 -6 -6 -6 -6 -8 -7 -6 -7 -6 -4 -5 -3 -3
+DST1505*09RRX020 0 -2 -2 0 1 -1 -2 0 2 4 4 13 16 21 24 22 17 5 14 15 8 13 14 4 5 8
+DST1505*10RRX020 0 6 8 10 12 9 2 0 -9 -11 -10 -21 -29 -20 -16 -14 -10 -11 -10 -8 -12 -14 -16 -17 -20 -8
+DST1505*11RRX020 0 -22 -32 -40 -47 -51 -45 -42 -35 -28 -26 -28 -31 -32 -32 -30 -33 -34 -29 -30 -34 -32 -27 -23 -14 -32
+DST1505*12RRX020 0 -9 -6 -5 -12 -23 -32 -30 -29 -35 -39 -39 -42 -38 -30 -27 -26 -32 -39 -44 -43 -33 -17 -9 -12 -27
+DST1505*13RRX020 0 -9 -26 -40 -40 -30 -49 -76 -72 -67 -62 -64 -68 -67 -65 -59 -58 -57 -60 -60 -65 -66 -57 -45 -30 -54
+DST1505*14RRX020 0 -24 -23 -24 -30 -31 -33 -27 -24 -27 -23 -21 -22 -23 -22 -26 -29 -32 -30 -26 -24 -21 -25 -20 -13 -25
+DST1505*15RRX020 0 -10 -8 -8 -12 -15 -15 -20 -24 -23 -24 -24 -22 -21 -22 -22 -22 -22 -22 -22 -21 -18 -13 -9 -5 -18
+DST1505*16RRX020 0 -5 -4 -5 -9 -10 -13 -15 -12 -10 -12 -13 -15 -15 -13 -14 -14 -14 -14 -15 -11 -8 0 1 3 -10
+DST1505*17RRX020 0 4 3 1 0 1 -3 -10 -14 -11 -9 -7 -6 -5 -5 -6 -2 -1 -1 -4 -1 1 4 4 4 -3
+DST1505*18RRX020 0 8 11 14 14 17 18 15 14 11 5 15 7 -11 -16 -10 -9 -8 -12 -11 -9 -4 -2 -17 -42 0
+DST1505*19RRX020 0 -33 -21 -28 -44 -35 -33 -31 -25 -21 -18 -14 -11 -10 -12 -18 -26 -25 -23 -21 -17 -18 -15 -14 -15 -22
+DST1505*20RRX020 0 -15 -14 -14 -20 -20 -14 -15 -12 -11 -11 -10 -11 -15 -18 -18 -16 -17 -18 -19 -20 -19 -20 -22 -22 -16
+DST1505*21RRX020 0 -19 -16 -15 -12 -10 -10 -9 -9 -9 -10 -9 -10 -11 -10 -12 -11 -12 -12 -10 -7 -6 -5 -4 -4 -10
+DST1505*22RRX020 0 -7 -7 -5 -2 -1 -3 -3 -5 -4 -3 -1 -1 0 -4 -2 -2 -3 -3 -4 -3 -4 -2 0 2 -3
+DST1505*23RRX020 0 4 5 4 4 6 10 8 5 2 0 -1 0 2 6 6 8 11 10 11 12 13 11 10 7 6
+DST1505*24RRX020 0 5 4 1 -4 -6 -7 -4 -4 -2 1 3 3 3 4 5 5 3 4 3 0 -1 0 0 0 1
+DST1505*25RRX020 0 1 2 2 3 4 4 6 9 9 7 6 5 5 4 3 2 3 4 5 5 6 8 9 12 5
+DST1505*26RRX020 0 9 8 8 11 7 5 5 10 13 13 12 11 7 5 3 5 3 3 0 3 4 7 8 9 7
+DST1505*27RRX020 0 10 10 9 10 10 11 10 7 7 7 4 3 3 7 5 0 -4 -5 -7 -10 -9 -5 -5 -7 3
+DST1505*28RRX020 0 -10 -5 -1 4 4 4 4 7 9 8 8 2 -6 -7 -5 -4 -4 -4 0 2 8 13 12 7 2
+DST1505*29RRX020 0 8 11 11 9 9 10 13 12 12 13 13 13 10 11 10 9 8 8 9 9 9 9 8 9 10
+DST1505*30RRX020 0 12 16 15 12 11 11 9 9 13 13 11 11 10 13 12 10 8 8 9 8 8 9 6 3 10
+DST1505*31RRX020 0 6 6 4 0 0 1 2 2 0 1 2 0 0 1 4 12 11 9 13 14 13 14 15 11 6
+DST1506*01RRX020 0 -6 -9 -8 -7 -10 -14 -16 -16 -13 -11 -14 -13 -11 -9 -8 -7 -4 0 -4 -11 -13 -13 -10 -4 -10
+DST1506*02RRX020 0 -1 0 -1 -2 -4 -5 -4 -4 -2 -1 -2 -3 -3 -4 -4 -1 0 1 2 2 3 4 4 1 -1
+DST1506*03RRX020 0 -1 -2 -2 -3 -1 1 -1 0 0 -1 -2 -1 0 0 0 1 3 4 2 0 0 0 0 -1 0
+DST1506*04RRX020 0 0 0 0 0 0 0 1 1 3 2 2 0 1 2 3 2 2 3 4 5 3 2 2 2 2
+DST1506*05RRX020 0 1 1 2 3 2 2 2 2 2 4 9 10 9 9 9 10 9 8 8 8 9 9 11 13 6
+DST1506*06RRX020 0 14 15 15 17 18 20 19 20 19 20 19 14 5 4 4 5 5 5 7 11 12 11 9 8 12
+DST1506*07RRX020 0 9 10 9 7 6 2 -1 -6 -4 2 8 10 15 20 20 20 20 21 25 24 16 8 11 14 11
+DST1506*08RRX020 0 13 6 4 7 9 2 -21 -66 -73 -60 -52 -43 -66 -71 -66 -62 -63 -62 -65 -57 -56 -54 -46 -45 -41
+DST1506*09RRX020 0 -40 -36 -36 -33 -35 -35 -33 -34 -27 -24 -24 -23 -26 -28 -35 -38 -36 -39 -42 -39 -40 -38 -35 -30 -34
+DST1506*10RRX020 0 -31 -26 -25 -24 -22 -22 -25 -24 -26 -26 -25 -24 -24 -27 -30 -31 -29 -26 -26 -27 -30 -30 -24 -24 -26
+DST1506*11RRX020 0 -23 -26 -26 -33 -32 -28 -23 -25 -26 -24 -22 -21 -22 -25 -27 -31 -29 -26 -24 -23 -25 -26 -25 -21 -26
+DST1506*12RRX020 0 -18 -18 -21 -24 -23 -23 -22 -19 -15 -13 -13 -15 -17 -2 2 3 11 17 15 13 6 -1 -1 -1 -7
+DST1506*13RRX020 0 -3 -10 -9 -8 -9 -12 -11 -14 -10 -12 -17 -16 -16 -17 -19 -19 -17 -19 -21 -21 -21 -16 -8 -7 -14
+DST1506*14RRX020 0 -14 -16 -15 -15 -17 -18 -18 -22 -22 -25 -24 -22 -20 -19 -17 -14 -12 -17 -14 -15 -17 -21 -18 -17 -18
+DST1506*15RRX020 0 -18 -17 -19 -22 -24 -21 -21 -19 -17 -19 -21 -26 -29 -28 -27 -32 -34 -29 -24 -29 -28 -27 -22 -22 -24
+DST1506*16RRX020 0 -27 -26 -22 -20 -19 -22 -22 -24 -28 -30 -27 -24 -23 -24 -25 -26 -28 -29 -23 -16 -14 -14 -13 -15 -23
+DST1506*17RRX020 0 -14 -12 -18 -22 -29 -30 -33 -35 -37 -38 -35 -36 -39 -39 -39 -44 -41 -36 -34 -32 -32 -33 -34 -32 -32
+DST1506*18RRX020 0 -30 -26 -22 -19 -18 -22 -22 -20 -20 -19 -19 -18 -22 -26 -30 -32 -31 -28 -25 -23 -23 -24 -20 -18 -23
+DST1506*19RRX020 0 -18 -22 -25 -22 -22 -24 -24 -22 -17 -17 -18 -19 -18 -18 -19 -20 -18 -15 -13 -11 -12 -11 -13 -15 -18
+DST1506*20RRX020 0 -14 -13 -13 -11 -8 -9 -7 -7 -9 -10 -11 -8 -9 -8 -8 -10 -12 -14 -12 -9 -6 -4 -3 0 -9
+DST1506*21RRX020 0 1 -1 -1 2 1 -1 -1 -3 -2 -1 -1 0 2 2 1 0 9 34 36 32 22 22 15 11 7
+DST1506*22RRX020 0 8 8 9 8 7 11 13 4 6 -2 -5 2 -1 -6 -18 -35 -51 -41 -9 -53-121-107 -97-102 -24
+DST1506*23RRX020 0-101-131-147-179-204-185-179-162-161-162-157-145-138-128-112-114-111-110 -98 -89 -98-101-101 -93-134
+DST1506*24RRX020 0 -91 -85 -83 -86 -83 -84 -86 -86 -80 -79 -77 -78 -79 -69 -56 -57 -55 -56 -53 -47 -52 -57 -59 -60 -71
+DST1506*25RRX020 0 -55 -46 -36 -33 -34 -32 -36 -50 -43 -48 -55 -55 -51 -66 -84 -86 -86 -84 -82 -86 -85 -78 -72 -69 -61
+DST1506*26RRX020 0 -63 -65 -62 -56 -59 -61 -57 -54 -49 -52 -53 -51 -52 -52 -54 -55 -55 -57 -56 -56 -55 -51 -46 -39 -55
+DST1506*27RRX020 0 -43 -44 -40 -32 -35 -39 -40 -41 -42 -40 -40 -44 -43 -43 -40 -38 -37 -36 -37 -39 -35 -34 -32 -38 -39
+DST1506*28RRX020 0 -44 -44 -37 -36 -38 -48 -54 -55 -47 -46 -51 -49 -47 -45 -44 -47 -43 -41 -40 -46 -43 -44 -40 -38 -44
+DST1506*29RRX020 0 -34 -32 -29 -26 -26 -28 -32 -30 -30 -30 -24 -21 -23 -27 -31 -31 -30 -33 -32 -33 -33 -33 -31 -27 -29
+DST1506*30RRX020 0 -21 -19 -24 -26 -24 -22 -24 -24 -22 -19 -19 -18 -19 -15 -14 -16 -16 -17 -15 -15 -12 -10 -13 -16 -18
+DST1507*01RRX020 0 -7 -8 -5 -3 -4 -5 -7 -6 -7 -4 -5 -9 -11 -12 -12 -13 -12 -13 -14 -12 -12 -15 -18 -17 -10
+DST1507*02RRX020 0 -15 -14 -11 -12 -11 -9 -8 -8 -9 -7 -7 -6 -7 -6 -7 -10 -10 -9 -9 -10 -12 -10 -9 -7 -9
+DST1507*03RRX020 0 -6 -8 -7 -4 1 2 2 2 1 -1 0 2 3 4 2 1 -2 -2 -1 3 6 5 2 2 0
+DST1507*04RRX020 0 4 3 5 8 7 7 10 12 13 13 14 15 11 15 21 32 34 22 7 -7 -7 -49 -58 -51 3
+DST1507*05RRX020 0 -45 -50 -59 -53 -66 -68 -57 -54 -54 -52 -47 -46 -42 -43 -50 -50 -48 -45 -41 -36 -36 -36 -33 -32 -48
+DST1507*06RRX020 0 -31 -37 -49 -50 -39 -37 -35 -37 -37 -36 -34 -30 -29 -30 -30 -29 -29 -33 -34 -35 -34 -32 -30 -26 -34
+DST1507*07RRX020 0 -26 -28 -24 -21 -21 -22 -21 -17 -15 -19 -18 -18 -19 -20 -24 -25 -23 -20 -18 -19 -20 -22 -22 -22 -21
+DST1507*08RRX020 0 -21 -22 -22 -21 -20 -18 -16 -12 -8 -8 -9 -13 -15 -14 -15 -17 -20 -22 -17 -14 -10 -8 -6 -4 -15
+DST1507*09RRX020 0 -6 -11 -15 -17 -19 -20 -12 -5 -4 -6 -4 -5 -4 -4 -5 -7 -5 -2 -3 -5 -5 -6 -4 -5 -7
+DST1507*10RRX020 0 -9 -13 -14 -13 -11 -9 -7 -6 -6 -2 0 0 -2 -1 -3 -2 4 8 9 13 18 19 27 24 1
+DST1507*11RRX020 0 7 3 -2 -17 -7 -7 -17 -18 -21 -21 -17 -24 -24 -26 -25 -28 -26 -21 -23 -23 -22 -19 -21 -19 -17
+DST1507*12RRX020 0 -16 -21 -19 -20 -22 -22 -18 -17 -15 -16 -18 -18 -16 -19 -19 -18 -17 -15 -14 -18 -26 -22 -18 -14 -18
+DST1507*13RRX020 0 -14 -11 -9 -16 -29 -37 -38 -41 -47 -51 -56 -59 -51 -56 -58 -61 -59 -51 -52 -47 -45 -52 -52 -48 -43
+DST1507*14RRX020 0 -43 -38 -36 -36 -36 -33 -30 -25 -21 -19 -17 -16 -17 -21 -24 -25 -21 -15 -10 -13 -14 -13 -13 -14 -23
+DST1507*15RRX020 0 -13 -12 -10 -9 -11 -14 -14 -9 -7 -5 -5 -2 -1 -4 -9 -11 -13 -14 -16 -16 -16 -16 -13 -16 -11
+DST1507*16RRX020 0 -16 -17 -15 -16 -13 -17 -17 -14 -15 -13 -13 -15 -14 -14 -18 -23 -23 -20 -18 -17 -20 -21 -22 -19 -17
+DST1507*17RRX020 0 -15 -10 -11 -16 -17 -18 -18 -13 -10 -10 -11 -13 -15 -15 -12 -11 -8 -7 -11 -12 -12 -11 -12 -14 -13
+DST1507*18RRX020 0 -15 -12 -10 -10 -10 -8 -9 -4 -1 0 -1 -5 -6 -5 -3 -4 -2 -1 -1 -6 -8 -9 -9 -9 -6
+DST1507*19RRX020 0 -7 -2 0 -1 -4 -5 -5 -1 -1 0 2 2 3 3 2 3 3 4 4 6 6 6 7 9 1
+DST1507*20RRX020 0 6 3 5 7 8 7 7 4 3 4 4 4 4 5 8 16 16 16 16 17 19 19 19 21 10
+DST1507*21RRX020 0 25 29 17 11 12 14 16 13 13 3 3 4 4 1 0 2 3 4 2 3 6 3 4 -1 8
+DST1507*22RRX020 0 -8 -7 -3 0 2 4 5 8 8 8 7 7 7 9 9 3 7 7 1 1 2 2 3 -1 3
+DST1507*23RRX020 0 -9 -3 4 0 -9 -28 -50 -63 -64 -56 -51 -48 -49 -55 -55 -50 -47 -42 -43 -52 -51 -46 -42 -44 -40
+DST1507*24RRX020 0 -42 -37 -30 -27 -26 -26 -23 -21 -18 -16 -17 -18 -19 -20 -23 -26 -27 -28 -26 -25 -26 -26 -24 -23 -25
+DST1507*25RRX020 0 -22 -24 -29 -29 -25 -19 -15 -13 -17 -21 -16 -14 -12 -16 -20 -20 -20 -21 -21 -22 -24 -28 -32 -34 -21
+DST1507*26RRX020 0 -36 -31 -29 -30 -28 -23 -20 -14 -12 -14 -15 -17 -16 -18 -23 -24 -22 -18 -9 -7 -3 -4 -7 -7 -18
+DST1507*27RRX020 0 -7 -8 -11 -12 -7 -4 -7 -9 -12 -15 -13 -11 -14 -13 -13 -15 -16 -17 -17 -17 -15 -15 -15 -11 -12
+DST1507*28RRX020 0 -9 -9 -8 -10 -15 -12 -9 -6 -12 -17 -17 -18 -18 -18 -20 -21 -18 -18 -18 -15 -15 -16 -17 -14 -15
+DST1507*29RRX020 0 -12 -11 -8 -9 -7 -4 -5 -2 -1 2 4 2 5 5 0 -2 0 1 -4 -8 -7 -6 -8 -9 -4
+DST1507*30RRX020 0 -5 -2 0 -2 -6 -5 3 7 9 9 11 11 9 6 4 9 18 17 2 -10 -23 -19 -17 -12 1
+DST1507*31RRX020 0 -16 -18 -24 -28 -23 -15 -10 -8 -9 -9 -5 1 -2 -3 -1 -3 -4 -17 -15 -9 -12 -19 -27 -30 -13
+DST1508*01RRX020 0 -8 -3 0 -2 -2 0 0 -1 -4 -7 -6 2 9 10 11 9 2 -3 -4 3 4 5 6 5 1
+DST1508*02RRX020 0 -1 -4 -10 -8 -4 -3 -6 -7 -10 -10 -3 1 2 -3 -6 -8 -4 1 8 9 5 4 -1 0 -2
+DST1508*03RRX020 0 2 4 5 6 8 5 4 0 -1 -1 2 6 5 1 -2 -2 -3 1 6 9 9 8 3 6 3
+DST1508*04RRX020 0 7 4 5 5 6 6 4 0 2 3 8 12 15 15 12 7 6 8 10 11 8 5 4 7 7
+DST1508*05RRX020 0 7 7 6 4 4 2 4 4 3 3 7 12 14 16 16 13 13 15 15 11 10 7 6 7 9
+DST1508*06RRX020 0 8 9 11 14 16 15 14 13 6 -5 -12 -9 -2 -1 4 3 1 1 1 1 5 4 4 2 4
+DST1508*07RRX020 0 -2 -4 -7 -4 -4 -5 3 -7 -9 -14 -12 -12 -14 -11 -10 -13 -8 6 6 6 1 -1 -4 -6 -5
+DST1508*08RRX020 0 -7 -3 1 2 4 3 -4 -7 -10 -17 -18 -25 -22 -20 -12 -9 -9 -10 -8 -7 -15 -18 -12 -4 -9
+DST1508*09RRX020 0 -2 -3 -1 -3 -6 -12 -4 -7 -13 -16 -10 -4 1 7 6 2 1 -4 -7 -7 -5 -5 0 2 -4
+DST1508*10RRX020 0 2 1 2 -1 -6 -4 -3 -8 -15 -18 -14 -9 -4 -4 -3 -1 1 2 -5 -12 -12 -4 0 0 -5
+DST1508*11RRX020 0 5 0 -6 -4 -5 -4 -5 -8 -9 -12 -12 -5 -3 -4 -3 -3 -1 -3 -3 -1 -2 0 3 6 -3
+DST1508*12RRX020 0 9 8 7 4 4 -3 -3 -4 -4 -2 2 3 4 3 -2 -7 -3 -2 -6 -14 -15 -8 -10 -14 -2
+DST1508*13RRX020 0 -20 -23 -23 -18 -17 -15 -12 -16 -19 -20 -16 -15 -16 -16 -14 -12 -13 -17 -21 -22 -25 -20 -15 -9 -17
+DST1508*14RRX020 0 -2 3 4 2 1 1 -1 -3 -4 -4 -1 1 2 3 2 1 1 -1 2 6 7 9 9 6 2
+DST1508*15RRX020 0 9 5 0 6 6 6 4 5 21 26 15 -22 -56 -44 -53 -49 -50 -52 -54 -57 -53 -43 -42 -46 -22
+DST1508*16RRX020 0 -55 -57 -56 -57 -57 -64 -76 -84 -78 -69 -51 -40 -33 -31 -32 -33 -30 -28 -25 -29 -38 -40 -37 -34 -47
+DST1508*17RRX020 0 -29 -26 -28 -26 -30 -35 -34 -39 -37 -38 -37 -37 -34 -31 -32 -34 -38 -38 -34 -26 -33 -30 -25 -20 -32
+DST1508*18RRX020 0 -18 -21 -22 -25 -24 -18 -21 -20 -17 -21 -19 -15 -15 -17 -16 -18 -16 -16 -14 -12 -12 -11 -13 -12 -17
+DST1508*19RRX020 0 -21 -30 -31 -33 -40 -45 -51 -48 -47 -41 -33 -25 -21 -19 -20 -11 -13 -12 -15 -15 -19 -19 -20 -14 -27
+DST1508*20RRX020 0 -14 -15 -11 -9 -9 -12 -10 -9 -11 -16 -11 -5 -6 -6 -3 -4 -6 -11 -13 -12 -13 -11 -13 -9 -10
+DST1508*21RRX020 0 -2 -3 -5 -9 -11 -10 -8 -5 -2 -1 3 0 -2 -3 -5 -3 0 0 -3 -3 -1 0 2 0 -3
+DST1508*22RRX020 0 -1 0 1 -2 -4 -1 1 0 -2 -9 -10 -6 -14 -18 -20 -21 -17 -15 -13 -10 -7 -3 4 4 -7
+DST1508*23RRX020 0 5 2 10 9 8 10 7 -13 -43 -44 -33 -28 -21 -23 -17 -31 -28 -29 -29 -26 -25 -22 -20 -15 -17
+DST1508*24RRX020 0 -15 -15 -12 -10 -11 -13 -14 -19 -22 -19 -16 -13 -13 -12 -9 -7 -5 -4 -4 -8 -13 -10 -7 -5 -12
+DST1508*25RRX020 0 -1 0 -1 -5 -9 -12 -13 -14 -13 -11 -7 -6 -4 -6 -7 -8 -6 -10 -14 -18 -19 -11 -3 -5 -8
+DST1508*26RRX020 0 -8 -9 -11 -10 -11 -4 -7 -19 -26 -37 -26 -20 -24 -22 -32 -39 -46 -52 -54 -62 -67 -67 -59 -46 -32
+DST1508*27RRX020 0 -41 -48 -61 -60 -67 -77 -70 -71 -67 -59 -56 -55 -55 -56 -50 -49 -56 -68 -77 -88 -91 -88 -84 -71 -65
+DST1508*28RRX020 0 -51 -42 -41 -52 -64 -72 -77 -80 -85 -88 -84 -71 -60 -53 -53 -65 -66 -71 -74 -69 -62 -50 -40 -34 -63
+DST1508*29RRX020 0 -31 -35 -29 -29 -28 -23 -24 -26 -27 -24 -22 -18 -13 -11 -12 -13 -16 -15 -18 -16 -15 -14 -13 -14 -20
+DST1508*30RRX020 0 -15 -15 -13 -10 -7 -7 -9 -11 -11 -9 -7 -7 -7 -8 -6 -4 -5 -4 -3 -1 -2 -4 -5 -7 -7
+DST1508*31RRX020 0 -10 -10 -9 -7 -6 -4 -3 -1 -1 -2 -1 0 -2 -3 -2 -3 -2 -4 -1 -1 0 0 -2 -1 -3
+DST1509*01RRX020 0 2 7 7 3 0 -2 -2 -2 1 2 2 -1 -3 -8 -8 -6 -2 2 5 6 3 -2 0 3 0
+DST1509*02RRX020 0 10 12 7 3 2 0 -1 1 1 3 2 3 -1 -3 -5 -2 6 11 -2 -3 -3 -5 -8 -10 1
+DST1509*03RRX020 0 -4 1 -3 -8 -10 -12 -13 -10 -8 -6 -4 -1 0 1 3 3 4 6 5 4 3 5 1 -9 -2
+DST1509*04RRX020 0 -24 -32 -32 -37 -37 -38 -44 -34 -25 -22 -13 -14 -15 -20 -26 -23 -26 -25 -27 -27 -22 -18 -17 -17 -26
+DST1509*05RRX020 0 -12 -7 -7 -8 -14 -16 -18 -18 -13 -13 -9 -6 -9 -17 -22 -20 -22 -23 -19 -13 -10 -14 -13 -12 -14
+DST1509*06RRX020 0 -1 2 3 1 -6 -17 -21 -19 -13 -12 -13 -15 -16 -28 -26 -17 -14 -12 -18 -22 -21 -16 -10 -7 -13
+DST1509*07RRX020 0 -2 0 -4 -4 -7 -13 -18 -25 -24 -25 -19 -18 -18 -15 -23 -36 -45 -46 -50 -61 -71 -69 -69 -64 -30
+DST1509*08RRX020 0 -55 -65 -66 -55 -40 -31 -30 -27 -25 -17 -12 -10 -2 -2 -9 -9 -7 -8 -8 -7 -3 -6 -12 -13 -22
+DST1509*09RRX020 0 -10 -20 -36 -51 -63 -80 -84 -81 -92 -94 -89 -93 -98 -92 -86 -88 -88 -79 -83 -87 -86 -87 -74 -60 -75
+DST1509*10RRX020 0 -48 -39 -39 -41 -42 -40 -37 -33 -31 -35 -31 -29 -25 -23 -26 -24 -18 -33 -34 -44 -20 -9 -4 -16 -30
+DST1509*11RRX020 0 -10 -9 -5 -10 -17 -30 -24 -13 -44 -56 -56 -49 -56 -76 -82 -80 -72 -65 -54 -48 -42 -42 -43 -48 -43
+DST1509*12RRX020 0 -38 -31 -29 -35 -38 -37 -34 -35 -31 -30 -33 -35 -33 -34 -31 -29 -30 -30 -30 -27 -26 -23 -22 -22 -31
+DST1509*13RRX020 0 -16 -15 -15 -17 -16 -15 -14 -15 -20 -28 -29 -28 -30 -33 -30 -33 -36 -38 -35 -33 -26 -30 -29 -26 -25
+DST1509*14RRX020 0 -20 -18 -18 -16 -17 -23 -22 -19 -15 -10 -16 -21 -22 -23 -22 -31 -41 -40 -32 -31 -25 -28 -31 -30 -24
+DST1509*15RRX020 0 -25 -25 -26 -25 -18 -18 -18 -18 -19 -15 -14 -16 -22 -29 -28 -27 -31 -30 -27 -25 -23 -28 -27 -27 -23
+DST1509*16RRX020 0 -18 -11 -9 -11 -14 -12 -14 -15 -10 -7 -9 -12 -15 -20 -22 -18 -15 -19 -18 -14 -9 -18 -19 -19 -15
+DST1509*17RRX020 0 -16 -12 -12 -18 -19 -21 -26 -25 -17 -16 -18 -19 -20 -24 -24 -22 -21 -19 -16 -13 -11 -10 -9 -8 -17
+DST1509*18RRX020 0 -10 -5 -4 -8 -10 -10 -15 -18 -19 -25 -24 -25 -30 -33 -29 -32 -28 -24 -24 -20 -14 -14 -16 -21 -19
+DST1509*19RRX020 0 -14 -17 -20 -21 -12 -6 -8 -22 -28 -22 -18 -14 -14 -19 -18 -16 -15 -13 -13 -8 -6 -6 -9 -6 -14
+DST1509*20RRX020 0 3 -1 2 -7 -18 -18 -8 -37 -58 -63 -71 -74 -69 -68 -72 -75 -67 -58 -56 -50 -44 -41 -36 -38 -43
+DST1509*21RRX020 0 -35 -26 -24 -27 -27 -30 -27 -23 -21 -21 -13 -16 -14 -12 -19 -22 -25 -21 -22 -19 -13 -11 -12 -7 -20
+DST1509*22RRX020 0 1 0 -1 -1 -1 -5 -9 -22 -19 -16 -13 -8 -7 -10 -15 -12 -12 -12 -16 -21 -19 -14 -11 -11 -11
+DST1509*23RRX020 0 -7 -5 -2 4 2 3 3 4 -5 -16 -20 -23 -22 -19 -16 -21 -19 -37 -34 -26 -17 -14 -15 -14 -13
+DST1509*24RRX020 0 -5 -4 -9 -10 -12 -19 -20 -18 -18 -19 -18 -16 -15 -15 -13 -8 -8 -12 -19 -21 -16 -12 -9 -5 -13
+DST1509*25RRX020 0 -2 -2 -2 3 2 2 1 -1 0 -3 -8 -12 -16 -13 -11 -8 -8 -7 -9 -7 -5 -5 -2 -2 -5
+DST1509*26RRX020 0 1 0 3 2 -1 -3 -5 -6 -6 -6 -6 -4 -1 1 0 -2 -4 -5 -5 -5 -5 -1 2 3 -2
+DST1509*27RRX020 0 3 1 1 3 1 -1 0 2 1 1 2 1 -1 -3 -2 -2 -2 -1 -1 -1 -1 0 -1 -1 0
+DST1509*28RRX020 0 -3 -4 -4 -1 4 6 5 6 7 5 2 2 3 3 2 3 2 0 -3 -4 -4 -4 -5 -8 0
+DST1509*29RRX020 0 -7 -9 -12 -15 -16 -16 -13 -11 -12 -10 -7 -5 -4 -4 -3 -2 -1 -3 -2 -3 -1 0 0 -1 -7
+DST1509*30RRX020 0 0 3 5 6 7 9 8 7 7 8 11 14 14 14 15 13 12 10 9 8 10 9 9 9 9
+DST1510*01RRX020 0 2 4 9 13 14 15 14 12 14 17 18 15 11 4 -4 -10 -8 -9 -25 -32 -41 -40 -32 -26 -3
+DST1510*02RRX020 0 -23 -23 -17 -20 -27 -28 -22 -24 -26 -23 -23 -22 -21 -27 -30 -30 -26 -24 -23 -21 -21 -24 -26 -27 -24
+DST1510*03RRX020 0 -26 -25 -24 -18 -16 -21 -28 -34 -34 -32 -27 -18 -11 -11 -18 -24 -24 -20 -18 -20 -22 -20 -20 -21 -22
+DST1510*04RRX020 0 -20 -27 -33 -39 -42 -46 -46 -51 -55 -56 -49 -38 -32 -28 -38 -36 -31 -28 -29 -27 -28 -25 -39 -46 -37
+DST1510*05RRX020 0 -42 -30 -20 -22 -23 -23 -39 -37 -32 -32 -25 -28 -26 -30 -30 -27 -25 -26 -29 -27 -27 -27 -30 -31 -29
+DST1510*06RRX020 0 -28 -27 -28 -24 -22 -25 -26 -18 -10 -10 -12 -15 -18 -23 -26 -25 -25 -34 -39 -42 -43 -41 -39 -30 -26
+DST1510*07RRX020 0 -21 -14 -9 -13 -29 -46 -58 -75 -87 -93 -85 -56 -43 -38 -60 -74 -78 -74 -92-105-111-118-124-109 -67
+DST1510*08RRX020 0 -90 -80 -73 -68 -69 -72 -60 -57 -54 -52 -50 -47 -52 -54 -57 -56 -57 -58 -51 -47 -44 -48 -51 -49 -58
+DST1510*09RRX020 0 -42 -43 -47 -42 -42 -39 -38 -33 -29 -28 -35 -42 -31 -37 -42 -44 -40 -37 -42 -43 -45 -49 -48 -47 -40
+DST1510*10RRX020 0 -42 -38 -39 -40 -37 -37 -35 -41 -32 -26 -25 -25 -27 -27 -28 -31 -33 -33 -33 -34 -36 -40 -45 -50 -35
+DST1510*11RRX020 0 -46 -42 -39 -42 -40 -34 -31 -26 -22 -18 -17 -21 -23 -25 -23 -21 -17 -15 -20 -25 -31 -30 -25 -20 -27
+DST1510*12RRX020 0 -15 -14 -12 -14 -10 -12 -13 -18 -17 -15 -19 -20 -25 -24 -19 -18 -24 -31 -42 -37 -32 -37 -41 -36 -23
+DST1510*13RRX020 0 -32 -29 -23 -24 -26 -28 -34 -33 -24 -23 -22 -19 -16 -18 -20 -23 -29 -31 -25 -19 -23 -34 -35 -43 -26
+DST1510*14RRX020 0 -41 -36 -32 -37 -41 -45 -46 -35 -36 -31 -28 -40 -34 -32 -32 -31 -30 -28 -31 -26 -27 -26 -25 -23 -33
+DST1510*15RRX020 0 -18 -16 -14 -14 -13 -14 -17 -19 -23 -24 -24 -17 -16 -15 -15 -14 -14 -16 -18 -20 -19 -17 -18 -17 -17
+DST1510*16RRX020 0 -17 -20 -22 -22 -24 -27 -25 -19 -12 -8 -9 -9 -10 -13 -11 -9 -9 -9 -8 -7 -7 -9 -11 -7 -14
+DST1510*17RRX020 0 -5 -9 -13 -10 -11 -11 -12 -8 -7 -5 -8 -7 -2 -6 -13 -17 -18 -11 -8 -3 2 5 2 5 -7
+DST1510*18RRX020 0 2 -2 -4 4 5 -1 -3 -7 -26 -48 -40 -33 -34 -40 -40 -43 -42 -39 -36 -32 -31 -29 -27 -26 -24
+DST1510*19RRX020 0 -24 -22 -23 -21 -20 -21 -20 -18 -14 -10 -9 -9 -9 -12 -12 -13 -11 -8 -7 -4 -4 -6 -7 -6 -13
+DST1510*20RRX020 0 -6 -9 -10 -10 -7 -8 -7 -8 -6 -1 4 2 -2 -8 -11 -11 -9 -8 -12 -10 -11 -8 -4 -1 -7
+DST1510*21RRX020 0 2 1 2 1 2 11 7 3 7 17 22 2 5 -6 -3 -4 -5 -8 -11 -14 -14 -11 -9 -10 -1
+DST1510*22RRX020 0 -12 -12 -10 -6 -2 0 -1 -4 -5 -1 1 1 2 1 -4 -9 -10 -7 -9 -8 -9 -8 -3 -5 -5
+DST1510*23RRX020 0 -6 -5 -2 -1 3 1 1 3 3 5 5 6 6 0 -4 -6 -5 -5 -4 -3 -5 -4 0 -1 -1
+DST1510*24RRX020 0 -7 -9 -10 -7 -6 -5 -9 -1 1 3 5 7 8 6 4 4 5 7 5 21 19 20 17 15 4
+DST1510*25RRX020 0 18 12 10 10 11 10 9 6 2 4 5 6 7 4 0 4 8 7 7 7 7 5 1 0 7
+DST1510*26RRX020 0 -1 3 3 4 5 4 3 6 7 5 4 3 1 -1 -2 -2 -4 -6 -7 -5 -4 -2 -1 0 1
+DST1510*27RRX020 0 0 -3 -4 -3 -3 -2 -3 -3 -2 -1 -1 -2 -3 -2 -1 -1 1 2 1 -1 -2 -2 -1 0 -2
+DST1510*28RRX020 0 3 2 0 2 1 0 -1 -1 -1 -1 1 4 9 10 9 9 8 7 9 10 12 13 13 15 6
+DST1510*29RRX020 0 14 14 14 15 15 17 18 17 12 8 4 4 4 7 9 10 11 9 8 6 3 2 1 -4 9
+DST1510*30RRX020 0 -7 -4 -1 -1 2 3 5 9 10 10 10 7 1 -2 -4 -11 -17 -15 -10 -6 -4 -7 -9 -9 -2
+DST1510*31RRX020 0 -3 -1 -1 0 0 -3 -2 2 5 7 9 7 8 2 -3 -4 -6 -7 -4 -2 -2 -4 -7 -3 -1
+DST1511*01RRX020 0 -16 -15 -13 -13 -14 -17 -25 -33 -29 -26 -34 -44 -42 -34 -33 -33 -33 -30 -28 -21 -16 -13 -11 -8 -24
+DST1511*02RRX020 0 -8 -6 1 0 -4 -6 -5 -4 -5 -5 -6 -9 -6 -4 -12 -15 -12 -11 -10 -8 -6 -3 0 9 -6
+DST1511*03RRX020 0 11 24 30 21 23 11 23 34 -21 -39 -38 -43 -55 -47 -41 -38 -35 -33 -36 -48 -44 -37 -39 -39 -19
+DST1511*04RRX020 0 -45 -46 -43 -35 -15 -28 -38 -41 -38 -41 -43 -55 -61 -56 -44 -40 -34 -27 -27 -19 -24 -30 -26 -25 -37
+DST1511*05RRX020 0 -25 -28 -24 -23 -26 -29 -28 -33 -35 -36 -36 -36 -36 -33 -33 -32 -32 -33 -36 -35 -32 -33 -35 -35 -32
+DST1511*06RRX020 0 -32 -27 -25 -26 -28 -30 -28 -26 -29 -27 -27 -27 -25 -22 -19 -15 -12 -16 -2 1 -8 -13 -17 -18 -21
+DST1511*07RRX020 0 -32 -30 -28 -45 -68 -85 -89 -96 -79 -82 -70 -58 -72 -67 -59 -60 -60 -57 -53 -48 -47 -44 -40 -36 -59
+DST1511*08RRX020 0 -33 -29 -22 -24 -29 -29 -28 -28 -27 -29 -32 -32 -41 -43 -44 -45 -44 -42 -44 -47 -47 -47 -48 -50 -37
+DST1511*09RRX020 0 -48 -47 -46 -51 -51 -48 -48 -46 -44 -50 -50 -45 -48 -51 -52 -55 -55 -50 -43 -40 -31 -32 -35 -28 -46
+DST1511*10RRX020 0 -26 -28 -31 -36 -44 -41 -38 -50 -56 -51 -42 -43 -57 -58 -55 -47 -48 -48 -45 -43 -35 -34 -32 -33 -43
+DST1511*11RRX020 0 -32 -27 -23 -23 -27 -32 -35 -35 -33 -33 -30 -32 -29 -30 -29 -30 -30 -35 -37 -36 -34 -32 -32 -33 -31
+DST1511*12RRX020 0 -30 -27 -25 -26 -25 -22 -21 -26 -29 -35 -36 -38 -36 -33 -31 -31 -27 -25 -25 -23 -24 -23 -21 -23 -28
+DST1511*13RRX020 0 -26 -24 -21 -18 -16 -15 -13 -15 -16 -16 -13 -10 -9 -6 -20 -32 -25 -24 -24 -23 -20 -19 -25 -29 -19
+DST1511*14RRX020 0 -27 -26 -24 -27 -30 -29 -29 -32 -29 -29 -30 -27 -28 -24 -26 -24 -20 -18 -18 -14 -15 -9 -7 -12 -23
+DST1511*15RRX020 0 -13 -12 -10 -11 -14 -13 -12 -14 -17 -17 -16 -12 -12 -9 -8 -6 -4 -7 -6 -4 -5 -10 -18 -20 -11
+DST1511*16RRX020 0 -24 -27 -29 -29 -30 -28 -29 -25 -26 -24 -28 -29 -31 -33 -38 -40 -38 -35 -34 -28 -27 -27 -25 -24 -30
+DST1511*17RRX020 0 -22 -18 -16 -16 -19 -19 -17 -16 -17 -17 -14 -12 -14 -15 -16 -18 -18 -20 -17 -9 -8 -5 -7 -9 -15
+DST1511*18RRX020 0 -11 -9 -6 -10 -6 -1 1 -1 -10 -22 -27 -30 -27 -22 -25 -28 -29 -24 -19 -17 -5 -13 -25 -36 -17
+DST1511*19RRX020 0 -24 -21 -26 -27 -26 -27 -24 -21 -24 -26 -27 -34 -36 -29 -23 -20 -18 -17 -15 -12 -10 -8 -9 -12 -22
+DST1511*20RRX020 0 -10 -6 -5 -6 -11 -8 -8 5 -2 -11 -12 -10 -9 -8 -6 -7 -6 -6 -1 4 8 9 7 5 -4
+DST1511*21RRX020 0 -2 -10 -15 -15 -13 -11 -8 -8 -8 -7 -7 -8 -9 -7 -5 -3 -3 -5 -8 -6 -6 -5 -3 -4 -7
+DST1511*22RRX020 0 -5 -5 -6 -7 -9 -7 -7 -7 -5 -4 -5 -6 -7 -9 -12 -10 -8 -6 -4 -2 -2 -1 -1 -1 -6
+DST1511*23RRX020 0 -1 -1 -1 0 -2 -4 -6 -7 -6 -4 -2 -3 -4 -4 -4 -4 -4 -4 -4 -4 -1 -1 0 0 -3
+DST1511*24RRX020 0 1 1 1 0 2 1 1 -1 -2 -2 -3 -3 -3 -2 -2 -1 1 0 2 4 4 2 1 1 0
+DST1511*25RRX020 0 1 2 3 4 4 4 5 6 5 4 4 6 9 10 10 9 8 9 9 9 9 10 9 10 7
+DST1511*26RRX020 0 10 9 8 10 11 12 13 12 11 9 8 8 6 6 9 7 4 -1 -5 -8 -9 -11 -12 -12 4
+DST1511*27RRX020 0 -13 -14 -12 -12 -13 -11 -7 -4 -7 -9 -5 -2 -8 -8 -7 -4 -7 -9 -7 -2 -3 -3 -3 -3 -7
+DST1511*28RRX020 0 -1 5 9 10 11 11 10 12 12 9 9 5 -7 -11 -8 -4 3 3 6 6 0 -14 -17 -16 2
+DST1511*29RRX020 0 -14 -11 -12 -11 -5 3 6 5 5 -5 -11 -7 -4 -2 -4 -7 -7 -6 -2 4 -5 -13 -20 -19 -6
+DST1511*30RRX020 0 -16 -16 -12 -8 -5 -1 8 1 -16 -25 -32 -42 -40 -38 -35 -31 -30 -27 -21 -20 -22 -22 -19 -17 -20
+DST1512*01RRX020 0 -8 -7 -9 -7 -7 -6 -4 -4 4 7 2 -11 -21 -19 -14 -13 -13 -12 -13 -19 -28 -26 -18 -16 -11
+DST1512*02RRX020 0 -19 -21 -18 -17 -15 -15 -14 -17 -12 -12 -15 -19 -17 -14 -10 -7 -7 -6 -7 -10 -15 -12 -9 -8 -13
+DST1512*03RRX020 0 -9 -12 -11 -10 -7 -7 -5 -4 -3 -3 -1 -2 0 -1 -3 -1 0 1 0 2 2 1 0 0 -3
+DST1512*04RRX020 0 2 0 1 -1 -3 -2 -1 -2 -1 -1 -1 1 1 3 4 4 4 3 4 3 2 3 3 2 1
+DST1512*05RRX020 0 0 -2 -2 1 5 5 10 11 3 -6 -1 4 4 2 -1 -3 -7 -11 -6 -7 -13 -14 -9 -5 -2
+DST1512*06RRX020 0 -3 -2 -4 -6 -10 -14 -14 -16 -18 -17 -12 -18 -20 -27 -19 -15 -12 -10 -13 -14 -20 -16 -11 -13 -14
+DST1512*07RRX020 0 -12 -10 -11 -10 -10 -11 -7 -5 -7 -8 -14 -15 -11 -5 -10 -9 -7 -9 -10 -12 -11 -9 -5 -5 -9
+DST1512*08RRX020 0 -10 -12 -12 -11 -12 -15 -16 -14 -10 -11 -12 -15 -13 -10 -9 -7 -2 -2 -4 -5 -4 -1 -1 2 -9
+DST1512*09RRX020 0 0 1 -3 -5 -4 -3 0 2 5 7 5 4 3 3 -1 -5 -4 0 2 -2 -4 0 5 10 1
+DST1512*10RRX020 0 6 0 0 -1 -7 -4 -5 -11 -10 -14 -11 -8 -8 -12 -9 -5 -6 -1 -5 -7 -1 2 2 0 -5
+DST1512*11RRX020 0 1 3 3 -1 -4 -9 -11 -14 -9 -11 -10 -10 -6 -1 -6 -6 0 -5 -5 -5 -7 -8 -9 -3 -6
+DST1512*12RRX020 0 -2 -5 -11 -14 -12 -11 -9 -9 -5 -6 -8 -8 -6 -4 -4 -7 -4 -6 -5 -6 -4 -1 0 0 -6
+DST1512*13RRX020 0 0 -2 -2 -2 -3 -1 -3 -7 -7 -3 -2 0 -2 -1 2 2 6 6 7 5 2 4 4 2 0
+DST1512*14RRX020 0 1 -2 -2 -3 1 1 1 0 -1 0 -3 -1 4 11 16 27 12 -20 -32 -46 -35 -38 -45 -35 -8
+DST1512*15RRX020 0 -30 -37 -34 -37 -31 -31 -29 -31 -30 -30 -28 -29 -25 -22 -20 -18 -18 -16 -11 -10 -16 -16 -12 -11 -24
+DST1512*16RRX020 0 -12 -25 -27 -23 -15 -14 -15 -15 -14 -14 -17 -17 -15 -15 -13 -11 -7 -8 -8 -7 -8 -8 -1 0 -13
+DST1512*17RRX020 0 -1 -3 -3 -1 4 8 11 8 8 5 0 -5 -7 -8 -10 -12 -11 -11 -11 -13 -17 -14 -7 -9 -4
+DST1512*18RRX020 0 -10 -11 -9 -7 -6 -6 -5 -3 -3 -3 -2 -3 -4 -3 -4 -3 2 1 -2 -4 -4 -6 -7 -4 -4
+DST1512*19RRX020 0 -1 -3 -7 -9 -7 -5 -5 -5 -1 -2 -2 1 3 5 2 0 16 19 39 36 32 40 43 41 10
+DST1512*20RRX020 0 31 20 10 20 6 -16 -28 -47 -61 -71 -70 -65 -48 -59 -74 -86 -85-108-118-110-120-134-155-151 -63
+DST1512*21RRX020 0-138-148-142-132-128-115-109-115-119-117-108 -93 -88 -78 -74 -73 -66 -59 -53 -53 -53 -39 -31 -25 -90
+DST1512*22RRX020 0 -26 -31 -36 -35 -32 -36 -34 -37 -34 -32 -29 -33 -40 -37 -34 -31 -27 -25 -24 -30 -32 -30 -30 -28 -32
+DST1512*23RRX020 0 -27 -27 -25 -21 -21 -20 -19 -20 -15 -16 -15 -14 -9 -9 -19 -22 -16 -16 -17 -18 -21 -16 -13 -7 -18
+DST1512*24RRX020 0 -8 -10 -10 -12 -13 -15 -12 -11 -10 -8 -4 -6 -8 0 -4 -5 -3 -3 -4 -8 -4 -3 -5 -7 -7
+DST1512*25RRX020 0 -6 -6 -6 -10 -8 -8 -8 -7 -7 -6 -4 -3 -7 -4 -1 -4 -4 3 5 3 -1 -3 0 2 -4
+DST1512*26RRX020 0 -2 -1 -2 -3 -1 2 1 -4 -3 -2 1 2 1 2 -8 -11 -8 -2 1 1 -1 -5 -7 -8 -2
+DST1512*27RRX020 0 -10 -6 -8 -11 -6 -8 -15 -21 -22 -24 -17 -19 -14 -11 -3 -1 -1 -2 0 5 9 9 10 9 -7
+DST1512*28RRX020 0 1 2 5 9 8 6 3 1 3 2 2 -1 -3 -3 -3 -2 -5 -2 2 3 3 5 8 9 2
+DST1512*29RRX020 0 9 9 7 2 1 -2 -1 1 1 -1 -1 0 5 4 5 9 10 5 1 -3 -4 0 -2 -2 2
+DST1512*30RRX020 0 0 0 1 3 6 7 7 5 5 5 5 7 9 8 9 6 5 4 3 1 0 2 2 3 4
+DST1512*31RRX020 0 8 20 20 17 10 13 12 10 7 6 4 10 -5 -31 -45 -48 -41 -36 -29 -43 -54 -67 -83 -93 -18
+DST1601*01RRX020 0-110-108 -95 -92 -88 -87 -85 -75 -73 -69 -67 -59 -51 -49 -47 -42 -39 -35 -36 -36 -32 -27 -29 -32 -61
+DST1601*02RRX020 0 -30 -23 -34 -33 -29 -25 -16 -18 -16 -17 -16 -11 -9 -13 -14 -17 -21 -20 -16 -17 -18 -15 -11 -12 -19
+DST1601*03RRX020 0 -15 -12 -12 -12 -10 -14 -16 -15 -14 -12 -10 -9 -9 -9 -5 -5 -4 -6 -4 -8 -13 -17 -18 -19 -11
+DST1601*04RRX020 0 -19 -20 -21 -21 -17 -14 -11 -11 -6 -3 -1 0 -1 -4 -5 -1 0 0 3 1 -5 -5 -6 -4 -7
+DST1601*05RRX020 0 -3 0 1 2 1 3 1 4 12 9 6 6 8 11 14 15 18 12 5 3 5 10 12 16 7
+DST1601*06RRX020 0 12 -7 -12 -12 -8 -10 -17 -20 -17 -17 -23 -25 -19 -17 -14 -9 -7 -4 -4 -6 -12 -18 -16 -11 -12
+DST1601*07RRX020 0 -11 -13 -14 -13 -7 -7 -10 -14 -13 -12 -15 -10 -10 -9 -4 -3 -4 -3 -2 -4 -8 -11 -10 -10 -9
+DST1601*08RRX020 0 -11 -13 -12 -11 -8 -9 -8 -8 -11 -13 -12 -13 -12 -14 -9 -10 -8 -7 -7 -7 -9 -7 -6 -7 -10
+DST1601*09RRX020 0 -11 -10 -7 -7 -5 -5 -5 -7 -9 -9 -7 -4 -4 -5 -8 -9 -8 -4 0 1 2 5 6 7 -4
+DST1601*10RRX020 0 2 -5 -5 -2 -1 2 2 0 -3 -4 -4 -6 -7 -4 -1 0 0 2 2 1 -3 -5 -5 0 -2
+DST1601*11RRX020 0 3 5 6 6 5 3 0 -7 -10 -11 -12 -13 -9 -6 -4 -9 -10 -16 -15 -17 -15 -14 -17 -19 -7
+DST1601*12RRX020 0 -26 -29 -24 -20 -16 -14 -20 -20 -14 -15 -14 -10 -9 -4 -1 -2 -3 -2 -4 -10 -13 -19 -11 -8 -13
+DST1601*13RRX020 0 -13 -16 -16 -18 -17 -13 -14 -13 -15 -14 -18 -19 -17 -19 -13 -10 -8 -6 -5 -8 -8 -7 -6 -5 -12
+DST1601*14RRX020 0 -5 -5 -5 -5 -2 -3 -1 -5 -4 -6 -8 -8 -12 -12 -14 -13 -14 -14 -13 -12 -14 -21 -19 -14 -10
+DST1601*15RRX020 0 -14 -17 -19 -15 -9 -6 -9 -10 -12 -13 -14 -15 -14 -13 -11 -11 -10 -5 -5 -7 -11 -12 -12 -12 -12
+DST1601*16RRX020 0 -11 -10 -6 -3 0 1 1 1 1 1 2 6 11 14 8 7 6 4 5 5 7 5 2 1 2
+DST1601*17RRX020 0 2 3 4 5 6 6 5 3 -1 3 4 2 -3 -8 -5 -3 -2 -2 -3 -4 -4 -3 -4 -1 0
+DST1601*18RRX020 0 0 -1 -2 -2 0 3 5 7 10 9 6 1 0 0 -1 -1 -3 -3 -1 -1 0 3 19 14 3
+DST1601*19RRX020 0 5 -2 -5 -9 -8 -8 -10 -10 -13 -8 -5 -5 -6 0 7 5 7 12 16 15 13 12 13 8 1
+DST1601*20RRX020 0 12 14 13 11 9 4 -3 -10 -22 -38 -53 -64 -63 -73 -84 -88 -93 -91 -82 -82 -86 -86 -81 -66 -46
+DST1601*21RRX020 0 -56 -51 -50 -38 -36 -56 -52 -47 -43 -43 -49 -49 -49 -39 -35 -37 -38 -30 -34 -34 -34 -33 -36 -31 -42
+DST1601*22RRX020 0 -30 -30 -28 -26 -30 -28 -29 -27 -26 -30 -30 -32 -31 -25 -19 -20 -22 -18 -18 -21 -27 -21 -22 -20 -25
+DST1601*23RRX020 0 -17 -15 -13 -12 -16 -20 -19 -22 -20 -15 -12 -13 -17 -20 -22 -20 -21 -20 -17 -19 -22 -20 -15 -12 -17
+DST1601*24RRX020 0 -10 -9 -11 -11 -12 -14 -13 -14 -11 -10 -9 -8 -6 -6 -7 -3 0 8 1 -6 6 5 1 -4 -6
+DST1601*25RRX020 0 -6 -6 -7 -9 -10 -10 -8 -5 -1 0 -1 0 -1 -2 -1 -2 -2 -3 -4 -5 -5 -6 -6 -6 -4
+DST1601*26RRX020 0 -4 -1 2 3 5 5 6 7 9 8 8 9 7 8 7 9 8 7 9 9 6 7 8 9 6
+DST1601*27RRX020 0 10 10 13 17 14 13 11 14 16 11 7 7 9 11 9 5 3 6 8 8 4 3 5 4 9
+DST1601*28RRX020 0 4 5 8 10 10 10 11 9 0 -8 -17 -21 -15 -7 -2 -1 -3 -6 -8 -9 -10 -10 -6 -3 -2
+DST1601*29RRX020 0 -1 0 -2 -3 -7 -7 -7 -6 -4 -3 -3 0 1 1 -1 0 0 -1 -1 -2 -3 -1 0 2 -2
+DST1601*30RRX020 0 3 5 5 5 3 3 4 3 1 0 -2 -4 -3 0 4 4 4 7 9 9 10 12 13 10 4
+DST1601*31RRX020 0 8 6 6 5 3 -1 -9 -12 -14 -16 -18 -23 -20 -13 -8 -11 -17 -21 -21 -23 -29 -34 -33 -36 -14
+DST1602*01RRX020 0 -40 -48 -50 -44 -38 -44 -47 -50 -48 -44 -35 -26 -23 -20 -19 -17 -17 -13 -11 -8 -6 -7 -7 -5 -28
+DST1602*02RRX020 0 -7 -7 -7 -7 -3 -3 -4 2 6 8 7 12 14 16 13 9 8 9 3 6 8 -5 -13 -23 2
+DST1602*03RRX020 0 -37 -50 -52 -50 -48 -46 -40 -34 -31 -27 -21 -16 -13 -10 -9 -11 -16 -17 -17 -19 -16 -14 -12 -9 -26
+DST1602*04RRX020 0 -7 -7 -7 -6 -6 -1 0 3 6 8 8 5 6 8 5 5 4 4 4 4 5 4 6 10 3
+DST1602*05RRX020 0 9 0 -3 -7 -4 -9 -11 -8 -7 -10 -8 -9 -7 -7 -6 -6 -10 -13 -15 -14 -10 -11 -8 -2 -7
+DST1602*06RRX020 0 0 1 0 -4 -9 -11 -10 -8 -6 -5 -7 -4 -2 0 -1 -4 -6 -3 0 2 4 4 6 -1 -3
+DST1602*07RRX020 0 -3 1 4 5 3 1 8 7 7 4 -3 -7 -9 -10 -11 -13 -15 -16 -19 -17 -14 -15 -17 -19 -6
+DST1602*08RRX020 0 -26 -26 -26 -27 -29 -34 -35 -40 -35 -26 -22 -24 -24 -22 -23 -23 -24 -21 -16 -12 -10 -11 -11 -11 -23
+DST1602*09RRX020 0 -7 -1 2 6 9 11 11 5 1 -9 -20 -15 -10 -8 -9 -9 -12 -11 -6 -1 0 -5 -9 -8 -4
+DST1602*10RRX020 0 -9 -10 -8 -6 -5 -7 -12 -14 -21 -23 -18 -13 -10 -9 -11 -12 -11 -9 -6 -4 -7 -12 -15 -19 -11
+DST1602*11RRX020 0 -19 -18 -16 -13 -12 -15 -20 -24 -29 -28 -25 -22 -16 -9 -14 -17 -22 -22 -16 -9 -9 -13 -26 -38 -19
+DST1602*12RRX020 0 -40 -37 -26 -23 -18 -13 -8 -8 -6 -13 -32 -38 -27 -11 -8 -8 -8 -11 -8 4 16 18 16 17 -11
+DST1602*13RRX020 0 16 13 13 23 26 18 -2 -6 0 -2 -7 -8 -4 4 8 4 -1 -1 -1 0 0 -3 -3 -4 3
+DST1602*14RRX020 0 -5 -5 -5 1 4 1 -4 -11 -16 -18 -17 -16 -15 -9 -7 -10 -13 -9 -6 -4 -4 -8 -7 -4 -8
+DST1602*15RRX020 0 -6 -6 -5 -3 -6 -7 -4 -1 0 0 1 -1 -4 -3 0 0 -1 2 5 6 5 1 -11 -18 -2
+DST1602*16RRX020 0 -27 -22 -19 -22 -20 -22 -17 -16 -6 -19 -23 -10 -19 -27 -22 -18 -29 -40 -42 -57 -48 -47 -46 -46 -28
+DST1602*17RRX020 0 -42 -44 -34 -32 -26 -28 -38 -41 -40 -31 -31 -38 -38 -27 -29 -27 -26 -26 -26 -32 -39 -49 -49 -52 -35
+DST1602*18RRX020 0 -57 -50 -46 -53 -52 -53 -54 -48 -48 -43 -45 -39 -33 -28 -26 -27 -29 -27 -33 -29 -31 -31 -24 -25 -39
+DST1602*19RRX020 0 -27 -29 -28 -26 -23 -29 -33 -33 -31 -28 -23 -21 -23 -25 -26 -29 -30 -29 -31 -27 -27 -27 -24 -22 -27
+DST1602*20RRX020 0 -25 -25 -24 -23 -22 -27 -26 -23 -22 -20 -19 -19 -19 -18 -19 -18 -19 -18 -19 -19 -17 -18 -15 -12 -20
+DST1602*21RRX020 0 -8 -9 -8 -11 -12 -14 -12 -14 -14 -14 -13 -11 -9 -8 -10 -10 -11 -12 -13 -13 -14 -11 -9 -7 -11
+DST1602*22RRX020 0 -7 -6 -4 -4 -5 -3 0 3 2 2 2 2 3 3 1 -2 0 0 0 0 0 0 0 -1 -1
+DST1602*23RRX020 0 -1 -2 -4 -3 -3 -3 -4 -2 0 0 -1 1 1 3 2 1 -2 -4 -7 -4 -5 -8 -8 -11 -3
+DST1602*24RRX020 0 -9 -9 -12 -10 -9 -12 -16 -14 -13 -15 -11 -11 -12 -10 -5 -4 -5 -4 -3 -3 -6 -7 -6 -6 -9
+DST1602*25RRX020 0 -3 0 2 4 6 6 1 1 1 2 3 5 3 2 4 5 4 6 3 7 14 18 13 3 5
+DST1602*26RRX020 0 -2 -5 -7 -4 -3 -10 -8 -5 -3 -1 -1 0 -3 -1 0 1 -1 0 -1 0 2 3 8 11 -1
+DST1602*27RRX020 0 12 12 12 10 4 -2 -7 -6 -3 -1 -2 -5 -3 1 5 5 4 5 6 5 6 7 10 11 4
+DST1602*28RRX020 0 10 6 4 5 7 9 9 7 9 10 12 11 7 2 0 3 4 5 5 5 5 3 -2 -4 6
+DST1602*29RRX020 0 -3 -1 0 1 4 5 5 7 5 2 2 4 4 7 12 15 16 18 21 25 28 24 15 5 9
+DST1603*01RRX020 0 1 7 10 12 7 2 -1 2 12 16 12 12 9 10 11 12 8 8 9 11 10 8 6 -5 8
+DST1603*02RRX020 0 -6 0 5 5 0 1 2 4 8 11 12 8 9 7 2 -1 2 5 5 6 6 6 3 4 4
+DST1603*03RRX020 0 4 4 5 3 3 0 0 0 -1 -1 -4 0 1 -2 -4 -1 -1 2 2 3 1 -1 1 1 1
+DST1603*04RRX020 0 -2 -5 -8 -7 -7 -6 -4 -4 -4 -3 -2 -1 0 -1 -2 -4 -5 -4 -2 2 3 2 2 1 -3
+DST1603*05RRX020 0 2 5 9 9 7 6 5 1 -2 -3 -4 1 3 6 5 3 3 2 2 2 1 4 6 7 3
+DST1603*06RRX020 0 11 17 23 24 22 21 20 23 21 26 28 27 25 24 26 24 4 -31 -40 -66 -90 -98 -94 -86 -6
+DST1603*07RRX020 0 -83 -69 -69 -73 -76 -76 -69 -71 -71 -68 -62 -59 -48 -41 -42 -46 -51 -47 -48 -44 -45 -47 -48 -46 -58
+DST1603*08RRX020 0 -49 -48 -44 -40 -38 -37 -39 -33 -30 -27 -23 -21 -22 -26 -30 -32 -31 -29 -26 -24 -27 -26 -24 -23 -31
+DST1603*09RRX020 0 -24 -20 -14 -15 -21 -21 -22 -22 -22 -19 -17 -19 -20 -22 -25 -25 -26 -25 -22 -19 -24 -29 -33 -34 -23
+DST1603*10RRX020 0 -31 -21 -19 -22 -23 -25 -22 -25 -26 -28 -29 -28 -24 -20 -19 -16 -18 -20 -19 -18 -19 -20 -15 -16 -22
+DST1603*11RRX020 0 -15 -12 -10 -12 -12 -13 -7 -14 -15 -13 1 20 23 6 -5 1 6 4 5 5 -17 -15 -13 -12 -5
+DST1603*12RRX020 0 -13 -6 -4 -8 -9 -9 -11 -10 -9 -9 -8 -8 -7 -6 -8 -7 -10 -15 -20 -22 -18 -18 -18 -16 -11
+DST1603*13RRX020 0 -12 -7 -5 -5 -5 -5 -6 -4 -2 -2 -3 -6 -7 -7 -6 -5 -6 -6 -5 -2 -4 -5 -7 -8 -5
+DST1603*14RRX020 0 -10 -9 -7 -6 -8 -9 -9 -9 -9 -7 -4 -3 -2 -3 3 5 5 19 45 37 7 -4 -13 -21 -1
+DST1603*15RRX020 0 -30 -22 -19 -29 -36 -38 -42 -50 -43 -32 -31 -30 -27 -26 -23 -16 -16 -17 -20 -30 -31 -30 -40 -46 -30
+DST1603*16RRX020 0 -40 -39 -34 -28 -27 -30 -30 -34 -26 -16 -21 -29 -27 -24 -20 -17 -18 -16 -17 -22 -36 -47 -49 -56 -29
+DST1603*17RRX020 0 -52 -45 -46 -51 -50 -44 -34 -30 -24 -28 -32 -37 -36 -29 -24 -24 -26 -26 -24 -24 -25 -28 -30 -29 -33
+DST1603*18RRX020 0 -27 -27 -27 -25 -22 -17 -13 -15 -14 -22 -21 -16 -18 -22 -24 -25 -23 -21 -24 -28 -29 -28 -26 -28 -23
+DST1603*19RRX020 0 -27 -24 -20 -19 -23 -23 -24 -37 -44 -44 -44 -39 -31 -32 -34 -33 -32 -28 -25 -25 -29 -25 -23 -22 -29
+DST1603*20RRX020 0 -21 -22 -22 -23 -21 -21 -23 -22 -19 -15 -17 -18 -19 -15 -14 -18 -29 -38 -34 -38 -40 -43 -40 -37 -25
+DST1603*21RRX020 0 -34 -29 -23 -20 -20 -17 -16 -17 -12 -14 -17 -14 -11 -4 0 -2 -9 -9 -4 -3 -3 -7 -11 -13 -13
+DST1603*22RRX020 0 -12 -10 -4 -2 -1 1 1 0 1 1 3 1 -5 -4 -4 -5 -8 -7 -8 -7 -6 -8 -5 -2 -4
+DST1603*23RRX020 0 -6 -1 2 5 2 -9 -14 -13 -7 -2 -8 -10 -11 -11 -8 -4 -3 2 4 3 3 -5 -7 -9 -4
+DST1603*24RRX020 0 -13 -16 -12 -8 -6 -3 0 0 4 5 5 4 3 5 3 4 1 -2 -3 0 2 2 -2 -6 -1
+DST1603*25RRX020 0 -12 -19 -23 -19 -16 -13 -11 -9 -4 -3 -2 -4 -6 -7 -6 -5 -4 -4 -5 -4 -3 -3 -3 -3 -8
+DST1603*26RRX020 0 -3 -4 -2 0 0 -1 1 2 5 7 7 6 6 7 8 12 13 12 13 11 11 14 15 17 7
+DST1603*27RRX020 0 12 10 11 11 14 12 8 15 11 -4 1 5 2 4 5 6 6 -7 -2 -1 2 1 -2 -3 5
+DST1603*28RRX020 0 2 8 9 2 -9 -12 -8 -5 -3 -4 -3 -4 -3 -3 0 5 6 5 2 0 -1 -5 -1 0 -1
+DST1603*29RRX020 0 -4 -11 -15 -15 -12 -7 -10 -11 -7 -9 -8 -11 -14 -15 -8 -5 -11 -13 -9 -7 -8 -9 -13 -13 -10
+DST1603*30RRX020 0 -10 -10 -12 -6 -3 -1 -2 -3 0 1 -2 -10 -19 -19 -15 -11 -15 -15 -16 -16 -12 -10 -8 -8 -9
+DST1603*31RRX020 0 -13 -14 -11 -7 -5 -6 -6 -9 -6 -6 -8 -9 -8 -9 -6 -3 -2 -4 -3 -4 -3 -4 -8 -8 -7
+DST1604*01RRX020 0 -7 -7 -5 -2 -1 -1 -1 1 4 5 3 1 2 0 0 0 -1 0 0 0 2 6 9 9 1
+DST1604*02RRX020 0 6 3 0 0 1 1 0 2 4 5 5 6 13 26 35 13 3 -16 -30 -30 -38 -42 -55 -56 -6
+DST1604*03RRX020 0 -50 -47 -45 -39 -34 -38 -36 -38 -27 -21 -25 -24 -20 -16 -15 -15 -17 -21 -26 -32 -36 -35 -28 -27 -30
+DST1604*04RRX020 0 -22 -22 -24 -23 -18 -18 -22 -21 -19 -16 -16 -13 -11 -13 -15 -16 -15 -12 -9 -10 -16 -19 -15 -13 -17
+DST1604*05RRX020 0 -12 -12 -13 -12 -11 -13 -12 -10 -7 -5 -9 -11 -10 -8 -10 -11 -13 -14 -14 -17 -14 -15 -11 -10 -11
+DST1604*06RRX020 0 -7 -8 -7 -8 -10 -8 -5 -6 -5 -9 -11 -7 -1 -3 -6 -8 -8 -11 -13 -15 -18 -20 -21 -20 -10
+DST1604*07RRX020 0 -14 -11 -9 -1 1 3 5 6 2 4 8 12 17 18 17 17 16 16 4 -25 -53 -60 -56 -58 -6
+DST1604*08RRX020 0 -60 -56 -44 -38 -30 -34 -29 -22 -18 -19 -18 -17 -15 -11 -12 -13 -14 -16 -16 -17 -17 -18 -19 -19 -24
+DST1604*09RRX020 0 -18 -15 -13 -9 -6 -4 -4 -5 -4 -2 -1 -2 -2 -3 -4 -3 -3 -4 -3 -2 1 1 0 -2 -4
+DST1604*10RRX020 0 -2 -3 -3 -2 -3 -3 -9 -11 -10 -2 6 13 16 14 6 6 8 8 5 0 0 -1 -8 -7 1
+DST1604*11RRX020 0 -5 -3 -3 -2 -1 0 5 11 11 10 4 5 7 7 7 5 3 9 5 1 0 5 2 -3 3
+DST1604*12RRX020 0 -1 -4 -10 -13 -6 -4 1 3 3 4 -2 -5 -8 -13 -10 -7 -4 -7 -10 -6 -8 -18 -32 -41 -8
+DST1604*13RRX020 0 -45 -54 -54 -50 -54 -55 -50 -42 -39 -29 -25 -26 -29 -28 -31 -34 -34 -30 -29 -39 -34 -30 -28 -33 -38
+DST1604*14RRX020 0 -32 -34 -31 -27 -28 -28 -26 -19 -12 -15 -26 -36 -30 -33 -42 -46 -46 -48 -48 -55 -59 -56 -48 -42 -36
+DST1604*15RRX020 0 -40 -43 -35 -29 -28 -26 -22 -21 -19 -15 -16 -13 -9 -3 2 4 3 0 -1 3 2 -3 -4 -4 -13
+DST1604*16RRX020 0 -3 -5 -7 -9 -9 -8 -8 -9 -14 -18 -17 -14 -6 -3 -6 -10 -13 -13 -22 -35 -53 -55 -52 -43 -18
+DST1604*17RRX020 0 -37 -32 -17 -21 -28 -28 -29 -27 -25 -23 -25 -24 -18 -8 -11 -15 -16 -14 -14 -8 -11 -13 -4 1 -19
+DST1604*18RRX020 0 4 0 -10 -10 -8 -7 -8 -3 2 1 -3 -6 -7 -6 -6 -6 -6 -7 -9 -12 -12 -11 -10 -8 -6
+DST1604*19RRX020 0 -7 -7 -7 -9 -11 -10 -9 -5 -2 1 -1 -3 -4 -3 -1 1 1 2 3 3 2 0 2 4 -3
+DST1604*20RRX020 0 4 5 3 2 1 -1 0 -3 -7 -10 -9 -6 -5 -3 -4 -7 -6 -5 -5 -6 -8 -7 -4 -2 -3
+DST1604*21RRX020 0 -1 -2 -2 -3 -2 1 7 10 14 17 7 6 9 10 13 12 14 12 8 6 4 6 9 8 7
+DST1604*22RRX020 0 8 1 -1 0 1 3 2 7 11 13 12 14 22 22 9 8 3 5 3 1 -2 -12 -11 -9 5
+DST1604*23RRX020 0 -9 -10 -8 -11 -9 -2 5 7 10 11 11 6 6 2 1 8 12 16 14 1 -2 -12 -12 -7 1
+DST1604*24RRX020 0 -2 1 2 -2 -4 -5 -6 -2 2 4 4 0 2 3 -4 -6 -13 -10 -6 -12 -11 -12 -9 -6 -4
+DST1604*25RRX020 0 -5 -4 -1 0 -1 -3 -3 -2 -2 0 -1 1 4 7 4 0 1 3 2 1 -2 -4 -4 -4 -1
+DST1604*26RRX020 0 -4 -3 -1 -2 -2 -1 2 4 6 4 1 -2 3 3 1 4 5 5 4 3 -5 -11 -4 1 0
+DST1604*27RRX020 0 4 5 6 2 -2 -2 -3 -4 -2 1 2 0 0 3 1 1 2 5 6 0 -8 -15 -15 -9 -1
+DST1604*28RRX020 0 -3 -2 -1 0 3 3 1 0 -2 -5 -4 -5 -1 1 4 5 6 6 3 -1 -2 -1 0 -1 0
+DST1604*29RRX020 0 -1 -2 0 3 5 4 6 8 9 8 7 8 10 11 13 14 14 15 18 19 17 13 11 10 9
+DST1604*30RRX020 0 11 13 15 17 18 20 21 25 19 15 12 7 6 5 6 6 5 3 -3 -9 -11 -10 -12 -7 7
+DST1605*01RRX020 0 9 11 9 7 7 5 10 6 8 12 14 14 13 8 3 -1 -5 -3 -7 -22 -28 -19 -14 -22 1
+DST1605*02RRX020 0 -24 -21 -25 -33 -23 -22 -24 -22 -22 -22 -19 -15 -11 -10 -10 -6 -14 -25 -27 -22 -23 -24 -21 -27 -21
+DST1605*03RRX020 0 -25 -26 -29 -29 -26 -23 -25 -25 -20 -12 -10 -9 -7 -6 -4 -5 -9 -8 -6 -5 -5 -4 -4 -4 -14
+DST1605*04RRX020 0 -4 -4 -5 -7 -7 -6 -5 -4 -3 -3 -4 -3 -3 -5 -8 -8 -7 -7 -6 -5 -5 -6 -6 -2 -5
+DST1605*05RRX020 0 2 6 9 10 6 4 3 2 2 -4 -10 -9 -4 -4 -6 -7 -4 -6 -2 1 1 1 1 1 0
+DST1605*06RRX020 0 -1 2 2 4 4 2 1 -2 -2 -2 -1 -3 6 2 -3 -3 -3 -6 -18 -22 -23 -20 -22 -19 -5
+DST1605*07RRX020 0 -21 -18 -11 -7 -4 -6 -3 -3 -5 -5 -3 -3 -7 -3 -5 -4 -10 -9 -5 0 0 -2 0 6 -5
+DST1605*08RRX020 0 8 9 -13 -29 -41 -50 -57 -82 -83 -70 -67 -70 -62 -46 -33 -45 -67 -63 -61 -68 -75 -74 -62 -64 -53
+DST1605*09RRX020 0 -77 -63 -52 -52 -53 -47 -42 -40 -41 -42 -39 -37 -32 -27 -26 -27 -30 -30 -32 -32 -39 -45 -44 -37 -41
+DST1605*10RRX020 0 -32 -31 -29 -28 -28 -27 -34 -36 -34 -33 -27 -26 -23 -25 -27 -27 -23 -19 -18 -18 -20 -20 -21 -22 -26
+DST1605*11RRX020 0 -24 -23 -24 -22 -18 -16 -15 -14 -13 -12 -13 -16 -17 -16 -24 -17 -18 -18 -19 -19 -18 -16 -17 -20 -18
+DST1605*12RRX020 0 -18 -17 -18 -16 -13 -12 -12 -13 -13 -12 -9 -11 -14 -17 -17 -13 -12 -12 -11 -11 -9 -8 -10 -12 -13
+DST1605*13RRX020 0 -13 -14 -16 -15 -11 -9 -8 -13 -12 -11 -12 -12 -14 -14 -16 -16 -18 -21 -24 -23 -23 -18 -15 -11 -15
+DST1605*14RRX020 0 -15 -18 -21 -22 -21 -21 -18 -8 -1 -7 -5 3 4 0 1 1 1 -2 -8 -6 -5 -6 -3 -16 -8
+DST1605*15RRX020 0 -23 -21 -18 -14 -11 -10 -12 -10 -4 1 7 12 9 -2 -12 -12 -7 -7 -12 -17 -12 -9 -8 -7 -8
+DST1605*16RRX020 0 -6 -5 -11 -13 -9 -11 -8 -11 -6 -3 -6 -6 -8 -12 -11 -11 -15 -23 -19 -16 -12 -11 -13 -14 -11
+DST1605*17RRX020 0 -15 -12 -7 -4 1 5 3 -1 0 1 -3 2 1 2 1 2 1 -4 -7 -8 -11 -17 -16 -13 -4
+DST1605*18RRX020 0 -9 -6 -8 -9 -11 -17 -17 -13 -15 -12 -5 -2 -1 1 6 5 2 0 -1 -1 0 0 0 0 -5
+DST1605*19RRX020 0 -1 2 3 3 5 5 3 5 2 -3 -4 -6 -9 -7 -5 -3 2 -3 -8 -8 -5 -3 0 4 -1
+DST1605*20RRX020 0 8 1 1 1 3 4 1 2 3 3 4 6 6 9 5 4 3 1 1 8 11 11 13 14 5
+DST1605*21RRX020 0 16 21 20 14 10 12 -1 -14 -21 -19 -12 -8 -6 -6 -6 -10 -9 -6 -12 -11 -14 -14 -13 -9 -4
+DST1605*22RRX020 0 -5 -4 -6 -9 -16 -15 -14 -10 -16 -12 -10 -7 -7 -5 0 2 -2 -6 -8 -10 -8 -7 -8 -7 -8
+DST1605*23RRX020 0 -6 -6 -5 -5 -2 -2 -2 -1 -2 -3 -1 0 -1 0 1 2 0 -1 -2 -3 -4 -2 -2 -1 -2
+DST1605*24RRX020 0 0 3 5 4 5 3 4 6 4 2 -1 -4 -4 -3 -1 1 1 1 2 4 2 0 1 2 2
+DST1605*25RRX020 0 5 6 5 6 6 5 4 4 2 3 4 6 9 13 15 11 9 9 9 9 7 6 5 6 7
+DST1605*26RRX020 0 4 5 8 10 10 10 11 10 12 14 11 11 12 13 14 13 15 17 18 18 16 16 19 21 13
+DST1605*27RRX020 0 22 21 18 15 3 -6 -4 2 5 9 10 5 0 -2 -1 -2 -4 -7 -2 5 9 11 5 9 5
+DST1605*28RRX020 0 3 0 1 3 1 -2 -12 -16 -2 -1 0 -2 -2 -3 -4 -1 -3 -8 -9 -11 -13 -17 -15 -11 -5
+DST1605*29RRX020 0 -13 -12 -6 -5 -3 -2 0 3 -2 -8 -5 -3 -2 -3 -1 1 0 -2 -8 -12 -16 -20 -21 -16 -7
+DST1605*30RRX020 0 -16 -16 -15 -14 -12 -11 -12 -8 -11 -13 -10 -7 -4 -2 2 4 3 3 3 0 -4 -6 -7 -6 -7
+DST1605*31RRX020 0 -3 1 -1 -1 -1 -2 -1 -3 -6 -3 -2 4 6 9 8 2 -3 -3 -5 -1 -3 -12 -16 -13 -2
+DST1606*01RRX020 0 -18 -16 -15 -19 -20 -19 -14 -12 -9 -8 -8 -8 -11 -12 -13 -9 -8 -9 -8 -7 -10 -7 -3 -4 -11
+DST1606*02RRX020 0 -4 -6 -6 -6 -7 -10 -9 -6 -7 -8 -8 -10 -12 -12 -12 -11 -10 -8 -7 -6 -6 -4 -3 -4 -8
+DST1606*03RRX020 0 -6 -4 -2 -2 -4 -4 -3 -2 0 0 0 2 2 1 -1 0 1 0 -1 -2 -1 -1 -2 -1 -1
+DST1606*04RRX020 0 -2 -4 -4 -2 -1 2 1 1 2 4 5 8 10 13 12 10 8 7 7 6 3 6 7 13 5
+DST1606*05RRX020 0 16 14 14 11 12 16 20 30 32 13 6 9 10 19 5 -11 -14 -8 -5 -6 -23 -31 -23 -28 3
+DST1606*06RRX020 0 -26 -30 -38 -38 -37 -41 -44 -46 -45 -39 -38 -32 -33 -31 -29 -29 -30 -31 -31 -26 -21 -15 -15 -14 -32
+DST1606*07RRX020 0 -14 -18 -19 -16 -14 -13 -13 -13 -12 -13 -12 -15 -15 -15 -17 -13 -12 -9 -10 -11 -12 -17 -19 -22 -14
+DST1606*08RRX020 0 -24 -25 -25 -31 -31 -27 -22 -16 -14 -15 -15 -15 -16 -16 -15 -15 -14 -11 -10 -11 -12 -10 -9 -14 -17
+DST1606*09RRX020 0 -16 -17 -17 -18 -15 -14 -13 -11 -10 -10 -9 -10 -12 -12 -13 -12 -11 -11 -10 -11 -7 -6 -6 -5 -12
+DST1606*10RRX020 0 -6 -4 -7 -5 -6 -5 -4 -3 -6 -3 3 9 16 19 14 12 15 16 15 17 16 8 10 7 5
+DST1606*11RRX020 0 3 -9 -10 -7 -8 -9 -13 -13 -14 -13 -10 -12 -11 -8 -6 -4 -10 -8 -1 0 3 0 -2 -1 -7
+DST1606*12RRX020 0 3 4 1 -1 -1 0 -7 -11 -3 4 4 6 8 7 2 3 4 8 4 7 6 3 -2 -3 2
+DST1606*13RRX020 0 -3 1 -1 -1 -1 -1 -2 -1 -2 -5 -4 2 3 5 3 2 2 1 -1 -2 -5 -3 -1 1 -1
+DST1606*14RRX020 0 -1 -5 -11 -4 -3 -2 -1 0 3 1 2 5 12 13 12 9 14 20 19 6 -2 -15 -18 -9 2
+DST1606*15RRX020 0 -8 -17 -22 -15 -15 -14 -15 -14 -14 -14 -13 -8 -3 1 3 5 1 -2 -3 -1 -2 -4 -5 -8 -8
+DST1606*16RRX020 0 -6 -4 -4 -2 -1 -1 -5 -7 -6 -7 -6 -4 0 1 -3 -6 -5 -6 -6 -6 -4 1 3 0 -4
+DST1606*17RRX020 0 -2 0 1 0 -1 -7 -15 -10 -9 -14 -15 -12 -5 -3 -2 -3 -5 -7 -9 -8 -7 -4 -3 -3 -6
+DST1606*18RRX020 0 -8 -8 -5 -10 -17 -14 -10 -10 -8 -8 -10 -10 -7 -6 -7 -10 -7 -4 -2 -2 -4 -2 -2 -5 -7
+DST1606*19RRX020 0 -9 -11 -10 -7 -7 -11 -11 -8 -7 -7 -4 -6 -7 -5 -2 0 1 0 -3 -4 -4 -3 -1 2 -5
+DST1606*20RRX020 0 5 7 7 4 4 3 1 -1 -1 -2 0 0 1 1 1 2 2 3 3 3 4 0 -2 -4 2
+DST1606*21RRX020 0 -4 -4 -3 -1 1 1 1 -1 -3 -1 0 -1 -2 -3 0 0 1 3 4 4 5 3 2 2 0
+DST1606*22RRX020 0 1 0 -2 -1 2 7 5 5 7 11 14 13 13 12 11 12 12 11 7 -2 4 -11 -7 -11 5
+DST1606*23RRX020 0 -7 -8 -3 -6 -5 2 7 12 9 8 10 9 8 5 3 5 3 -2 -3 -1 0 2 0 -7 2
+DST1606*24RRX020 0 -19 -26 -30 -28 -17 -18 -26 -26 -20 -18 -15 -8 -8 -11 -13 -14 -15 -19 -20 -20 -18 -19 -21 -20 -19
+DST1606*25RRX020 0 -19 -20 -22 -19 -20 -21 -21 -18 -14 -14 -14 -13 -10 -7 -10 -10 -10 -8 -6 -4 2 1 -4 -8 -12
+DST1606*26RRX020 0 -5 -5 -5 -2 -1 2 -1 0 1 -3 -5 -4 1 0 -3 -3 -3 -1 -2 1 -1 -8 -14 -20 -3
+DST1606*27RRX020 0 -25 -21 -18 -18 -17 -14 -15 -18 -12 -13 -10 -7 -7 -10 -9 -6 -5 -5 -5 -2 -3 -3 -8 -9 -11
+DST1606*28RRX020 0 -7 -8 -8 -6 -8 -8 -11 -11 -11 -10 -5 -5 -4 -2 -3 -3 -5 -5 -2 1 1 2 1 -4 -5
+DST1606*29RRX020 0 -6 -5 -5 -5 -5 -4 -2 -3 -5 -5 0 4 5 3 -1 -5 -6 -6 -6 -5 -3 1 1 -3 -3
+DST1606*30RRX020 0 -5 -4 -3 -4 -2 -1 1 3 4 2 6 9 10 10 8 9 8 13 14 6 -2 -4 -4 -5 3
+DST1607*01RRX020 0 2 0 -1 1 0 -1 3 3 0 -2 -1 -2 -2 -2 1 -2 -3 -4 -5 -3 0 3 3 4 0
+DST1607*02RRX020 0 2 2 2 -1 -7 -8 -6 -4 0 0 1 0 0 4 7 12 13 13 19 25 32 32 31 18 8
+DST1607*03RRX020 0 17 18 13 7 4 4 2 2 6 4 4 6 8 14 17 12 7 3 3 2 7 10 9 8 8
+DST1607*04RRX020 0 5 6 1 2 2 3 0 -1 -1 -2 -2 -1 1 1 2 2 0 -2 -2 4 6 8 8 7 2
+DST1607*05RRX020 0 6 5 1 -2 -3 -1 2 0 1 2 2 1 1 1 1 3 2 3 4 3 4 3 2 1 2
+DST1607*06RRX020 0 -3 -2 0 2 5 6 9 12 14 12 11 13 15 17 18 18 15 14 16 14 17 20 21 20 12
+DST1607*07RRX020 0 16 20 15 18 11 8 -1 -11 -2 0 2 0 0 0 4 6 1 -1 2 1 -3 1 -9 -17 3
+DST1607*08RRX020 0 -17 -21 -20 -12 -7 -7 -11 -12 -17 -19 -16 -23 -22 -17 -19 -22 -19 -23 -28 -21 -11 -6 -1 1 -15
+DST1607*09RRX020 0 -3 -12 -22 -21 -17 -10 -8 -9 -10 -5 -3 -2 -1 -1 -4 -8 -9 -8 -8 -4 -3 -2 -3 -5 -7
+DST1607*10RRX020 0 -5 -5 -9 -10 -8 -6 -5 -2 -1 -4 -5 -6 -5 -2 3 4 0 -4 -4 -3 0 2 2 -3 -3
+DST1607*11RRX020 0 -13 -17 -14 -14 -16 -12 -10 -9 -5 -4 -7 -12 -16 -11 -6 -5 -8 -9 -12 -8 -3 -1 -2 -1 -9
+DST1607*12RRX020 0 -7 -13 -18 -19 -23 -25 -22 -21 -26 -32 -29 -23 -19 -15 -8 -7 -5 -9 -10 -9 -6 -5 -8 -14 -16
+DST1607*13RRX020 0 -16 -19 -18 -16 -16 -12 -10 -11 -8 -9 -6 -4 -6 -4 -5 -4 -3 -3 -1 -2 -1 1 4 -1 -7
+DST1607*14RRX020 0 -5 -7 -3 -4 -3 -2 -6 -9 -9 -16 -14 -5 -1 1 -3 -4 -9 -7 -7 -2 5 9 7 1 -4
+DST1607*15RRX020 0 -6 -7 -4 -8 -16 -14 -14 -16 -16 -15 -17 -10 -7 -5 -5 -3 -6 -10 -10 -9 -4 -2 -4 -7 -9
+DST1607*16RRX020 0 -11 -12 -11 -8 -7 -4 -6 -6 0 2 4 3 -1 -3 -5 -6 -8 -7 -11 -8 -2 1 -1 -2 -5
+DST1607*17RRX020 0 -5 -4 -5 -6 -5 -6 -5 -7 -7 -7 -4 -4 -5 -2 -1 -5 -6 -5 -2 1 4 0 -2 -2 -4
+DST1607*18RRX020 0 -5 -6 -3 -1 4 4 1 -4 -8 -8 -7 -5 -3 -5 -4 -4 -3 -2 0 3 3 2 1 1 -2
+DST1607*19RRX020 0 2 2 3 2 1 -1 0 0 2 2 4 5 6 10 10 9 7 3 4 5 9 12 10 15 5
+DST1607*20RRX020 0 49 31 17 1 -16 -20 -23 -22 -14 -10 -3 3 11 13 14 7 2 -4 -10 -10 -4 -4 -4 -5 0
+DST1607*21RRX020 0 -7 -4 -6 -5 -3 -2 -5 -7 -5 -7 -9 -7 -6 -3 -5 0 1 -4 -7 -7 -3 -1 0 -2 -4
+DST1607*22RRX020 0 -4 -2 0 1 0 -5 -11 -9 -9 -12 -16 -14 -11 -10 -6 -9 -5 -11 -17 -14 -6 -3 -5 -7 -8
+DST1607*23RRX020 0 -8 -7 -8 -8 -9 -9 -11 -17 -18 -19 -15 -12 -9 -7 -5 -4 -5 -8 -9 -7 -8 -8 -8 -6 -9
+DST1607*24RRX020 0 -5 -5 -6 -4 -1 -1 1 1 8 12 16 11 11 17 18 21 12 -1 -8 -11 -6 -5 -3 -10 3
+DST1607*25RRX020 0 -8 -16 -14 -22 -26 -28 -28 -30 -31 -28 -33 -33 -34 -34 -31 -29 -27 -33 -29 -25 -20 -13 -6 -9 -24
+DST1607*26RRX020 0 -11 -10 -9 -10 -9 -7 -5 -3 -1 -1 -1 -4 -5 -5 -6 -6 -7 -7 -9 -10 -12 -12 -9 -6 -7
+DST1607*27RRX020 0 -7 -6 -7 -6 -6 -5 -3 0 2 4 4 6 7 9 11 11 11 11 11 12 13 14 13 11 5
+DST1607*28RRX020 0 15 16 15 13 7 9 10 5 -8 -7 -4 -2 -1 -4 6 10 10 -3 -23 -30 -25 -12 -10 -10 -1
+DST1607*29RRX020 0 -11 -10 -9 -10 -13 -14 -9 -10 -11 -11 -10 -6 -6 -2 1 1 -8 -10 -14 -14 -12 -9 -5 -6 -9
+DST1607*30RRX020 0 -12 -12 -8 -7 -12 -12 -11 -9 -5 -5 -8 -7 -4 0 2 2 2 -3 -5 -8 -5 -1 2 3 -5
+DST1607*31RRX020 0 5 4 4 5 3 4 2 2 4 4 4 7 7 7 4 1 -1 -5 -6 -5 1 5 5 3 3
+DST1608*01RRX020 0 0 0 -1 0 -1 -1 0 1 1 -1 -3 -1 -1 -2 2 4 6 6 8 6 5 3 2 3 2
+DST1608*02RRX020 0 7 7 8 8 8 20 17 15 16 22 29 34 40 43 48 39 41 31 30 34 36 22 -6 -14 22
+DST1608*03RRX020 0 -12 1 13 10 4 -16 -42 -36 -25 -37 -51 -51 -37 -44 -50 -51 -47 -46 -37 -32 -30 -28 -27 -26 -29
+DST1608*04RRX020 0 -22 -20 -21 -22 -22 -21 -15 -19 -21 -26 -21 -16 -14 -14 -24 -30 -27 -25 -26 -22 -19 -16 -14 -15 -21
+DST1608*05RRX020 0 -13 -12 -13 -9 -15 -22 -25 -25 -28 -25 -24 -21 -17 -16 -18 -19 -18 -15 -12 -13 -15 -22 -27 -24 -19
+DST1608*06RRX020 0 -19 -20 -20 -18 -18 -18 -18 -19 -22 -20 -21 -23 -19 -19 -19 -20 -23 -17 -10 -7 -8 -11 -20 -17 -18
+DST1608*07RRX020 0 -15 -17 -16 -16 -14 -16 -15 -15 -13 -11 -12 -8 -8 -14 -10 -15 -14 -6 -2 -4 -6 -5 -14 -19 -12
+DST1608*08RRX020 0 -17 -17 -22 -25 -27 -27 -24 -22 -18 -13 -9 -4 0 0 -5 -12 -22 -19 -17 -9 -4 -5 -9 -10 -14
+DST1608*09RRX020 0 -7 -5 -6 -5 -8 -9 -9 -7 -7 -12 -15 -14 -7 -11 -16 -20 -19 -19 -15 -9 -7 -11 -20 -23 -12
+DST1608*10RRX020 0 -21 -16 -16 -13 -10 -13 -16 -18 -22 -29 -22 -18 -12 -12 -14 -15 -13 -15 -16 -15 -18 -24 -21 -21 -17
+DST1608*11RRX020 0 -16 -10 -7 -5 -4 -6 -5 -4 -1 -2 -5 -5 -6 -4 -2 -1 -4 -11 -16 -15 -16 -12 -15 -13 -8
+DST1608*12RRX020 0 -10 -14 -21 -22 -27 -27 -18 -18 -19 -18 -16 -15 -14 -15 -16 -15 -14 -12 -12 -9 -11 -13 -13 -12 -16
+DST1608*13RRX020 0 -10 -11 -13 -13 -12 -14 -13 -10 -11 -11 -10 -10 -10 -7 -8 -11 -14 -15 -14 -11 -13 -15 -16 -14 -12
+DST1608*14RRX020 0 -9 -4 0 -1 -1 -2 0 -2 -2 0 0 0 -1 -2 -4 -2 -2 -2 -4 -6 -3 -2 -4 -4 -2
+DST1608*15RRX020 0 -4 -4 -5 -4 -3 -5 -6 -4 -3 -5 -4 -3 -2 -1 -1 0 -1 -2 -2 0 1 2 1 1 -2
+DST1608*16RRX020 0 2 1 2 1 -1 -4 -6 -5 -5 -4 -2 -2 0 -5 -5 -5 0 6 10 14 17 13 1 -8 1
+DST1608*17RRX020 0 0 11 11 6 2 -1 -4 -4 -3 -2 -4 -4 -5 -5 -2 -3 -2 0 1 -5 -7 -10 -16 -15 -3
+DST1608*18RRX020 0 -12 -11 -10 -14 -21 -20 -22 -24 -24 -22 -16 -11 -9 -7 -11 -13 -8 -5 -3 -7 -10 -14 -12 -10 -13
+DST1608*19RRX020 0 -6 -6 -6 -2 1 1 1 0 -6 -9 -10 -7 -6 -5 -6 -9 -9 -5 -4 -4 -6 -8 -9 -10 -5
+DST1608*20RRX020 0 -11 -11 -13 -11 -7 -5 -6 -8 -10 -5 0 2 2 0 1 2 4 6 8 8 5 3 2 1 -2
+DST1608*21RRX020 0 1 1 2 7 9 14 17 18 19 17 21 24 23 24 21 11 17 16 13 14 11 5 -1 -3 13
+DST1608*22RRX020 0 -2 -4 -5 -4 -1 1 2 0 0 0 0 4 5 5 3 1 -1 -3 -3 0 -1 -3 -6 -9 -1
+DST1608*23RRX020 0 -11 -9 -7 -5 -2 1 4 8 8 10 10 15 2 -13 -24 -30 -27 -28 -30 -44 -63 -74 -65 -48 -18
+DST1608*24RRX020 0 -36 -41 -38 -37 -33 -34 -35 -29 -26 -23 -28 -34 -39 -33 -29 -27 -25 -28 -27 -28 -31 -30 -28 -23 -31
+DST1608*25RRX020 0 -18 -17 -20 -21 -19 -19 -12 -12 -19 -22 -19 -18 -16 -14 -20 -19 -18 -18 -12 -16 -14 -13 -16 -15 -17
+DST1608*26RRX020 0 -23 -20 -23 -20 -16 -13 -8 -3 -2 -3 -3 -5 -7 -9 -10 -13 -15 -14 -14 -12 -8 -6 -5 -6 -11
+DST1608*27RRX020 0 -9 -9 -8 -11 -13 -12 -7 -5 -5 -6 -6 -10 -9 -8 -9 -7 -4 -2 -4 -4 -4 -2 0 -1 -6
+DST1608*28RRX020 0 -1 -1 -2 -1 -2 -3 -3 -2 -3 -3 -4 -8 -7 -5 -2 -1 1 3 4 4 6 11 12 12 0
+DST1608*29RRX020 0 8 5 5 4 6 8 11 13 13 15 20 20 13 11 4 0 1 2 2 3 1 6 8 9 8
+DST1608*30RRX020 0 6 -1 -10 -8 -8 -9 -10 -16 -15 -7 -2 -1 -3 -6 -21 -28 -20 -12 -11 -16 -18 -22 -16 -12 -11
+DST1608*31RRX020 0 -8 -11 -12 -8 -5 -7 -6 -4 1 6 7 5 2 0 0 1 2 6 4 -2 -11 -15 -17 -19 -4
+DST1609*01RRX020 0 -12 -12 -18 -23 -28 -34 -38 -40 -46 -59 -50 -40 -35 -40 -38 -36 -26 -14 -16 -21 -21 -34 -37 -38 -32
+DST1609*02RRX020 0 -39 -57 -57 -53 -51 -50 -41 -36 -32 -31 -31 -29 -26 -28 -20 -20 -25 -31 -26 -21 -20 -24 -31 -28 -34
+DST1609*03RRX020 0 -23 -25 -37 -44 -50 -43 -31 -37 -40 -42 -40 -46 -44 -37 -38 -38 -38 -38 -38 -37 -40 -46 -47 -37 -39
+DST1609*04RRX020 0 -44 -39 -27 -26 -26 -28 -39 -36 -31 -29 -34 -35 -36 -35 -35 -35 -32 -30 -26 -23 -31 -29 -29 -28 -32
+DST1609*05RRX020 0 -28 -27 -31 -30 -31 -31 -27 -25 -26 -30 -32 -29 -24 -23 -24 -20 -22 -26 -31 -38 -35 -26 -25 -27 -28
+DST1609*06RRX020 0 -24 -23 -26 -28 -27 -25 -25 -30 -38 -37 -29 -26 -29 -29 -28 -23 -21 -18 -16 -11 -9 -9 -8 -12 -23
+DST1609*07RRX020 0 -16 -16 -19 -24 -21 -18 -14 -13 -16 -17 -15 -20 -24 -24 -18 -19 -23 -25 -24 -21 -15 -13 -13 -15 -18
+DST1609*08RRX020 0 -17 -11 -18 -23 -25 -27 -29 -26 -30 -32 -33 -32 -32 -28 -29 -31 -33 -28 -22 -14 -12 -11 -13 -14 -24
+DST1609*09RRX020 0 -11 -10 -10 -12 -14 -14 -14 -13 -13 -13 -13 -14 -11 -10 -8 -9 -7 -5 -4 -4 -5 -7 -9 -11 -10
+DST1609*10RRX020 0 -10 -9 -9 -10 -13 -16 -14 -12 -10 -11 -12 -12 -12 -11 -11 -11 -11 -8 -6 -6 -6 -8 -9 -6 -10
+DST1609*11RRX020 0 -5 -4 -4 -8 -11 -10 -9 -10 -10 -11 -8 -7 -9 -11 -11 -10 -11 -12 -11 -9 -8 -7 -6 -2 -9
+DST1609*12RRX020 0 4 7 5 3 2 4 3 5 3 2 7 6 4 3 0 0 4 5 5 5 5 1 -2 -2 3
+DST1609*13RRX020 0 -1 -5 -12 -18 -19 -18 -14 -13 -17 -12 -9 -5 -3 -3 -1 -2 -5 -3 0 2 1 1 0 -5 -7
+DST1609*14RRX020 0 -9 -12 -14 -11 -4 -3 -4 -2 -2 -2 3 1 -1 -3 -6 -8 -7 -2 -2 -4 -16 -22 -21 -22 -7
+DST1609*15RRX020 0 -25 -30 -34 -33 -31 -32 -33 -32 -31 -28 -23 -17 -12 -6 -5 -3 -1 2 3 4 4 2 2 2 -15
+DST1609*16RRX020 0 4 1 -2 -3 -4 -4 -3 -1 1 0 2 3 5 6 6 6 3 1 1 0 0 -1 -2 -2 1
+DST1609*17RRX020 0 -1 0 5 8 11 13 12 12 10 15 14 13 14 13 12 10 9 8 7 7 5 6 7 5 9
+DST1609*18RRX020 0 0 3 4 9 11 9 5 4 4 -1 -12 -16 -10 -4 -6 -7 -10 -12 -13 -9 -5 -2 0 2 -2
+DST1609*19RRX020 0 4 5 5 4 5 7 9 4 -16 -33 -35 -30 -25 -24 -22 -12 -4 6 8 12 15 19 12 12 -3
+DST1609*20RRX020 0 13 -10 -30 -31 -27 -25 -21 -23 -27 -24 -23 -21 -20 -22 -21 -18 -18 -13 -8 -7 -4 0 -1 -2 -16
+DST1609*21RRX020 0 -7 -12 -10 -9 -10 -12 -13 -13 -10 -11 -10 -8 -6 -9 -8 -5 -2 1 0 4 6 7 6 4 -5
+DST1609*22RRX020 0 4 0 -2 -4 -4 -5 -6 -7 -8 -6 -4 -4 -4 -3 0 3 4 5 4 2 2 3 3 2 -1
+DST1609*23RRX020 0 2 2 1 1 6 7 6 6 7 5 2 2 3 5 7 9 13 13 12 13 14 16 15 13 8
+DST1609*24RRX020 0 11 8 6 8 11 11 13 11 9 5 5 8 10 13 11 11 11 13 10 3 -2 -2 -5 -8 7
+DST1609*25RRX020 0 -8 -16 -27 -31 -22 -12 -5 -4 -2 0 -6 -20 -25 -17 -11 -12 -13 -7 -14 -20 -31 -22 -20 -20 -15
+DST1609*26RRX020 0 -21 -26 -28 -25 -22 -24 -25 -25 -21 -18 -19 -20 -17 -23 -27 -27 -27 -29 -37 -38 -38 -24 -13 -17 -25
+DST1609*27RRX020 0 -21 -32 -40 -42 -37 -31 -28 -31 -43 -49 -44 -34 -32 -29 -37 -35 -30 -20 -22 -21 -17 -8 -12 -14 -30
+DST1609*28RRX020 0 -19 -20 -32 -40 -38 -30 -23 -24 -26 -31 -26 -29 -29 -23 -25 -34 -43 -47 -44 -45 -41 -38 -36 -28 -32
+DST1609*29RRX020 0 -24 -28 -34 -36 -42 -42 -30 -43 -56 -66 -53 -50 -54 -51 -56 -51 -48 -40 -40 -39 -35 -30 -31 -30 -42
+DST1609*30RRX020 0 -31 -29 -25 -29 -26 -27 -30 -29 -29 -29 -25 -27 -28 -30 -26 -25 -22 -29 -30 -28 -30 -28 -31 -35 -28
+DST1610*01RRX020 0 -41 -32 -27 -27 -33 -31 -32 -31 -26 -23 -24 -22 -25 -27 -21 -21 -17 -22 -31 -39 -35 -28 -29 -29 -28
+DST1610*02RRX020 0 -29 -25 -25 -21 -21 -28 -25 -20 -22 -19 -24 -25 -23 -19 -18 -15 -13 -12 -12 -19 -28 -31 -27 -23 -22
+DST1610*03RRX020 0 -18 -14 -12 -13 -16 -23 -30 -27 -22 -16 -17 -21 -21 -17 -14 -15 -18 -17 -20 -22 -26 -25 -23 -22 -20
+DST1610*04RRX020 0 -25 -33 -42 -44 -43 -39 -34 -31 -37 -44 -39 -30 -30 -21 -19 -18 -18 -22 -25 -27 -24 -23 -34 -31 -31
+DST1610*05RRX020 0 -25 -25 -31 -33 -30 -27 -26 -23 -20 -18 -18 -23 -23 -21 -21 -18 -14 -14 -15 -12 -11 -16 -18 -17 -21
+DST1610*06RRX020 0 -14 -17 -16 -14 -11 -11 -11 -11 -8 -6 -7 -11 -11 -8 -4 -4 -7 -11 -11 -9 -7 -4 -8 -11 -10
+DST1610*07RRX020 0 -16 -19 -21 -19 -17 -13 -13 -14 -12 -10 -9 -9 -9 -8 -8 -10 -11 -12 -14 -16 -12 -10 -9 -9 -13
+DST1610*08RRX020 0 -9 -9 -10 -10 -12 -14 -18 -17 -15 -11 -12 -17 -17 -14 -12 -12 -14 -14 -15 -12 -12 -11 -10 -7 -13
+DST1610*09RRX020 0 -7 -7 -6 -6 -8 -11 -12 -13 -14 -15 -16 -17 -18 -17 -16 -14 -12 -7 -3 -2 -1 -1 -1 -4 -10
+DST1610*10RRX020 0 -5 -8 -5 -3 -12 -13 -13 -14 -11 -8 -6 -11 -13 -13 -10 -10 -14 -19 -17 -12 -15 -14 -13 -10 -11
+DST1610*11RRX020 0 -7 -8 -7 -6 -2 -1 -4 -2 0 2 0 -2 -3 -2 1 1 2 3 2 2 1 -2 -1 1 -1
+DST1610*12RRX020 0 0 0 -4 -3 -1 -1 1 2 3 4 5 3 0 0 1 -1 -2 -2 -4 -6 -8 -5 11 21 1
+DST1610*13RRX020 0 20 17 26 21 15 11 8 -14 -31 -42 -47 -60 -61 -65 -81 -92 -99-104 -99 -89 -91 -94 -97-104 -48
+DST1610*14RRX020 0 -97 -84 -79 -80 -77 -74 -71 -69 -62 -54 -43 -40 -38 -32 -29 -32 -32 -27 -25 -21 -16 -17 -16 -12 -47
+DST1610*15RRX020 0 -11 -15 -14 -12 -10 -14 -17 -18 -20 -17 -19 -24 -22 -15 -9 -8 -12 -19 -17 -15 -16 -18 -20 -19 -16
+DST1610*16RRX020 0 -17 -17 -14 -13 -11 -11 -15 -13 -12 -12 -12 -12 -8 -9 -18 -14 -11 -12 -21 -20 -19 -18 -17 -13 -14
+DST1610*17RRX020 0 -10 -7 -8 -10 -10 -17 -22 -23 -18 -19 -17 -13 -16 -12 -11 -14 -18 -14 -16 -15 -21 -27 -24 -19 -16
+DST1610*18RRX020 0 -21 -19 -16 -17 -21 -19 -15 -17 -21 -23 -19 -19 -19 -15 -13 -13 -12 -12 -11 -9 -12 -16 -17 -17 -16
+DST1610*19RRX020 0 -12 -8 -8 -8 -8 -10 -10 -12 -15 -14 -15 -13 -12 -8 -6 -6 -8 -6 -7 -6 -5 -5 -7 -9 -9
+DST1610*20RRX020 0 -9 -9 -9 -10 -7 -4 -1 1 0 2 4 4 3 2 3 4 3 1 -1 -1 2 2 3 3 -1
+DST1610*21RRX020 0 4 6 6 4 2 1 3 3 3 3 5 7 7 8 8 8 7 6 6 6 3 1 0 0 4
+DST1610*22RRX020 0 -2 0 4 8 12 15 16 15 10 8 7 10 13 11 6 5 3 2 0 1 4 7 5 -1 7
+DST1610*23RRX020 0 0 2 5 8 8 10 4 -6 -5 -1 -1 -4 -4 0 2 0 -2 -3 -4 -4 -4 -6 -9 -10 -1
+DST1610*24RRX020 0 -15 -16 -18 -19 -20 -23 -21 -25 -24 -21 -19 -18 -23 -22 -24 -28 -30 -29 -23 -17 -21 -25 -33 -31 -23
+DST1610*25RRX020 0 -26 -27 -28 -32 -27 -23 -25 -34 -41 -33 -24 -33 -33 -43 -52 -49 -49 -60 -53 -56 -58 -46 -56 -54 -40
+DST1610*26RRX020 0 -49 -44 -48 -51 -51 -50 -40 -41 -43 -39 -32 -33 -30 -26 -34 -45 -49 -44 -45 -42 -42 -44 -44 -39 -42
+DST1610*27RRX020 0 -38 -36 -33 -38 -40 -42 -39 -34 -42 -36 -36 -33 -38 -37 -35 -40 -44 -49 -40 -32 -35 -36 -42 -44 -38
+DST1610*28RRX020 0 -41 -33 -35 -36 -38 -37 -35 -37 -38 -37 -29 -29 -28 -25 -25 -23 -29 -25 -24 -24 -29 -36 -36 -34 -32
+DST1610*29RRX020 0 -34 -43 -56 -64 -57 -58 -59 -63 -52 -41 -43 -46 -40 -38 -37 -38 -38 -36 -39 -39 -36 -31 -28 -29 -44
+DST1610*30RRX020 0 -29 -26 -32 -39 -41 -36 -36 -37 -40 -39 -27 -25 -34 -39 -34 -30 -27 -32 -35 -35 -31 -31 -27 -25 -33
+DST1610*31RRX020 0 -25 -26 -29 -28 -27 -24 -26 -30 -31 -24 -24 -22 -23 -20 -19 -23 -24 -23 -20 -17 -16 -15 -16 -17 -23
+DST1611*01RRX020 0 -19 -15 -16 -18 -17 -15 -14 -17 -22 -21 -16 -19 -26 -28 -28 -30 -26 -21 -11 -5 -9 -10 -9 -19 -18
+DST1611*02RRX020 0 -18 -12 -8 -9 -10 -14 -17 -17 -14 -11 -10 -11 -17 -26 -32 -35 -33 -29 -26 -19 -16 -20 -29 -28 -19
+DST1611*03RRX020 0 -23 -18 -19 -26 -31 -35 -36 -40 -44 -37 -39 -30 -34 -31 -30 -31 -30 -29 -25 -20 -22 -21 -21 -14 -29
+DST1611*04RRX020 0 -14 -15 -14 -12 -12 -16 -21 -22 -22 -18 -14 -12 -11 -9 -10 -10 -10 -8 -8 -7 -8 -11 -9 -6 -12
+DST1611*05RRX020 0 -6 -3 -2 -5 -5 -7 -9 -10 -11 -10 -7 -7 -8 -5 -3 -4 -3 -3 -3 -2 -3 -4 -5 -4 -5
+DST1611*06RRX020 0 -4 -2 0 2 3 1 1 -3 -4 -9 -8 -5 -1 0 -1 -4 -5 -6 -5 -1 -3 -4 -6 -6 -3
+DST1611*07RRX020 0 -5 -2 -1 1 1 2 5 7 6 4 6 6 5 8 7 1 -2 -1 -2 1 2 2 2 3 2
+DST1611*08RRX020 0 2 2 2 2 4 5 5 4 6 6 6 5 2 -1 0 -1 -3 -3 -2 1 1 0 0 3 2
+DST1611*09RRX020 0 4 6 8 9 10 12 15 22 19 12 2 -3 -4 -1 1 0 -2 -1 0 6 6 6 3 5 6
+DST1611*10RRX020 0 5 7 3 6 0 -1 3 3 -1 0 -1 -10 -18 -18 -31 -45 -54 -57 -52 -44 -40 -37 -36 -44 -19
+DST1611*11RRX020 0 -49 -40 -29 -26 -26 -26 -26 -24 -21 -21 -22 -17 -15 -11 -10 -10 -10 -15 -12 -9 -6 -5 -5 -3 -18
+DST1611*12RRX020 0 -2 0 5 6 3 -13 -6 -2 1 0 -4 -11 -11 -10 -10 -11 -18 -20 -21 -20 -22 -20 -16 -17 -9
+DST1611*13RRX020 0 -15 -10 -13 -13 -11 -12 -9 -13 -20 -16 -14 -15 -13 -15 -13 -14 -18 -15 -13 -12 -17 -23 -21 -12 -14
+DST1611*14RRX020 0 -7 -7 -9 -9 -6 -4 -6 -9 -14 -10 -11 -9 -8 -6 -6 -9 -13 -10 -9 -6 -6 -8 -13 -9 -9
+DST1611*15RRX020 0 -9 -7 -6 -7 -7 -7 -4 -9 -12 -12 -12 -14 -13 -9 -7 -6 -10 -7 -3 -1 -2 -5 -6 -4 -7
+DST1611*16RRX020 0 -2 -1 0 0 1 -1 -2 -2 -1 2 4 3 4 7 6 5 3 3 4 3 2 1 -3 -1 1
+DST1611*17RRX020 0 3 4 6 9 8 5 4 1 1 1 2 1 0 1 1 -1 -4 -7 -7 -5 -4 -6 -7 -4 0
+DST1611*18RRX020 0 -4 -3 -1 2 3 3 3 4 2 2 1 -1 -1 0 1 0 -1 1 2 5 6 4 2 3 1
+DST1611*19RRX020 0 5 9 9 9 8 7 7 9 8 8 11 13 13 12 12 13 12 10 9 12 10 9 5 12 10
+DST1611*20RRX020 0 15 17 17 16 17 19 18 18 18 17 15 16 9 7 7 8 7 8 10 13 9 6 2 1 12
+DST1611*21RRX020 0 2 3 3 1 3 5 11 9 7 11 17 14 14 13 13 14 12 8 4 1 -3 -8 -5 -1 6
+DST1611*22RRX020 0 0 2 -1 0 3 8 10 9 4 2 9 12 15 8 4 2 -3 -6 -4 -7 0 -7 -2 2 3
+DST1611*23RRX020 0 -8 -19 -21 -20 -18 -20 -19 -16 -16 -15 -11 -7 -10 -9 -9 -12 -12 -11 -12 -7 -8 -8 -3 -2 -12
+DST1611*24RRX020 0 -7 -4 -2 -1 -3 -6 -14 -22 -16 -16 -18 -27 -28 -29 -27 -34 -32 -27 -26 -18 -16 -21 -23 -32 -19
+DST1611*25RRX020 0 -31 -26 -30 -35 -34 -39 -38 -31 -26 -25 -25 -24 -22 -21 -19 -22 -26 -27 -24 -24 -24 -27 -24 -17 -27
+DST1611*26RRX020 0 -15 -17 -17 -21 -24 -22 -22 -20 -18 -14 -11 -7 -11 -9 -10 -13 -16 -16 -18 -15 -15 -14 -18 -16 -16
+DST1611*27RRX020 0 -13 -8 -8 -12 -16 -16 -12 -15 -16 -17 -15 -14 -13 -8 -6 -10 -14 -14 -11 -9 -8 -10 -10 -8 -12
+DST1611*28RRX020 0 -9 -9 -7 -6 -7 -7 -6 -8 -10 -10 -8 -6 -4 -1 -1 -1 -1 -4 -2 1 -3 -12 -15 -12 -6
+DST1611*29RRX020 0 -8 -5 -5 -9 -11 -9 -5 -6 -11 -12 -13 -9 -4 -3 0 -2 -5 -5 -2 1 2 0 -1 -1 -5
+DST1611*30RRX020 0 -4 -1 1 -2 -3 -2 -2 -2 -3 -4 -2 -1 -3 -2 1 2 1 2 2 2 -1 -3 -1 1 -1
+DST1612*01RRX020 0 5 9 14 11 8 1 -1 3 2 2 4 6 8 13 12 11 9 10 11 11 11 10 8 8 8
+DST1612*02RRX020 0 8 6 7 4 3 3 1 2 1 2 4 3 2 4 4 3 1 1 2 4 2 1 -1 -1 3
+DST1612*03RRX020 0 -1 3 4 5 5 4 6 7 5 4 4 6 5 7 5 5 5 6 8 11 11 10 8 8 6
+DST1612*04RRX020 0 9 11 13 12 12 13 14 13 10 8 6 8 10 10 12 14 18 21 24 25 25 22 18 17 14
+DST1612*05RRX020 0 18 18 18 17 11 11 11 10 10 11 12 13 16 15 13 11 12 8 9 12 12 10 6 11 12
+DST1612*06RRX020 0 17 20 20 19 21 20 22 22 21 18 20 18 1 -1 -4 -4 0 3 -1 -2 -4 -4 -3 2 9
+DST1612*07RRX020 0 6 7 6 2 -3 -6 -6 -8 -6 -8 -8 -7 -3 3 8 0 -3 -2 6 7 -3 -5 -3 -2 -1
+DST1612*08RRX020 0 0 -2 5 6 7 3 -3 1 2 1 -17 -12 -10 -10 -9 -17 -18 -19 -16 -10 -15 -14 -19 -17 -8
+DST1612*09RRX020 0 -11 -9 -8 -5 -7 -3 -8 -13 -11 -6 -1 -3 -4 -4 -3 -6 -5 -12 -33 -33 -29 -28 -33 -28 -13
+DST1612*10RRX020 0 -22 -20 -18 -19 -17 -17 -16 -18 -20 -18 -17 -15 -14 -11 -12 -16 -16 -15 -14 -13 -19 -18 -16 -13 -16
+DST1612*11RRX020 0 -7 -3 0 -3 -10 -10 -5 -8 -10 -14 -7 -7 -4 -1 -3 -13 -12 -10 -8 -5 -3 -2 1 5 -6
+DST1612*12RRX020 0 5 3 0 -1 -1 -5 -7 -8 -6 -6 -3 -1 2 2 0 -1 -1 -1 3 5 3 2 1 3 -1
+DST1612*13RRX020 0 4 5 5 4 5 1 -2 -4 -6 -6 -5 -4 2 4 4 3 -1 -3 -3 -1 -1 -3 -2 -2 0
+DST1612*14RRX020 0 -1 4 7 5 3 0 0 1 2 3 3 3 3 5 8 6 5 2 0 -2 -2 -1 -3 -2 2
+DST1612*15RRX020 0 -1 0 0 1 3 4 6 6 6 6 4 5 5 8 9 5 3 0 0 2 2 1 -1 0 3
+DST1612*16RRX020 0 3 6 6 3 3 2 6 7 7 7 7 7 9 11 12 10 8 9 9 11 9 7 7 9 7
+DST1612*17RRX020 0 11 13 14 13 11 10 12 12 10 8 10 9 7 11 16 15 9 6 6 5 10 12 12 11 11
+DST1612*18RRX020 0 1 -4 -2 -1 -6 -7 -12 -14 -6 -2 -2 -3 -4 -5 -5 -4 -7 -7 -4 -1 3 1 -4 -4 -4
+DST1612*19RRX020 0 -2 -1 3 1 1 -4 -5 -5 -8 -9 -9 -9 -11 -11 -9 -10 -9 -5 -3 4 6 2 1 1 -4
+DST1612*20RRX020 0 -2 -3 -1 1 0 2 2 1 -3 -2 -1 2 2 0 1 -3 -7 -6 3 6 8 9 2 -2 0
+DST1612*21RRX020 0 -4 -5 -3 0 3 4 1 7 10 14 1 -10 -9 1 -8 -26 -27 -33 -24 -28 -32 -29 -29 -29 -11
+DST1612*22RRX020 0 -25 -25 -32 -25 -21 -28 -32 -32 -31 -28 -30 -25 -21 -19 -23 -22 -21 -19 -20 -15 -17 -24 -24 -22 -24
+DST1612*23RRX020 0 -19 -13 -18 -22 -16 -18 -18 -19 -16 -18 -17 -23 -18 -17 -16 -18 -20 -23 -23 -21 -32 -31 -29 -26 -20
+DST1612*24RRX020 0 -22 -21 -25 -22 -17 -19 -18 -19 -22 -26 -20 -17 -15 -12 -7 -9 -15 -15 -17 -12 -9 -6 -6 -4 -16
+DST1612*25RRX020 0 -1 1 -6 -9 -3 -5 -8 -9 -12 -18 -24 -17 -15 -13 -15 -17 -23 -26 -24 -17 -11 -11 -15 -16 -13
+DST1612*26RRX020 0 -17 -13 -11 -16 -17 -21 -17 -16 -18 -25 -25 -20 -24 -19 -18 -23 -26 -21 -17 -14 -14 -17 -18 -19 -19
+DST1612*27RRX020 0 -16 -13 -15 -14 -12 -12 -13 -15 -13 -15 -13 -9 -8 -12 -12 -12 -12 -10 -11 -8 -7 -12 -15 -14 -12
+DST1612*28RRX020 0 -12 -8 -8 -10 -8 -9 -8 -10 -11 -6 -3 -3 -4 -2 -2 -5 -7 -12 -9 -7 -4 -4 -3 -1 -7
+DST1612*29RRX020 0 0 -4 -6 -5 -4 -2 -1 -2 -7 -9 -6 -5 -8 -8 -10 -14 -18 -18 -14 -7 -5 -4 -4 -1 -7
+DST1612*30RRX020 0 1 1 0 -1 -1 0 2 2 -1 -4 -3 3 3 3 3 5 1 -4 -6 -4 -1 -3 0 2 0
+DST1612*31RRX020 0 2 6 7 8 5 4 11 12 10 5 5 -7 -15 -22 -16 -16 -12 -11 -11 -11 -18 -19 -10 -6 -4
diff --git a/share/mgd77/F107_mon.plt b/share/mgd77/F107_mon.plt
index 20b163e..7fe632a 100644
--- a/share/mgd77/F107_mon.plt
+++ b/share/mgd77/F107_mon.plt
@@ -806,3 +806,34 @@
2014 02 1495
2014 03 1335
2014 04 1307
+2014 05 1197
+2014 06 1134
+2014 07 1277
+2014 08 1155
+2014 09 1343
+2014 10 1386
+2014 11 1361
+2014 12 1385
+2015 01 1233
+2015 02 1131
+2015 03 1125
+2015 04 1169
+2015 05 1103
+2015 06 1177
+2015 07 994
+2015 08 982
+2015 09 927
+2015 10 930
+2015 11 964
+2015 12 982
+2016 01 901
+2016 02 909
+2016 03 815
+2016 04 846
+2016 05 857
+2016 06 760
+2016 07 799
+2016 08 783
+2016 09 797
+2016 10 770
+2016 11 691
diff --git a/share/mgd77/umdl.CM4 b/share/mgd77/umdl.CM4
index 40c671d..852f3d5 100644
--- a/share/mgd77/umdl.CM4
+++ b/share/mgd77/umdl.CM4
@@ -402,3105 +402,3105 @@
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
+2005.0 2007.5 2025.0 1960.0
1962.5 1965.0 1967.5 1970.0
1972.5 1975.0 1977.5 1980.0
1982.5 1985.0 1987.5 1990.0
1992.5 1995.0 1997.5 2000.0
-2002.5 2005.0 2007.5 2015.0
+2002.5 2005.0 2007.5 2025.0
1960.0 1962.5 1965.0 1967.5
1970.0 1972.5 1975.0 1977.5
1980.0 1982.5 1985.0 1987.5
1990.0 1992.5 1995.0 1997.5
2000.0 2002.5 2005.0 2007.5
-2015.0 1960.0 1962.5 1965.0
+2025.0 1960.0 1962.5 1965.0
1967.5 1970.0 1972.5 1975.0
1977.5 1980.0 1982.5 1985.0
1987.5 1990.0 1992.5 1995.0
1997.5 2000.0 2002.5 2005.0
-2007.5 2015.0 1960.0 1962.5
+2007.5 2025.0 1960.0 1962.5
1965.0 1967.5 1970.0 1972.5
1975.0 1977.5 1980.0 1982.5
1985.0 1987.5 1990.0 1992.5
1995.0 1997.5 2000.0 2002.5
-2005.0 2007.5 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0 1960.0
-2015.0 1960.0 2015.0
+2005.0 2007.5 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0 1960.0
+2025.0 1960.0 2025.0
-0.299865347043291E+05 0.180438772782140E+02 0.154958844087926E+02 0.288058300551964E+02
0.181637392645950E+02 0.241121579813762E+02 0.245155868236426E+02 0.222803191085936E+02
0.241558051380059E+02 0.206747856780801E+02 0.253981549832130E+02 0.193898834190781E+02
@@ -106216,1024 +106216,1024 @@
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
-AAA
+AAA
3
0.148950643139329E+03 0.295690236786174E+02-0.204694099056177E+03
-AAE
+AAE
3
0.506251854836821E+03-0.283781996444827E+02 0.109598558884792E+03
-AAE2
+AAE2
3
0.605396720776314E+03 0.442202409521010E+02 0.873622461939214E+02
-AAE3
+AAE3
3
0.680101850292425E+03-0.118426984033372E+03 0.538405429136359E+03
-ABG
+ABG
3
-0.783935771788685E+02 0.411911661393519E+03 0.683696832346614E+03
-ABG2
+ABG2
3
-0.195213571714371E+03 0.419312266134713E+03 0.614856409056613E+03
-ABG3
+ABG3
3
-0.496495750180047E+02 0.403516486616683E+03 0.712403814734831E+03
-ABK
+ABK
3
0.993221049134481E+02 0.186955481099252E+02-0.105883367343142E+03
-ABK2
+ABK2
3
0.987203080724468E+02 0.220286320708612E+02-0.119513527286061E+03
-AGN
+AGN
3
0.299107783513426E+02 0.199366266695877E+03-0.119256664387011E+03
-AIA
+AIA
3
0.805902547479592E+02-0.666200827508073E+02 0.530488400705349E+03
-ALE
+ALE
3
-0.640607582823651E+02 0.110709068130188E+01-0.424337747625157E+02
-ALE2
+ALE2
3
-0.761609530455515E+02-0.437418217753184E+01-0.597953393962472E+02
-ALE3
+ALE3
3
-0.963431979895422E+02 0.176235892163254E+02-0.635926266927815E+02
-ALM
+ALM
3
-0.102227944547286E+02 0.444006102018479E+02 0.210654739914808E+02
-AML
+AML
3
0.390138733619581E+02 0.595598780551350E+01 0.353749408288955E+02
-AMS
+AMS
3
-0.547105586129752E+03-0.674995551923108E+03-0.196122360159840E+04
-AMT
+AMT
3
0.000000000000000E+00 0.000000000000000E+00 0.273778558736995E+03
-AMT2
+AMT2
3
0.111706766810711E+03 0.249510552838407E+02 0.285001265084046E+03
-AMT3
+AMT3
3
0.104378692087875E+03 0.182651793804039E+02 0.275684273517249E+03
-ANN
+ANN
3
0.185270124810410E+03-0.265548011689238E+02-0.135938949029408E+03
-ANN2
+ANN2
3
0.152985765992507E+03-0.801900842823781E+02-0.710630572295584E+02
-API
+API
3
-0.455318677057835E+02 0.178716959455984E+03-0.904208004661764E+03
-API2
+API2
3
-0.477067155787060E+02 0.183247001060242E+03-0.910446025450328E+03
-API3
+API3
3
-0.395137874509951E+02 0.163179114893194E+03-0.899454064373784E+03
-API4
+API4
3
-0.293911840460383E+02 0.170181260784346E+03-0.890661755223862E+03
-AQU
+AQU
3
0.171310860971807E+02 0.514134451316927E+02-0.522759293472809E+02
-ARC
+ARC
3
-0.137364069029424E+03 0.303881362796214E+03 0.734445296082745E+03
-ARE
+ARE
3
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
-ARK
+ARK
3
-0.197904588660704E+03 0.734209148969593E+03-0.291262259264387E+03
-ARS
+ARS
3
0.103647386881441E+03-0.224460212623150E+03 0.427003113198573E+03
-ASH
+ASH
3
0.193031875299586E+03 0.786933081603713E+02 0.182792658816902E+01
-ASH2
+ASH2
3
0.190970556800017E+03 0.799123459591232E+02 0.212999978080818E+02
-ASH3
+ASH3
3
0.190337080146918E+03 0.945431206537008E+02 0.986108168835609E+01
-ASP
+ASP
3
0.530677480726943E+02-0.589414847718682E+02 0.498519587106644E+02
-BDV
+BDV
3
0.110334610079974E+02 0.877232796044728E+00-0.306306644118529E+02
-BEL
+BEL
3
0.950721235087295E+02 0.695141800741444E+02 0.284582321858746E+03
-BFE
+BFE
3
0.622832314003780E+02-0.112193800765917E+03-0.247870876060121E+03
-BGY
+BGY
3
0.105923646605168E+02-0.135571019964918E+03 0.111850343235126E+03
-BJI
+BJI
3
0.639763538751636E+03-0.230544958911032E+03 0.419130257920423E+03
-BJN
+BJN
3
-0.108038327617679E+03 0.833356446390288E+01-0.243801365799353E+02
-BLC
+BLC
3
0.176699310697251E+03 0.237568734318878E+02-0.152988851614607E+03
-BLC2
+BLC2
3
0.184367575818874E+03 0.128011032692093E+02-0.185951002362021E+03
-BNG
+BNG
3
0.377042019914417E+02-0.124466883240748E+03 0.745522813358472E+02
-BOU
+BOU
3
0.185674811790680E+02 0.497608688073522E+02-0.152031464341100E+03
-BOX
+BOX
3
-0.394762590712299E+02-0.678041102408918E+02-0.397539922204276E+03
-BRW
+BRW
3
-0.217537606730757E+02-0.413030811548221E+02-0.119660876831750E+03
-BSL
+BSL
3
0.709787277282674E+00 0.696069292124194E+02 0.160075336027982E+02
-BYR
+BYR
3
0.278069952798641E+03-0.325108571016430E+03-0.164060845640591E+03
-BYR2
+BYR2
3
0.785744782513024E+02 0.476471813235548E+02-0.254991287998332E+02
-BYR3
+BYR3
3
0.821671225255480E+02 0.718992009185097E+02-0.204633060955416E+02
-CBB
+CBB
3
0.601702141441774E+02-0.693321278529107E+02 0.646025633834563E+02
-CBI
+CBI
3
-0.299321733250040E+03-0.508660521776892E+02 0.264530601611412E+03
-CCS
+CCS
3
-0.432932540599897E+02-0.666405776042244E+02-0.640864800156269E+02
-CCS2
+CCS2
3
-0.255798236695230E+02-0.618002803952682E+02-0.133493195152486E+03
-CDP
+CDP
3
0.593410681736180E+02 0.138420470943990E+01-0.707147466532520E+02
-CLF
+CLF
3
-0.625428196744966E+02-0.651506276417954E+01 0.113371585251749E+03
-CMO
+CMO
3
0.106079065540595E+02-0.343097035662294E+02-0.909118955808537E+02
-CMO2
+CMO2
3
0.778876065933804E+01-0.383704398907300E+02-0.631406778148951E+02
-CNB
+CNB
3
0.252468358481752E+02 0.478790902764380E+02 0.120112144182715E+03
-CNH
+CNH
3
-0.888868975697868E+02 0.237477782423202E+02 0.176981347337258E+03
-COI
+COI
3
-0.320649982973121E+01 0.240536253224315E+02 0.669052776586307E+02
-COI2
+COI2
3
0.497933848505555E+02 0.356235149743822E+03-0.259540290858752E+02
-CPA
+CPA
3
-0.538199820019572E+02-0.121823304953151E+03-0.180604925424988E+03
-CSY
+CSY
3
0.796406729276974E+03-0.274088546309238E+03-0.819501750570297E+03
-CTA
+CTA
3
-0.444939562407880E+03-0.937781034861083E+02 0.226585129258832E+03
-CWE
+CWE
3
-0.688208934044081E+02 0.505940297816302E+02-0.625076661705628E+02
-CWE2
+CWE2
3
-0.576695336599918E+02 0.794917204047155E+02-0.572864172782089E+02
-CZT
+CZT
3
-0.644171880259433E+03 0.122034488744867E+04 0.135500263508660E+03
-CZT2
+CZT2
3
-0.737785922154040E+03 0.108299357426121E+04 0.139679342657719E+03
-DAL
+DAL
3
-0.760217527050692E+01 0.688320739741367E+02-0.668341562688902E+02
-DIK
+DIK
3
-0.725178753566612E+02-0.107618982864134E+03-0.298379063076468E+03
-DIK2
+DIK2
3
-0.786001214330543E+02-0.113661179941892E+03-0.272841265896951E+03
-DIK3
+DIK3
3
-0.915021120715282E+02-0.116399583407441E+03-0.300370706411641E+03
-DLR
+DLR
3
0.761882467551178E+02 0.755452118402707E+02 0.413867556886306E+02
-DOB
+DOB
3
-0.418126511048910E+02-0.164741199798009E+03-0.278107613100419E+03
-DOB2
+DOB2
3
-0.536616956846736E+02-0.181183287344423E+03-0.278445456162066E+03
-DOU
+DOU
3
0.297023332821544E+02-0.637848190031661E+01 0.787115058962326E+02
-DRV
+DRV
3
-0.234726384625594E+03-0.411445153790646E+03-0.261451506066729E+04
-DRV2
+DRV2
3
-0.231336174360735E+03-0.462213234458948E+03-0.243817460194705E+04
-DRV3
+DRV3
3
-0.220320517453893E+03-0.445310110169721E+03-0.270945006448017E+04
-DVS
+DVS
3
-0.232313664838487E+03 0.219216910062689E+03 0.256281179324084E+03
-EBR
+EBR
3
0.296870036872395E+02 0.381398192290446E+01 0.350891487968108E+01
-EGS
+EGS
3
0.135379177718017E+03 0.185849712328374E+03 0.985872286526538E+02
-EIC
+EIC
3
-0.338665305321113E+02 0.561542139776198E+03-0.497741271572856E+03
-ESK
+ESK
3
0.138566337354540E+02-0.250965718002185E+02-0.383662035249275E+02
-ETT
+ETT
3
0.486493584053926E+02-0.136324220440565E+03 0.403295382208737E+03
-EYR
+EYR
3
0.159775209854806E+02-0.243490725421253E+02 0.182295188769728E+02
-FCC
+FCC
3
-0.665991421109569E+02 0.523685974788263E+02-0.271472765912086E+03
-FRA
+FRA
3
0.229996694646641E+05-0.108741395342515E+05-0.587195367668462E+05
-FRD
+FRD
3
0.606208615189622E+02-0.874788705444435E+02 0.160826326539690E+03
-FRN
+FRN
3
-0.128411458779885E+02 0.155338590830727E+01-0.278989655824966E+03
-FTN
+FTN
3
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
-FUQ
+FUQ
3
0.141383133093568E+03-0.606804960975781E+02 0.778476945883731E+02
-FUQ2
+FUQ2
3
0.134373299444175E+03-0.237686969381623E+02-0.991781554210820E+01
-FUR
+FUR
3
-0.291612233899734E+01-0.495468423776820E+00 0.680898418676588E+01
-GCK
+GCK
3
0.398816762653249E+02-0.347556650583453E+02-0.878550446185848E+02
-GDH
+GDH
3
0.219307437457929E+03-0.294274005896828E+03 0.454089836710527E+03
-GDH2
+GDH2
3
0.262178296469378E+03-0.329935881153598E+03 0.716946544082976E+03
-GLL
+GLL
3
-0.219176324729974E+03 0.178853626660768E+03 0.291214480816100E+03
-GLN
+GLN
3
-0.209770329356469E+03 0.165179696710854E+03 0.288335684184089E+03
-GNA
+GNA
3
0.492591084423799E+00-0.678482547602796E+02 0.147206400306787E+03
-GUA
+GUA
3
0.165958298621429E+03 0.993343942469857E+02 0.197733334679949E+02
-GUI
+GUI
3
-0.309099769117653E+04-0.800686970744117E+03-0.477373493364159E+03
-GWC
+GWC
3
0.281306873240772E+03 0.538077148348030E+02-0.162649733019507E+03
-GZH
+GZH
3
0.560473372952053E+02 0.548590388388888E+02 0.433550071110800E+01
-GZH2
+GZH2
3
0.774813068968009E+02 0.681855143710486E+02 0.911138324809497E+01
-HAD
+HAD
3
-0.327986997629570E+02-0.558502544787751E+01 0.644988790986406E+02
-HBA
+HBA
3
0.887530372389886E+02 0.427021140962062E+03-0.116934426426251E+03
-HBK
+HBK
3
0.102594535949881E+03-0.436861987833130E+02 0.900561714141783E+01
-HER
+HER
3
0.421936430853480E+02-0.175699497655832E+02-0.474599200616979E+02
-HIS
+HIS
3
0.860279211780751E+02-0.675159742991934E+03 0.118610558196366E+04
-HLP
+HLP
3
0.248804237016978E+02-0.186572438757521E+03-0.164356469203942E+03
-HLP2
+HLP2
3
0.201747855319957E+02-0.195731892976305E+03-0.164385209184529E+03
-HON
+HON
3
0.759118660236149E+02 0.204622631060299E+03 0.135130810711040E+03
-HON2
+HON2
3
-0.159046175614795E+03 0.114861419596759E+03-0.285060372988992E+03
-HRB
+HRB
3
0.589887088586866E+02-0.649002766050391E+01-0.243514242803895E+02
-HRB2
+HRB2
3
0.585689555718946E+02 0.548972060169334E+00-0.470153129797272E+02
-HRB3
+HRB3
3
0.652172875763120E+02-0.654517857136875E+01-0.388488216303956E+05
-HRB4
+HRB4
3
0.673308270604712E+02-0.703989488051055E+01-0.527085215865684E+02
-HRN
+HRN
3
0.665576389109240E+01-0.833805212271431E+02-0.309050382824689E+02
-HTY
+HTY
3
0.140658595470068E+02-0.804776046038399E+03 0.395512603963748E+03
-HUA
+HUA
3
0.753196163017413E+02 0.321696001941064E+02 0.581540162891772E+02
-HUA2
+HUA2
3
0.587177343477385E+02 0.375044998353689E+02 0.418122639497001E+02
-HVN
+HVN
3
0.529698414127331E+02 0.188115751096970E+03 0.793439516667543E+01
-HYB
+HYB
3
0.341518837916213E+03 0.121863415778345E+03 0.408191573342658E+03
-HYB2
+HYB2
3
0.337234831092441E+03 0.741280139213708E+02 0.426857143757785E+03
-IQA
+IQA
3
0.187538655769856E+03-0.214811658479726E+02-0.291985250527385E+03
-IRT
+IRT
3
0.693511160164147E+02 0.666669427393325E+01-0.101252821637522E+03
-IRT2
+IRT2
3
0.716690475750942E+02 0.433002675699957E+01-0.121928208673455E+03
-ISK
+ISK
3
0.215599982698957E+03 0.938577620498734E+02-0.396489462837982E+02
-ISK2
+ISK2
3
0.220186112218655E+03 0.100133169637349E+03-0.109775303390691E+03
-ISK3
+ISK3
3
0.228137707257845E+03 0.119518837442147E+03-0.232501329446741E+02
-ISK4
+ISK4
3
0.175975215687497E+03 0.116092768019206E+03-0.994933542216482E+02
-ISK5
+ISK5
3
0.478669839792589E+03 0.127917462892101E+03-0.103873315571142E+03
-ISK6
+ISK6
3
0.201516814356443E+03 0.991164953907899E+02-0.128663882938096E+03
-JAI
+JAI
3
0.216375894828237E+03-0.392878287665658E+03-0.204345112652572E+01
-KAK
+KAK
3
0.358704534824509E+02 0.182402849099664E+02-0.960934259286147E+02
-KGD
+KGD
3
-0.356203879452902E+03-0.146088225828100E+02 0.297015415775642E+03
-KGD2
+KGD2
3
-0.315769894888690E+03-0.202471097573030E+03 0.290714284130901E+03
-KGL
+KGL
3
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
-KIR
+KIR
3
-0.759874739218052E+03-0.180038418486938E+04-0.222750316161401E+03
-KIR2
+KIR2
3
-0.771309734086270E+03-0.181890908837764E+04-0.208404090267646E+03
-KIV
+KIV
3
-0.584755478561305E+02 0.148278412360741E+03 0.324155290534719E+03
-KIV2
+KIV2
3
-0.403665596294932E+01 0.492241427596990E+02 0.308714910179410E+03
-KNY
+KNY
3
0.223970164876827E+00 0.604057166289618E+02-0.562441171456389E+02
-KNZ
+KNZ
3
-0.113278965066013E+02 0.403722247917066E+02-0.882194831970834E+02
-KOD
+KOD
3
-0.572331093364669E+03 0.254491370000901E+03-0.295209091210934E+02
-KOR
+KOR
3
0.216590936355914E+02 0.106856654264131E+03 0.244980291694712E+03
-KOU
+KOU
3
0.108774116762374E+03 0.134106397117759E+03 0.128675116370682E+03
-KRC
+KRC
3
0.232380700353700E+03 0.150193893805658E+03-0.186978148670427E+03
-KSH
+KSH
3
-0.783696304737975E+02 0.123957633027874E+02 0.194170101799427E+03
-KZN
+KZN
3
-0.269383698118032E+03-0.275673231124860E+03-0.335771498137583E+03
-KZN2
+KZN2
3
-0.991588802763998E+02-0.810896093472931E+02 0.471917019467757E+02
-LER
+LER
3
-0.838211691631787E+02 0.143069972012385E+03 0.815285562171491E+01
-LGR
+LGR
3
0.552379234570964E+01 0.365534383967369E+01 0.267533133760672E+02
-LIV
+LIV
3
-0.745597020238748E+03 0.588494809426366E+03 0.941901494993709E+03
-LMM
+LMM
3
0.361654962701054E+03 0.505522644158961E+02-0.764040740044065E+02
-LNN
+LNN
3
0.468330793473545E+02-0.244465872588223E+02-0.140808576905152E+03
-LNP
+LNP
3
0.507425542838060E+02 0.771691947688082E+02 0.110791255741941E+02
-LOV
+LOV
3
0.771603402785548E+02 0.109035098383779E+01 0.347642000416113E+02
-LOV2
+LOV2
3
0.763622340932413E+02 0.325631002596148E+01 0.355733267182809E+02
-LQA
+LQA
3
0.127313345018838E+02-0.119214248090431E+02 0.292233424963231E+02
-LQA2
+LQA2
3
0.317917591895910E+02 0.403285283340282E+03 0.299713674990542E+02
-LQA3
+LQA3
3
0.370302169332317E+02 0.813774560364443E+03 0.303726119318894E+02
-LRM
+LRM
3
-0.496582559809233E+02-0.599134829235694E+01 0.182446919442025E+03
-LRV
+LRV
3
-0.297650907433989E+03 0.605043701254667E+03-0.533173774456130E+03
-LUA
+LUA
3
0.192411836750080E+03-0.114448582857498E+02 0.868169735424050E+02
-LVV
+LVV
3
0.113628313793979E+03 0.887988263207156E+02 0.628136386067858E+02
-LVV2
+LVV2
3
0.113017768492044E+03 0.829948349849385E+02 0.691986148320205E+02
-LVV3
+LVV3
3
0.145309244511872E+03 0.525853245935294E+02 0.723832799292763E+02
-LWI
+LWI
3
0.241477657154044E+03 0.380570938550283E+02 0.948101757586346E+02
-LZH
+LZH
3
0.167266321382392E+01 0.636246454541383E+01-0.346846560124933E+02
-LZH2
+LZH2
3
0.108868520878133E+02 0.327374373313720E+01-0.368529470288821E+02
-LZH3
+LZH3
3
0.174519816966414E+02-0.271445733061632E+01-0.343023330704384E+02
-MAB
+MAB
3
0.418207990430541E+02-0.794053372032754E+01 0.169313892932318E+03
-MAW
+MAW
3
0.516874034447978E+01-0.270044639249014E+02 0.147859827586988E+03
-MBC
+MBC
3
0.543134898233334E+01 0.657374651086885E+02 0.131112871233858E+02
-MBO
+MBO
3
0.101627558157256E+03 0.567453437563621E+02 0.572935891746961E+02
-MBO2
+MBO2
3
-0.811892307222803E+03-0.355198936698562E+04 0.670246213295893E+02
-MBO3
+MBO3
3
0.913833162599807E+02 0.581196461971826E+02 0.662091555871498E+02
-MCQ
+MCQ
3
0.269249983753041E+03-0.193883815413766E+02 0.300291897115525E+03
-MEA
+MEA
3
0.117455766968102E+03 0.337210351234082E+02-0.121620407787487E+03
-MFP
+MFP
3
-0.656952692350778E+02-0.600752530615882E+02 0.295802838243974E+03
-MGD
+MGD
3
-0.226077497069663E+03-0.730267144500769E+03-0.408837537053338E+01
-MGD2
+MGD2
3
-0.237233163297444E+03-0.741251460030937E+03 0.821087125777402E+01
-MGD3
+MGD3
3
-0.245484815074898E+03-0.733523913944162E+03 0.100634856467723E+03
-MGD4
+MGD4
3
-0.234290671624306E+03-0.725911017866398E+03-0.101493754265039E+01
-MGD5
+MGD5
3
-0.208539881160539E+03-0.704232599203253E+03 0.176228730132047E+02
-MIR
+MIR
3
-0.750360047187406E+02 0.842980464598331E+02-0.434611856814123E+03
-MIR2
+MIR2
3
-0.885258072458903E+02 0.581864085640396E+02-0.471081256121221E+03
-MIR3
+MIR3
3
-0.510087371979901E+02 0.163042461543869E+03-0.121219429852513E+03
-MIZ
+MIZ
3
-0.131090262723852E+03 0.321280773845874E+02-0.166591607485361E+03
-MLT
+MLT
3
-0.327096738602531E+02 0.597659500547063E+02 0.106045236307910E+03
-MMB
+MMB
3
-0.171224942146805E+03 0.108676622212403E+03 0.596609683872964E+02
-MMK
+MMK
3
0.286081665004932E+02 0.111449714887418E+03-0.222954922845076E+03
-MMK2
+MMK2
3
0.128443315926955E+03 0.294868418786425E+03-0.484609904164086E+03
-MMK3
+MMK3
3
0.123257890335741E+03 0.296750339306443E+03-0.566223344593542E+03
-MNK
+MNK
3
0.257074089868173E+03 0.129601220119238E+03-0.160649998979038E+03
-MNK2
+MNK2
3
0.264150282463270E+03 0.151518249502231E+03-0.175460509754935E+03
-MOL
+MOL
3
-0.252606646173001E+02-0.737483864780098E+02-0.196110781357643E+03
-MOS
+MOS
3
0.203414997098165E+03 0.746927922908427E+02 0.294449388740089E+03
-MUT
+MUT
3
-0.577292193664860E+02-0.526341092387678E+02-0.107952042093728E+03
-MZL
+MZL
3
-0.103629632914493E+03-0.442963535891151E+01-0.310453891149856E+03
-NAI
+NAI
3
0.570090504339941E+02-0.650786879346449E+02-0.900007950895012E+02
-NAQ
+NAQ
3
-0.377589244752860E+03 0.272544506407947E+03 0.517192707172877E+03
-NAQ2
+NAQ2
3
-0.381301174115222E+03 0.274120214249886E+03 0.481870406865640E+03
-NCK
+NCK
3
0.187412461894646E+02 0.256137253237897E+01-0.551929823630713E+02
-NEW
+NEW
3
-0.336639213715914E+02 0.976775163595283E+02-0.914677426472493E+02
-NGK
+NGK
3
-0.376907685875286E+02 0.847008370792708E+01-0.106344374874100E+02
-NKK
+NKK
3
-0.320529840192466E+02-0.181839855025386E+03 0.307263426829521E+02
-NMP
+NMP
3
-0.537205377814235E+02 0.167586880988928E+02 0.321174776726453E+03
-NUR
+NUR
3
0.331714068146263E+03-0.740348726231026E+02 0.138079694197758E+03
-NVL
+NVL
3
-0.207878304122336E+03 0.537383675167338E+02 0.223459609340067E+03
-NVL2
+NVL2
3
-0.215574384885563E+03 0.465673808279656E+02 0.899058907201624E+02
-NVS
+NVS
3
0.219012996544555E+03-0.118627977531201E+03 0.103040049520137E+01
-NWS
+NWS
3
0.000000000000000E+00 0.000000000000000E+00 0.164210834537119E+03
-ODE
+ODE
3
-0.255296333509779E+03-0.654515391561853E+03 0.230871848625908E+03
-ODE2
+ODE2
3
-0.245653522984698E+03-0.839173684542355E+03 0.231811011720245E+03
-OTT
+OTT
3
0.149505585705986E+03-0.179854492291492E+03 0.135186017430653E+03
-PAB
+PAB
3
0.121242061727865E+02 0.168180350579639E+02-0.394978667301744E+02
-PAF
+PAF
3
0.179221919088335E+03 0.223172562528447E+03 0.740787598624098E+03
-PAF2
+PAF2
3
0.190740286400917E+03 0.213426425657867E+03 0.623397790549395E+03
-PAF3
+PAF3
3
0.206785413373633E+03 0.197184301707381E+03 0.652340184626815E+03
-PAF4
+PAF4
3
0.423849934404443E+03-0.129339757735309E+03-0.341155963691692E+03
-PAG
+PAG
3
-0.147483469836200E+03-0.163593823778937E+03-0.187731832344276E+03
-PBQ
+PBQ
3
0.149681161823202E+03 0.302139633576752E+03-0.152686801064210E+03
-PBQ2
+PBQ2
3
0.146210961313875E+03 0.288056828332994E+03-0.149341478373698E+03
-PBQ3
+PBQ3
3
0.160219120736950E+03 0.296090612982222E+03-0.510802565159006E+02
-PET
+PET
3
-0.308186416365704E+03 0.169544995096082E+03 0.204465894801113E+03
-PET2
+PET2
3
-0.299586969540116E+03 0.194989756447423E+03 0.203346922605494E+03
-PET3
+PET3
3
-0.310323595829305E+03 0.177907035371392E+03 0.194007260079312E+03
-PHU
+PHU
3
-0.767435166005525E+01 0.504031743694930E+01 0.352858870826738E+01
-PIL
+PIL
3
0.296007845785637E+02-0.644790893750143E+01-0.199397054811757E+02
-PIO
+PIO
3
0.369814817377339E+02 0.161682781033273E+03 0.351679307115879E+03
-PMG
+PMG
3
0.245489986768509E+02 0.182659670170478E+02 0.227818977897098E+03
-POD
+POD
3
0.525870500513885E+02 0.535549519582010E+02-0.271380354993879E+03
-POD2
+POD2
3
0.614177124682285E+02 0.817831125600233E+00-0.266467984811942E+03
-PPT
+PPT
3
-0.663439950688153E+03-0.700256994443580E+03-0.108804559373865E+03
-PPT2
+PPT2
3
-0.168412627108846E+04 0.312122977102110E+04-0.105290669703152E+03
-PPT3
+PPT3
3
-0.664354191744386E+03-0.705229591216399E+03-0.106863252330265E+03
-PPT4
+PPT4
3
-0.728730330398367E+03-0.938427217270274E+03 0.927322217058611E+02
-PRU
+PRU
3
0.149815151375117E+02 0.419082967122764E+02-0.326550218231255E+02
-PTU
+PTU
3
0.679845252618436E+02-0.137159314160653E+02-0.322624577209126E+02
-QGZ
+QGZ
3
0.105466924202438E+02 0.177043238312583E+02-0.815151873808189E+02
-QUE
+QUE
3
0.156518682646330E+02 0.537605252565469E+02-0.297789855821736E+02
-QZH
+QZH
3
0.151677216968225E+03 0.338295600181011E+02-0.409657608542286E+02
-RBD
+RBD
3
-0.516283368590863E+02-0.282512593434094E+02 0.444216041373355E+02
-RES
+RES
3
0.984718838966528E+01 0.617054921390299E+02 0.930977986152587E+02
-ROB
+ROB
3
0.123841589088137E+03-0.129639976398729E+02 0.932643715333605E+02
-RSV
+RSV
3
0.459059820264074E+02-0.143159771780895E+02-0.104849490306381E+03
-SAB
+SAB
3
0.884069921105290E+01-0.711285544480409E+02 0.423622366109912E+02
-SBA
+SBA
3
-0.225037754971640E+04-0.916132234905267E+03-0.380920674185594E+04
-SBA2
+SBA2
3
-0.220355232180464E+04-0.941249174546080E+03-0.379053281266995E+04
-SFS
+SFS
3
0.559953289063359E+02-0.938889787521148E+01 0.000000000000000E+00
-SGE
+SGE
3
0.527483822251296E+01-0.336857582739131E+03 0.262763822707621E+03
-SHL
+SHL
3
-0.982461214274175E+02-0.124531761934798E+03-0.443265283842325E+03
-SIT
+SIT
3
0.323215250312676E+02 0.125266715611736E+02-0.790607522632166E+02
-SJG
+SJG
3
0.567588742188913E+02-0.781872513817914E+01 0.409469130043431E+03
-SJG2
+SJG2
3
-0.382623695103125E+02 0.185526294673364E+03 0.151937693245806E+03
-SKT
+SKT
3
-0.332507925320398E+02-0.449184449152316E+01 0.987514706007833E+03
-SMG
+SMG
3
0.724939943064005E+03 0.418975841656606E+03 0.166988947208777E+04
-SNA
+SNA
3
0.395525286872532E+02 0.218179560434541E+02 0.146604939781802E+02
-SOD
+SOD
3
-0.131903097466009E+03-0.422833675852172E+02-0.638220515623950E+03
-SPA
+SPA
3
-0.134895478207449E+04-0.349312646831543E+04 0.617325229237302E+02
-SPT
+SPT
3
0.341780927083678E+02-0.136861163263296E+02-0.435452612792703E+02
-SSH
+SSH
3
0.000000000000000E+00 0.000000000000000E+00 0.244676134548233E+03
-SSH2
+SSH2
3
0.000000000000000E+00 0.000000000000000E+00 0.250164726426450E+03
-SSH3
+SSH3
3
0.000000000000000E+00 0.000000000000000E+00 0.265310269886712E+03
-SSO
+SSO
3
-0.494411648259221E+02 0.155146569498191E+02 0.157479898786762E+02
-STJ
+STJ
3
0.118351119103207E+03 0.511317056712677E+02-0.468154637090573E+02
-STO
+STO
3
0.331292676540876E+02 0.174407883912739E+02-0.470263568184506E+02
-SUA
+SUA
3
0.127860751225661E+02-0.870511424429573E+02-0.993989139100774E+02
-SUA2
+SUA2
3
0.340039437273916E+02-0.713647724828942E+02-0.428601248956461E+02
-SVD
+SVD
3
-0.273336610547066E+03-0.898240818917515E+02-0.518095743551432E+03
-SVD2
+SVD2
3
-0.268247665709906E+03-0.916233994373418E+02-0.520364803430864E+03
-SVD3
+SVD3
3
0.336023804129454E+03-0.303258906330931E+03-0.170208403111332E+03
-SWI
+SWI
3
-0.324501544933056E+03-0.166380532449563E+03 0.207898432392951E+03
-SZT
+SZT
3
-0.518045447530504E+03 0.155576079506010E+03-0.869986862059903E+03
-TAH
+TAH
3
-0.616594973272153E+03-0.109396699928138E+04 0.359870158506072E+03
-TAM
+TAM
3
0.478978134301589E+02-0.209440560681309E+03-0.618312289977234E+02
-TAN
+TAN
3
0.435744112456496E+03-0.215901095642687E+01-0.394461277621775E+03
-TAN2
+TAN2
3
0.318767787225153E+03-0.694311580745107E+02-0.185220684319249E+03
-TEH
+TEH
3
-0.336251549153399E+02 0.386322570732794E+02-0.212434585041585E+03
-TEN
+TEN
3
-0.520622120005596E+03 0.161082631867817E+03-0.872947066158640E+03
-TEO
+TEO
3
-0.471203652481416E+02 0.118440616279848E+02-0.135576529461981E+03
-TFS
+TFS
3
-0.396832137138625E+03 0.117317877824308E+02 0.134937663294343E+03
-TFS2
+TFS2
3
-0.407592102839297E+03 0.690631785926814E+01 0.151609290015832E+03
-THJ
+THJ
3
-0.231999116897396E+02 0.313398960304081E+00 0.134482098229832E+03
-THJ2
+THJ2
3
-0.239413928683671E+02 0.327254682618406E+03 0.143981378768980E+03
-THJ3
+THJ3
3
-0.155530439432431E+02-0.100737123420951E+02 0.161924579340413E+03
-THL
+THL
3
-0.326153519279497E+03 0.140450566611021E+03-0.779632820264450E+02
-THY
+THY
3
0.335042791183331E+02-0.130605111352605E+02-0.235179683533181E+02
-THY2
+THY2
3
0.226309709261090E+02-0.151399486292060E+01-0.463030411520573E+02
-TIK
+TIK
3
-0.614981948448046E+02-0.159740846672304E+03-0.117178592662670E+03
-TKT
+TKT
3
-0.253414651893495E+03-0.567649773575604E+02 0.367678702132854E+02
-TKT2
+TKT2
3
-0.256012544399341E+03 0.232917462553028E+01-0.680633345263927E+02
-TKT3
+TKT3
3
-0.280520803364292E+03 0.232899554919163E+03-0.726110488936628E+02
-TKT4
+TKT4
3
-0.250294516738589E+03 0.157628164026780E+02-0.288020739507338E+02
-TKT5
+TKT5
3
-0.243498614185500E+03 0.248668847671512E+02-0.580768769541266E+02
-TMK
+TMK
3
0.288837779964820E+02-0.202383773465024E+03-0.256681765067885E+03
-TNG
+TNG
3
-0.331409348316628E+02 0.106995668248512E+02 0.799821839626794E+01
-TOL
+TOL
3
0.234497359356457E+02-0.178620955084279E+02-0.131500346228146E+02
-TOO
+TOO
3
0.300062814788276E+01 0.478063976103443E+01 0.420011004103525E+02
-TRD
+TRD
3
0.240647127588874E+03 0.174132339440236E+03 0.251601833447523E+03
-TRD2
+TRD2
3
0.195245641217889E+03 0.149949490503407E+03 0.234736719909732E+03
-TRO
+TRO
3
0.162781043515877E+03-0.435024451100393E+03 0.158306688377079E+03
-TRO2
+TRO2
3
0.204759803913122E+03-0.433057247987611E+03 0.693573063792903E+02
-TRW
+TRW
3
0.171423063375533E+03 0.542210871607853E+02 0.411833561334815E+02
-TSU
+TSU
3
0.674579642133454E+02-0.688953042559417E+02 0.100487761607307E+03
-TTB
+TTB
3
0.339078499089013E+02-0.801346428691930E+02 0.117694391290417E+03
-TUC
+TUC
3
-0.752052863766183E+02-0.593737000391701E+02 0.136237478518001E+03
-TUC2
+TUC2
3
-0.760005342230371E+02-0.562675963444595E+02 0.198292597630073E+03
-UJJ
+UJJ
3
-0.268443426709865E+03 0.157492980686345E+03 0.282083600593395E+03
-VAL
+VAL
3
0.146205949770330E+03-0.419495244660347E+02-0.319290849052520E+01
-VAL2
+VAL2
3
0.125537287418534E+03-0.363793516754893E+02-0.337413057914205E+02
-VIC
+VIC
3
0.572599342985983E+02 0.296281826216419E+01-0.372131416392219E+03
-VIC2
+VIC2
3
0.561809760984331E+02 0.476127996464183E+01-0.328131548384210E+03
-VLA
+VLA
3
0.000000000000000E+00 0.000000000000000E+00-0.467244622184460E+02
-VOS
+VOS
3
0.618958742605869E+01 0.130566868794808E+03 0.125619563907387E+03
-VOS2
+VOS2
3
0.286013776092275E+03-0.195683749861146E+02 0.766818772631033E+02
-VOS3
+VOS3
3
0.626350698629413E+02 0.786516348803253E+02 0.164396469086656E+02
-VOS4
+VOS4
3
-0.239819977433724E+03 0.245964514031827E+03 0.377286666543404E+02
-VOS5
+VOS5
3
0.770151644564086E+02 0.645895831165387E+02 0.117685619949771E+02
-VQS
+VQS
3
-0.559694349949725E+03-0.419440892807379E+03 0.120225177677883E+05
-VSS
+VSS
3
0.363004753324213E+02-0.503923021302648E+02-0.400658863184514E+02
-WHN
+WHN
3
0.756173388828216E+02 0.378039675052536E+02-0.758600596066498E+02
-WHS
+WHS
3
0.186286791552970E+03-0.206404892715848E+03-0.199923433776393E+03
-WIK
+WIK
3
0.666750586184281E+02 0.359795967338519E+01 0.262580638801805E+02
-WIL
+WIL
3
0.648047674140263E+03-0.276552716560799E+03 0.759972543463575E+02
-WIT
+WIT
3
0.296936830274013E+02 0.508316646751130E+01-0.336666268566746E+02
-WNG
+WNG
3
0.120970665977696E+02 0.304511666303056E+02-0.560818473942025E+02
-YAK
+YAK
3
0.721623872139849E+02-0.115815685780033E+04 0.586963723420135E+02
-YAK2
+YAK2
3
0.886276772487862E+02-0.116862010843375E+04 0.614723425791058E+02
-YAK3
+YAK3
3
0.898035721350824E+02-0.118106452959815E+04 0.667729340709655E+02
-YKC
+YKC
3
0.448297555392941E+03-0.190206710682196E+03 0.844258465200435E+02
-YKC2
+YKC2
3
-0.782004342602542E+01-0.365142461685274E+02-0.218134862103574E+03
-YSS
+YSS
3
0.296159756205493E+02-0.134645863375457E+03-0.147971700828585E+03
-YSS2
+YSS2
3
-0.919250042045946E+02-0.970353144248427E+02 0.121200940845537E+03
-YSS3
+YSS3
3
-0.799627052122966E+02-0.401930014634880E+02 0.114574417029310E+03
AAA mul
diff --git a/share/postscriptlight/PSL_custom_fonts.txt b/share/postscriptlight/PSL_custom_fonts.txt
index ad316e5..6f59056 100644
--- a/share/postscriptlight/PSL_custom_fonts.txt
+++ b/share/postscriptlight/PSL_custom_fonts.txt
@@ -1,4 +1,4 @@
-# $Id: PSL_custom_fonts.txt 14657 2015-07-30 21:26:18Z pwessel $
+# $Id: PSL_custom_fonts.txt 17326 2016-11-08 20:28:56Z pwessel $
#
# Listing of additional PostScript fonts than those found on most PS printers.
# Add your extra font information there. This is the only required change as
@@ -8,7 +8,7 @@
# to install new fonts on your particular system.
#
# The fontheight below is the height of A for unit fontsize.
-# Encoded = 0 if we may reencode this font as needed.
+# Encoded = 0 if we may re-encode this font as needed.
#
#Fontname Fontheight Encoded
Ryumin-Light-EUC-H 0.700 1
diff --git a/share/postscriptlight/PSL_standard_fonts.txt b/share/postscriptlight/PSL_standard_fonts.txt
index 6078ebe..fe38d60 100644
--- a/share/postscriptlight/PSL_standard_fonts.txt
+++ b/share/postscriptlight/PSL_standard_fonts.txt
@@ -1,10 +1,10 @@
-# $Id: PSL_standard_fonts.txt 14657 2015-07-30 21:26:18Z pwessel $
+# $Id: PSL_standard_fonts.txt 17326 2016-11-08 20:28:56Z pwessel $
#
# Listing of "Standard" 35 PostScript fonts found on most PS printers.
# To add additional fonts, create a similar file called PSL_custom_fonts.txt
# in GMT/share/postscriptlight and add your extra font information there.
# The fontheight below is the height of A for unit fontsize.
-# Encoded = 0 if we may reencode this font as needed.
+# Encoded = 0 if we may re-encode this font as needed.
#
#Fontname Fontheight Encoded
Helvetica 0.700 0
diff --git a/share/spotter/Global_EarthByte_Plate_ID_Table_AREPS.txt b/share/spotter/Global_EarthByte_Plate_ID_Table_AREPS.txt
index 33e5df3..fe4c894 100644
--- a/share/spotter/Global_EarthByte_Plate_ID_Table_AREPS.txt
+++ b/share/spotter/Global_EarthByte_Plate_ID_Table_AREPS.txt
@@ -762,7 +762,7 @@
7218 Proto-pamir embayment pre-Cenozoic
7219 subduction zone post-65
7220 Indus-Yarlung ophiolites
-7221 more or less arbitarily chosen within the 'missing shortening interval'
+7221 more or less arbitrarily chosen within the 'missing shortening interval'
7222 LH & Siwalik/MFT part of Greater India
7223 LH - GH boundary
7224 Greater Asia: northern boundary
diff --git a/share/tools/CMakeLists.txt b/share/tools/CMakeLists.txt
index 7cab60e..91ec98e 100644
--- a/share/tools/CMakeLists.txt
+++ b/share/tools/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/share/tools/gmt5syntax.in b/share/tools/gmt5syntax.in
index 3f8b64d..f31fcda 100755
--- a/share/tools/gmt5syntax.in
+++ b/share/tools/gmt5syntax.in
@@ -2,9 +2,9 @@
#! -*-perl-*-
eval 'exec perl -x -wS $0 ${1+"$@"}'
if 0;
-# $Id: gmt5syntax.in 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: gmt5syntax.in 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
# J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/share/tools/gmt_aliases.csh b/share/tools/gmt_aliases.csh
index 0a58a5b..179270c 100755
--- a/share/tools/gmt_aliases.csh
+++ b/share/tools/gmt_aliases.csh
@@ -1,6 +1,6 @@
-# $Id: gmt_aliases.csh 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: gmt_aliases.csh 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
# J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/share/tools/gmt_completion.bash b/share/tools/gmt_completion.bash
index 4d54895..e83cdb2 100755
--- a/share/tools/gmt_completion.bash
+++ b/share/tools/gmt_completion.bash
@@ -1,6 +1,6 @@
-# $Id: gmt_completion.bash 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: gmt_completion.bash 17450 2017-01-16 21:34:35Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
# J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/share/tools/gmt_functions.sh b/share/tools/gmt_functions.sh
index 61166b2..f3b0869 100755
--- a/share/tools/gmt_functions.sh
+++ b/share/tools/gmt_functions.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# $Id: gmt_functions.sh 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: gmt_functions.sh 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
# J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/share/tools/gmt_links.sh b/share/tools/gmt_links.sh
index 78c62d0..4e90ba9 100755
--- a/share/tools/gmt_links.sh
+++ b/share/tools/gmt_links.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# $Id: gmt_links.sh 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: gmt_links.sh 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
# J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/share/tools/gmt_make_custom_code.sh b/share/tools/gmt_make_custom_code.sh
index 45be6e6..66e3269 100755
--- a/share/tools/gmt_make_custom_code.sh
+++ b/share/tools/gmt_make_custom_code.sh
@@ -2,7 +2,7 @@
#
# $Id: gmt_make_custom_code.sh 15301 2015-12-04 13:59:07Z fwobbe $
#
-# Copyright (c) 2012-2015
+# Copyright (c) 2012-2017
# by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/share/tools/gmt_prepmex.sh b/share/tools/gmt_prepmex.sh
index ea26060..da17d21 100755
--- a/share/tools/gmt_prepmex.sh
+++ b/share/tools/gmt_prepmex.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# $Id: gmt_prepmex.sh 17187 2016-10-13 20:54:29Z pwessel $
+# $Id: gmt_prepmex.sh 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
# J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/share/tools/gmt_uninstall.sh b/share/tools/gmt_uninstall.sh
index 86694f8..e22d0d0 100755
--- a/share/tools/gmt_uninstall.sh
+++ b/share/tools/gmt_uninstall.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# $Id: gmt_uninstall.sh 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: gmt_uninstall.sh 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
# J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/share/tools/ncdeflate b/share/tools/ncdeflate
index 73a0c7a..daf5477 100755
--- a/share/tools/ncdeflate
+++ b/share/tools/ncdeflate
@@ -1,8 +1,8 @@
#!/bin/bash
#
-# $Id: ncdeflate 15759 2016-02-24 23:36:11Z pwessel $
+# $Id: ncdeflate 17450 2017-01-16 21:34:35Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
# J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 52ee1ad..3950a9d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 17175 2016-10-06 19:10:01Z fwobbe $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/block_subs.h b/src/block_subs.h
index b9e3c91..dd6918e 100644
--- a/src/block_subs.h
+++ b/src/block_subs.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: block_subs.h 16782 2016-07-12 02:08:14Z pwessel $
+ * $Id: block_subs.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/blockmean.c b/src/blockmean.c
index 7cc12cc..bf0b78b 100644
--- a/src/blockmean.c
+++ b/src/blockmean.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: blockmean.c 16718 2016-07-06 01:23:44Z pwessel $
+ * $Id: blockmean.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -269,7 +269,7 @@ int GMT_blockmean (void *V_API, int mode, void *args) {
/* Read the input data */
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all table and segment headers */
@@ -359,6 +359,9 @@ int GMT_blockmean (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
for (node = 0; node < Grid->header->nm; node++) { /* Visit all possible blocks to see if they were visited */
@@ -397,7 +400,7 @@ int GMT_blockmean (void *V_API, int mode, void *args) {
out[4] = slhg[node].a[BLK_L]; /* Minimum value in block */
out[5] = slhg[node].a[BLK_H]; /* Maximum value in block */
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
Return (API->error);
diff --git a/src/blockmedian.c b/src/blockmedian.c
index 4c46f48..fc5046b 100644
--- a/src/blockmedian.c
+++ b/src/blockmedian.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: blockmedian.c 16716 2016-07-05 22:32:02Z pwessel $
+ * $Id: blockmedian.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -352,7 +352,7 @@ int GMT_blockmedian (void *V_API, int mode, void *args) {
/* Read the input data */
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all table and segment headers */
@@ -422,6 +422,9 @@ int GMT_blockmedian (void *V_API, int mode, void *args) {
gmt_M_free (GMT, data);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
w_col = gmt_get_cols (GMT, GMT_OUT) - 1; /* Weights always reported in last output column */
if (emode) { /* Index column last, with weight col just before */
@@ -481,7 +484,7 @@ int GMT_blockmedian (void *V_API, int mode, void *args) {
if (Ctrl->W.weighted[GMT_OUT]) out[w_col] = (Ctrl->W.sigma[GMT_OUT]) ? 1.0 / weight : weight;
if (emode) out[i_col] = extra[3];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
n_cells_filled++;
first_in_cell = first_in_new_cell;
diff --git a/src/blockmode.c b/src/blockmode.c
index 110fdae..4a27760 100644
--- a/src/blockmode.c
+++ b/src/blockmode.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: blockmode.c 17124 2016-09-22 21:35:10Z jluis $
+ * $Id: blockmode.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -44,7 +44,7 @@ struct BIN_MODE_INFO { /* Used for histogram binning */
double i_offset; /* 0.5 if we are to bin using the center the bins on multiples of width, else 0.0 */
double o_offset; /* 0.0 if we are to report center the bins on multiples of width, else 0.5 */
double i_width; /* 1/width, to avoid divisions later */
- double *count; /* The histogram counts (double to accomodate weighted data), to be reset before each spatial block */
+ double *count; /* The histogram counts (double to accommodate weighted data), to be reset before each spatial block */
int min, max; /* The raw min,max bin numbers (min can be negative) */
int mode_choice; /* For multiple modes: BLOCKMODE_LOW picks lowest, BLOCKMODE_AVE picks average, BLOCKMODE_HIGH picks highest */
unsigned int n_bins;/* Number of bins required */
@@ -250,7 +250,7 @@ GMT_LOCAL double bin_mode (struct GMT_CTRL *GMT, struct BLK_DATA *d, uint64_t n,
B->count[bin] += d[i].a[BLK_W]; /* Add up counts or weights */
if (B->count[bin] > mode_count) { /* New max count value; make a note */
mode_count = B->count[bin]; /* Highest count so far... */
- mode_bin = bin; /* ...occuring for this bin */
+ mode_bin = bin; /* ...occurring for this bin */
n_modes = 1; /* Only one of these so far */
}
else if (doubleAlmostEqual (B->count[bin], mode_count)) n_modes++; /* Bin has same peak as previous best mode; increase mode count */
@@ -506,7 +506,7 @@ int GMT_blockmode (void *V_API, int mode, void *args) {
is_integer = true; /* Until proven otherwise */
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all table and segment headers */
@@ -584,6 +584,9 @@ int GMT_blockmode (void *V_API, int mode, void *args) {
gmt_M_free (GMT, data);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
w_col = gmt_get_cols (GMT, GMT_OUT) - 1; /* Weights always reported in last output column */
if (emode) { /* Index column last, with weight col just before */
@@ -724,7 +727,7 @@ int GMT_blockmode (void *V_API, int mode, void *args) {
if (Ctrl->W.weighted[GMT_OUT]) out[w_col] = (Ctrl->W.sigma[GMT_OUT]) ? 1.0 / weight : weight;
if (emode) out[i_col] = (double)src_id;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
n_cells_filled++;
first_in_cell = first_in_new_cell;
diff --git a/src/common_byteswap.h b/src/common_byteswap.h
index a50494c..d94a32d 100644
--- a/src/common_byteswap.h
+++ b/src/common_byteswap.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_byteswap.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: common_byteswap.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/common_math.c b/src/common_math.c
index f4eb9f7..a86c0bd 100644
--- a/src/common_math.c
+++ b/src/common_math.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_math.c 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: common_math.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/common_math.h b/src/common_math.h
index 9f44478..6f5876b 100644
--- a/src/common_math.h
+++ b/src/common_math.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_math.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: common_math.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/common_runpath.c b/src/common_runpath.c
index 41764a2..58171b2 100644
--- a/src/common_runpath.c
+++ b/src/common_runpath.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_runpath.c 16916 2016-08-18 04:57:02Z remko $
+ * $Id: common_runpath.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/common_runpath.h b/src/common_runpath.h
index 72a42a3..c48856b 100644
--- a/src/common_runpath.h
+++ b/src/common_runpath.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_runpath.h 15819 2016-03-06 20:54:48Z pwessel $
+ * $Id: common_runpath.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/common_sighandler.c b/src/common_sighandler.c
index e712ebd..cdcfea5 100644
--- a/src/common_sighandler.c
+++ b/src/common_sighandler.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_sighandler.c 15817 2016-03-06 03:50:50Z pwessel $
+ * $Id: common_sighandler.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/common_sighandler.h b/src/common_sighandler.h
index dba5230..d28bb74 100644
--- a/src/common_sighandler.h
+++ b/src/common_sighandler.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_sighandler.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: common_sighandler.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/common_string.c b/src/common_string.c
index 98a4c2f..ebc3170 100644
--- a/src/common_string.c
+++ b/src/common_string.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_string.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: common_string.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/common_string.h b/src/common_string.h
index de5e234..2f5ecd1 100644
--- a/src/common_string.h
+++ b/src/common_string.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: common_string.h 16680 2016-07-01 14:35:29Z jluis $
+ * $Id: common_string.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/compat/qsort.h b/src/compat/qsort.h
index 9cca96d..fb0b26b 100644
--- a/src/compat/qsort.h
+++ b/src/compat/qsort.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: qsort.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: qsort.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/config.h.in b/src/config.h.in
index 4795263..d8ce44b 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -1,7 +1,7 @@
/*
- * $Id: config.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: config.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/declspec.h b/src/declspec.h
index f7e2da4..be7b784 100644
--- a/src/declspec.h
+++ b/src/declspec.h
@@ -1,8 +1,8 @@
/*--------------------------------------------------------------------
*
- * $Id: declspec.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: declspec.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/example1.c b/src/example1.c
index fb11e4d..390c81c 100644
--- a/src/example1.c
+++ b/src/example1.c
@@ -1,5 +1,5 @@
#include "gmt.h"
-int main (int argc, char *argv[]) {
+int main () {
void *API; /* The API control structure */
struct GMT_DATASET *D = NULL; /* Structure to hold input dataset */
struct GMT_GRID *G = NULL; /* Structure to hold output grid */
diff --git a/src/filter1d.c b/src/filter1d.c
index 37bf7b7..10143ac 100644
--- a/src/filter1d.c
+++ b/src/filter1d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: filter1d.c 16696 2016-07-03 01:19:20Z pwessel $
+ * $Id: filter1d.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -264,7 +264,7 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct FILTER1D_CTRL *Ctrl, struct GM
Ctrl->F.filter = opt->arg[0];
Ctrl->F.width = atof (&opt->arg[1]);
if (gmt_get_modifier (opt->arg, 'h', txt_a)) Ctrl->F.highpass = true;
- switch (Ctrl->F.filter) { /* Get some futher info from some filters */
+ switch (Ctrl->F.filter) { /* Get some further info from some filters */
case 'P':
case 'p':
c = opt->arg[strlen(opt->arg-1)];
@@ -643,7 +643,7 @@ GMT_LOCAL int do_the_filter (struct GMTAPI_CTRL *C, struct FILTER1D_INFO *F) {
else
data_sum[i_col] = GMT->session.d_NaN;
}
- if (n_good_ones) GMT_Put_Record (C, GMT_WRITE_DOUBLE, data_sum);
+ if (n_good_ones) GMT_Put_Record (C, GMT_WRITE_DATA, data_sum);
}
else {
if (F->robust) for (i_col = 0; i_col < F->n_cols; ++i_col) F->n_this_col[i_col] = 0;
@@ -707,7 +707,7 @@ GMT_LOCAL int do_the_filter (struct GMTAPI_CTRL *C, struct FILTER1D_INFO *F) {
else
outval[i_col] = GMT->session.d_NaN;
}
- GMT_Put_Record (C, GMT_WRITE_DOUBLE, outval);
+ GMT_Put_Record (C, GMT_WRITE_DATA, outval);
}
}
@@ -924,6 +924,9 @@ int GMT_filter1d (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error, "Error in Begin_IO\n");
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_LINE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error, "Error in GMT_Set_Geometry\n");
+ }
allocate_space (GMT, &F); /* Gets column-specific flags and uint64_t space */
diff --git a/src/fitcircle.c b/src/fitcircle.c
index e4a121a..6a3631a 100644
--- a/src/fitcircle.c
+++ b/src/fitcircle.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: fitcircle.c 17138 2016-09-25 23:03:40Z jluis $
+ * $Id: fitcircle.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -402,7 +402,7 @@ int GMT_fitcircle (void *V_API, int mode, void *args) {
snprintf (format, GMT_LEN256, "%s%s%s", GMT->current.setting.format_float_out, GMT->current.setting.io_col_separator, GMT->current.setting.format_float_out);
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all table and segment headers */
@@ -449,6 +449,9 @@ int GMT_fitcircle (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, o_mode, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) {
Return (API->error); /* Enables data output and sets access mode */
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if (n_data < n_alloc) data = gmt_M_memory (GMT, data, n_data, struct FITCIRCLE_DATA);
if (Ctrl->S.active && Ctrl->L.norm%2) work = gmt_M_memory (GMT, NULL, n_data, double);
@@ -627,7 +630,7 @@ int GMT_fitcircle (void *V_API, int mode, void *args) {
}
}
if (Ctrl->F.active)
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
gmt_M_free (GMT, work);
gmt_M_free (GMT, data);
diff --git a/src/gmt-config.in b/src/gmt-config.in
index 3a2f7b4..7a2f45d 100755
--- a/src/gmt-config.in
+++ b/src/gmt-config.in
@@ -1,8 +1,8 @@
#!/bin/bash
#--------------------------------------------------------------------
-# $Id: gmt-config.in 16915 2016-08-17 14:04:05Z pwessel $
+# $Id: gmt-config.in 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt.c b/src/gmt.c
index dd0ec31..ae88c6c 100644
--- a/src/gmt.c
+++ b/src/gmt.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt.c 16926 2016-08-18 18:58:09Z fwobbe $
+ * $Id: gmt.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt.h b/src/gmt.h
index a24ab0c..fd0bf54 100644
--- a/src/gmt.h
+++ b/src/gmt.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt.h 17077 2016-09-05 05:05:02Z pwessel $
+ * $Id: gmt.h 17503 2017-01-30 23:14:43Z pwessel $
*
- * Copyright (c) 1991-2016
+ * Copyright (c) 1991-2017
* P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
@@ -64,7 +64,7 @@ extern "C" {
*=====================================================================================
*/
-/* 23 Primary API functions */
+/* 24 Primary API functions */
EXTERN_MSC void * GMT_Create_Session (const char *tag, unsigned int pad, unsigned int mode, int (*print_func) (FILE *, const char *));
EXTERN_MSC void * GMT_Create_Data (void *API, unsigned int family, unsigned int geometry, unsigned int mode, uint64_t dim[],
double *wesn, double *inc, unsigned int registration, int pad, void *data);
@@ -87,6 +87,7 @@ EXTERN_MSC int GMT_Put_Record (void *API, unsigned int mode, void *recor
EXTERN_MSC int GMT_Get_Row (void *API, int rec_no, struct GMT_GRID *G, float *row);
EXTERN_MSC int GMT_Put_Row (void *API, int rec_no, struct GMT_GRID *G, float *row);
EXTERN_MSC int GMT_Set_Comment (void *API, unsigned int family, unsigned int mode, void *arg, void *data);
+EXTERN_MSC int GMT_Set_Geometry (void *API, unsigned int direction, unsigned int geometry);
EXTERN_MSC int GMT_Get_Family (void *API, unsigned int direction, struct GMT_OPTION *head);
/* These functions are new in 5.3 and are being considered beta */
diff --git a/src/gmt2kml.c b/src/gmt2kml.c
index d348873..4a06a80 100644
--- a/src/gmt2kml.c
+++ b/src/gmt2kml.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt2kml.c 16609 2016-06-22 14:15:19Z jluis $
+ * $Id: gmt2kml.c 17503 2017-01-30 23:14:43Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -202,11 +202,11 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t-C Append color palette name to color symbols by third column z-value.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-D File with HTML snippets to use for data description [none].\n");
GMT_Message (API, GMT_TIME_NONE, "\t-E Extend feature down to the ground [no extrusion].\n");
- GMT_Message (API, GMT_TIME_NONE, "\t-F Feature type; choose from (e)vent, (s)symbol, (t)imespan, (l)ine, or (p)olygon [s].\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-F Feature type; choose from (e)vent, (s)ymbol, (t)imespan, (l)ine, or (p)olygon [s].\n");
GMT_Message (API, GMT_TIME_NONE, "\t All features expect lon, lat in the first two columns.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Value or altitude is given in the third column (see -A and -C).\n");
GMT_Message (API, GMT_TIME_NONE, "\t Event requires a timestamp in the next column.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t Timespan requires begin and end timestamps in the next two columns\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t Timespan requires begin and end ISO timestamps in the next two columns\n");
GMT_Message (API, GMT_TIME_NONE, "\t (use NaN for unlimited begin and/or end times).\n");
gmt_rgb_syntax (API->GMT, 'G', "Set color for symbol/polygon fill (-Gf<color>) or label (-Gn<color>).");
GMT_Message (API, GMT_TIME_NONE, "\t Default polygon fill is lightorange with 75%% transparency.\n");
@@ -414,14 +414,14 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct GMT2KML_CTRL *Ctrl, struct GMT
else if (opt->arg[0])
n_errors += gmt_parse_R_option (GMT, opt->arg);
break;
- case 'S': /* Scale for symbol or text */
+ case 'S': /* Scale for symbol (c) or text (n) */
Ctrl->S.active = true;
- if (opt->arg[0] == 'f')
+ if (opt->arg[0] == 'c')
Ctrl->S.scale[F_ID] = atof (&opt->arg[1]);
else if (opt->arg[0] == 'n')
Ctrl->S.scale[N_ID] = atof (&opt->arg[1]);
else {
- GMT_Message (API, GMT_TIME_NONE, "-S requires f or n, then size\n");
+ GMT_Message (API, GMT_TIME_NONE, "-S requires c or n, then nondimensional scale\n");
n_errors++;
}
break;
@@ -692,7 +692,7 @@ int GMT_gmt2kml (void *V_API, int mode, void *args) {
struct GMT_DATASET *Dd = NULL;
struct GMT_TEXTSET *Dt = NULL;
struct GMT2KML_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -739,12 +739,14 @@ int GMT_gmt2kml (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_TEXTSET, GMT_OUT, GMT_HEADER_OFF) != GMT_NOERROR) {
Return (API->error); /* Enables data output and sets access mode */
}
+ if (GMT_Set_Geometry (API, GMT_OUT, Ctrl->F.geometry) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
/* Now we are ready to take on some input values */
out[GMT_Z] = Ctrl->A.altitude;
strcpy (GMT->current.setting.io_col_separator, ","); /* Specify comma-separated output */
- GMT->current.io.geo.range = GMT_IS_M180_TO_P180_RANGE; /* Want -180/+180 longitude output format */
strcpy (GMT->current.setting.format_float_out, "%.12g"); /* Make sure we use enough decimals */
n_coord = (Ctrl->F.mode < LINE) ? Ctrl->F.mode + 2 : 2; /* This is a cryptic way to determine if there are 2,3 or 4 columns... */
get_z = (Ctrl->C.active || Ctrl->A.get_alt);
@@ -821,6 +823,8 @@ int GMT_gmt2kml (void *V_API, int mode, void *args) {
if (use_folder) {
kml_print (API, N++, "<%s>\n", Document[KML_FOLDER]);
kml_print (API, N, "<name>%s</name>\n", Ctrl->T.folder);
+ if (Ctrl->Z.invisible) kml_print (API, N, "<visibility>0</visibility>\n");
+ if (Ctrl->Z.open) kml_print (API, N, "<open>1</open>\n");
}
if (Ctrl->D.active) { /* Add in a description HTML snipped */
@@ -864,7 +868,7 @@ int GMT_gmt2kml (void *V_API, int mode, void *args) {
}
n_tables = Dt->n_tables;
}
- if (GMT->common.R.active && first) { /* Issue Region tag as given on commmand line */
+ if (GMT->common.R.active && first) { /* Issue Region tag as given on command line */
place_region_tag (API, GMT->common.R.wesn, Ctrl->Z.min, Ctrl->Z.max, N);
first = false;
}
@@ -1118,7 +1122,7 @@ int GMT_gmt2kml (void *V_API, int mode, void *args) {
if (row > 0 && no_dateline && crossed_dateline (out[GMT_X], last_x)) {
/* GE cannot handle polygons crossing the dateline; warn for now */
GMT_Report (API, GMT_MSG_NORMAL,
- "Warning: At least on polygon is straddling the Dateline. Google Earth will wrap these the wrong way\n");
+ "Warning: At least one polygon is straddling the Dateline. Google Earth will wrap these the wrong way\n");
GMT_Report (API, GMT_MSG_NORMAL,
"Split such polygons into East and West parts and plot them as separate polygons.\n");
GMT_Report (API, GMT_MSG_NORMAL, "Use gmtconvert to help in this conversion.\n");
diff --git a/src/gmt_agc_io.c b/src/gmt_agc_io.c
index 614a36e..b0e01e2 100644
--- a/src/gmt_agc_io.c
+++ b/src/gmt_agc_io.c
@@ -1,6 +1,6 @@
-/* $Id: gmt_agc_io.c 16544 2016-06-14 00:15:52Z pwessel $
+/* $Id: gmt_agc_io.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_api.c b/src/gmt_api.c
index 46541b6..29d5a38 100644
--- a/src/gmt_api.c
+++ b/src/gmt_api.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_api.c 17218 2016-10-18 23:09:32Z pwessel $
+ * $Id: gmt_api.c 17580 2017-02-23 06:35:24Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -356,7 +356,7 @@ GMT_LOCAL int api_get_item (struct GMTAPI_CTRL *API, unsigned int family, void *
if (S_obj->family != (enum GMT_enum_family)family) { /* Not the required data type; check for exceptions... */
if (family == GMT_IS_DATASET && (S_obj->family == GMT_IS_VECTOR || S_obj->family == GMT_IS_MATRIX))
S_obj->family = GMT_IS_DATASET; /* Vectors or Matrix masquerading as dataset are valid. Change their family here. */
- else /* We dont like your kind */
+ else /* We don't like your kind */
continue;
}
if (S_obj->data == data) item = i; /* Found the requested data */
@@ -1206,7 +1206,7 @@ GMT_LOCAL char **api_process_keys (void *API, const char *string, char type, str
int new_family = 0, old_family = 0;
(void)api_key_to_family (API, s[k], &new_family, &geometry);
(void)api_key_to_family (API, s[this_k], &old_family, &geometry);
- if (new_family != old_family) int_swap (n_to_add[new_family], n_to_add[old_family]); /* Must swap our counts */
+ if (new_family != old_family) gmt_M_int_swap (n_to_add[new_family], n_to_add[old_family]); /* Must swap our counts */
}
s[this_k][K_FAMILY] = s[k][K_FAMILY]; /* Required input/output now implies this data type */
s[this_k][K_OPT] = s[k][K_OPT]; /* Required input/output now implies this option */
@@ -1216,7 +1216,7 @@ GMT_LOCAL char **api_process_keys (void *API, const char *string, char type, str
}
else if (s[k][K_DIR] == API_PRIMARY_INPUT) { /* Non-magic key: This one identified a primary input key */
(void)api_key_to_family (API, s[k], &family, &geometry); /* Get datatype, and geometry, then set how many are requested */
- if (family != GMT_NOTSET) { /* Safeguard: If family not found then we dont want to crash below... */
+ if (family != GMT_NOTSET) { /* Safeguard: If family not found then we don't want to crash below... */
if (s[k][K_DIR+1]) /* Gave an argument: This is either a number (a specific count) or + (1 or more) */
n_to_add[family] = (s[k][K_DIR+1] == '+') ? GMTAPI_UNLIMITED : atoi (&s[k][K_DIR+1]);
else
@@ -1328,7 +1328,7 @@ GMT_LOCAL int api_begin_io (struct GMTAPI_CTRL *API, unsigned int direction) {
/* Initializes the i/o mechanism for either input or output (depends on direction).
* api_begin_io must be called before any bulk data i/o is allowed.
* direction: Either GMT_IN or GMT_OUT.
- * Returns: false if successfull, true if error.
+ * Returns: false if successful, true if error.
*/
struct GMT_CTRL *GMT = NULL;
@@ -1671,8 +1671,9 @@ GMT_LOCAL size_t api_set_grdarray_size (struct GMT_CTRL *GMT, struct GMT_GRID_HE
h_tmp->complex_mode = (mode & GMT_GRID_IS_COMPLEX_MASK); /* Set the mode-to-be so that if complex the size is doubled */
if (!full_region (wesn)) {
- gmt_M_memcpy (h_tmp->wesn, wesn, 4, double); /* Use wesn instead of header info */
- gmt_adjust_loose_wesn (GMT, wesn, h); /* Subset requested; make sure wesn matches header spacing */
+ gmt_M_memcpy (h_tmp->wesn, wesn, 4, double); /* Use wesn instead of header info */
+ gmt_adjust_loose_wesn (GMT, wesn, h); /* Subset requested; make sure wesn matches header spacing */
+ gmt_M_memcpy(h_tmp->wesn, wesn, 4, double); /* And update the eventually adjusted wesn */
}
gmt_M_grd_setpad (GMT, h_tmp, GMT->current.io.pad); /* Use the system pad setting by default */
gmt_set_grddim (GMT, h_tmp); /* Computes all integer parameters */
@@ -1992,7 +1993,7 @@ GMT_LOCAL int api_next_io_source (struct GMTAPI_CTRL *API, unsigned int directio
if (S_obj->family == GMT_IS_DATASET && S_obj->fp == GMT->session.std[direction])
gmt_setmode (GMT, (int)direction); /* Windows may need to have its read mode changed from text to binary */
#endif
- kind = (S_obj->fp == GMT->session.std[direction]) ? 0 : 1; /* For mesage only: 0 if stdin/out, 1 otherwise for user pointer */
+ kind = (S_obj->fp == GMT->session.std[direction]) ? 0 : 1; /* For message only: 0 if stdin/out, 1 otherwise for user pointer */
snprintf (GMT->current.io.filename[direction], GMT_BUFSIZ, "<%s %s>", GMT_stream[kind], GMT_direction[direction]);
GMT_Report (API, GMT_MSG_LONG_VERBOSE, "%s %s %s %s %s stream\n",
operation[direction], GMT_family[S_obj->family], dir[direction], GMT_stream[kind], GMT_direction[direction]);
@@ -2010,7 +2011,7 @@ GMT_LOCAL int api_next_io_source (struct GMTAPI_CTRL *API, unsigned int directio
return (GMT_ERROR_ON_FDOPEN);
}
S_obj->method = S_obj->method - GMT_IS_FDESC + GMT_IS_STREAM; /* Since fp now holds stream pointer an we have lost the handle */
- kind = (S_obj->fp == GMT->session.std[direction]) ? 0 : 1; /* For mesage only: 0 if stdin/out, 1 otherwise for user pointer */
+ kind = (S_obj->fp == GMT->session.std[direction]) ? 0 : 1; /* For message only: 0 if stdin/out, 1 otherwise for user pointer */
snprintf (GMT->current.io.filename[direction], GMT_BUFSIZ, "<%s %s>", GMT_stream[kind], GMT_direction[direction]);
GMT_Report (API, GMT_MSG_LONG_VERBOSE, "%s %s %s %s %s stream via supplied file descriptor\n",
operation[direction], GMT_family[S_obj->family], dir[direction], GMT_stream[kind], GMT_direction[direction]);
@@ -2288,7 +2289,7 @@ GMT_LOCAL int api_is_registered (struct GMTAPI_CTRL *API, enum GMT_enum_family f
/* Checks to see if the given data pointer has already been registered.
* This can happen for grids which first gets registered reading the header
* and then is registered again when reading the whole grid. In those cases
- * we dont want to register them twice.
+ * we don't want to register them twice.
*/
unsigned int i;
int item;
@@ -3251,7 +3252,7 @@ GMT_LOCAL struct GMT_DATASET *api_import_dataset (struct GMTAPI_CTRL *API, int o
if (object_ID == GMT_NOTSET) { /* Means there is more than one source: Merge all registered data tables into a single virtual data set */
last_item = API->n_objects - 1; /* Must check all registered objects */
allocate = true;
- n_alloc = GMT_TINY_CHUNK; /* We dont expect that many files to be given initially */
+ n_alloc = GMT_TINY_CHUNK; /* We don't expect that many files to be given initially */
}
else { /* Requested a single, specific data table/file */
int flag = (API->module_input) ? GMTAPI_MODULE_INPUT : GMTAPI_OPTION_INPUT; /* Needed by Validate_ID */
@@ -3400,6 +3401,7 @@ GMT_LOCAL struct GMT_DATASET *api_import_dataset (struct GMTAPI_CTRL *API, int o
API->object[new_item]->data = D_obj;
API->object[new_item]->status = GMT_IS_USED; /* Mark as read */
D_obj->alloc_level = API->object[new_item]->alloc_level; /* Since allocated here */
+ D_obj->geometry = S_obj->geometry; /* Since provided when registered */
update = via = true;
break;
@@ -3456,6 +3458,7 @@ GMT_LOCAL struct GMT_DATASET *api_import_dataset (struct GMTAPI_CTRL *API, int o
API->object[new_item]->data = D_obj;
API->object[new_item]->status = GMT_IS_USED; /* Mark as read */
D_obj->alloc_level = API->object[new_item]->alloc_level; /* Since allocated here */
+ D_obj->geometry = S_obj->geometry; /* Since provided when registered */
update = via = true;
break;
@@ -3486,6 +3489,7 @@ GMT_LOCAL struct GMT_DATASET *api_import_dataset (struct GMTAPI_CTRL *API, int o
API->object[new_item]->data = D_obj;
API->object[new_item]->status = GMT_IS_USED; /* Mark as read */
D_obj->alloc_level = API->object[new_item]->alloc_level; /* Since allocated here */
+ D_obj->geometry = S_obj->geometry; /* Since provided when registered */
S_obj->family = GMT_IS_VECTOR; /* Done with the via business now */
update = via = true;
break;
@@ -3536,8 +3540,8 @@ GMT_LOCAL struct GMT_DATASET *api_import_dataset (struct GMTAPI_CTRL *API, int o
if (!D_obj->min) D_obj->min = gmt_M_memory (GMT, NULL, D_obj->n_columns, double);
if (!D_obj->max) D_obj->max = gmt_M_memory (GMT, NULL, D_obj->n_columns, double);
}
- gmtlib_set_dataset_minmax (GMT, D_obj); /* Set the min/max values for the entire dataset */
D_obj->geometry = geometry; /* Since gmtlib_read_table may have changed it */
+ gmtlib_set_dataset_minmax (GMT, D_obj); /* Set the min/max values for the entire dataset */
if (!via) API->object[this_item]->data = D_obj; /* Retain pointer to the allocated data so we use garbage collection later */
return (D_obj);
}
@@ -4080,7 +4084,7 @@ GMT_LOCAL struct GMT_IMAGE *api_import_image (struct GMTAPI_CTRL *API, int objec
}
GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Reading image from file %s\n", S_obj->filename);
if (gmt_M_err_pass (GMT, gmtlib_read_image (GMT, S_obj->filename, I_obj, S_obj->wesn,
- GMT->current.io.pad, mode), S_obj->filename))
+ I_obj->header->pad, mode), S_obj->filename))
return_null (API, GMT_IMAGE_READ_ERROR);
if (gmt_M_err_pass (GMT, gmtlib_image_BC_set (GMT, I_obj), S_obj->filename))
return_null (API, GMT_IMAGE_BC_ERROR); /* Set boundary conditions */
@@ -4319,7 +4323,7 @@ GMT_LOCAL int api_export_image (struct GMTAPI_CTRL *API, int object_ID, unsigned
break;
case GMT_IS_DUPLICATE: /* Duplicate GMT image to a new GMT_IMAGE container object */
- if (S_obj->resource) return (gmtapi_report_error (API, GMT_PTR_NOT_NULL)); /* The ouput resource pointer must be NULL */
+ if (S_obj->resource) return (gmtapi_report_error (API, GMT_PTR_NOT_NULL)); /* The output resource pointer must be NULL */
if (mode & GMT_GRID_HEADER_ONLY) return (gmtapi_report_error (API, GMT_NOT_A_VALID_MODE));
GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Duplicating image data to GMT_IMAGE memory location\n");
I_copy = GMT_Duplicate_Data (API, GMT_IS_IMAGE, GMT_DUPLICATE_DATA, I_obj);
@@ -4650,6 +4654,7 @@ GMT_LOCAL int api_export_grid (struct GMTAPI_CTRL *API, int object_ID, unsigned
if (S_obj->region) { /* See if this is really a subset or just the same region as the grid */
if (G_obj->header->wesn[XLO] == S_obj->wesn[XLO] && G_obj->header->wesn[XHI] == S_obj->wesn[XHI] && G_obj->header->wesn[YLO] == S_obj->wesn[YLO] && G_obj->header->wesn[YHI] == S_obj->wesn[YHI]) S_obj->region = false;
}
+ if (mode & GMT_GRID_IS_GEO) gmt_set_geographic (GMT, GMT_OUT); /* From API to tell grid is geographic */
gmtlib_grd_set_units (GMT, G_obj->header); /* Ensure unit strings are set, regardless of destination */
switch (S_obj->method) {
case GMT_IS_FILE: /* Name of a grid file on disk */
@@ -5246,7 +5251,7 @@ GMT_LOCAL struct GMTAPI_DATA_OBJECT * api_make_dataobject (struct GMTAPI_CTRL *A
}
/*! . */
-GMT_LOCAL int api_colors2cpt (struct GMTAPI_CTRL *API, char **str) {
+GMT_LOCAL int api_colors2cpt (struct GMTAPI_CTRL *API, char **str, unsigned int *mode) {
/* Take comma-separated color entries given in lieu of a file and build a linear, discrete CPT.
* This may be converted to a continuous CPT if -Z is used by makecpt/grd2cpt.
* We check if a color is valid then write the given entries verbatim to the temp file.
@@ -5283,13 +5288,40 @@ GMT_LOCAL int api_colors2cpt (struct GMTAPI_CTRL *API, char **str) {
return (GMT_NOTSET);
}
- while (gmt_strtok (*str, ",", &pos, color)) { /* Get color entries */
- if (gmt_getrgb (API->GMT, color, rgb)) {
+ if ((*mode) & GMT_CPT_CONTINUOUS) { /* Make a continuous cpt from the colors */
+ char last_color[GMT_LEN256] = {""};
+ if (!gmt_strtok (*str, ",", &pos, last_color)) { /* Get 1st color entry */
+ GMT_Report (API, GMT_MSG_NORMAL, "Unable to find 1st color entry in: %s\n", *str);
+ return (GMT_NOTSET);
+ }
+ if (gmt_getrgb (API->GMT, last_color, rgb)) {
GMT_Report (API, GMT_MSG_NORMAL, "Badly formatted color entry: %s\n", color);
return (GMT_NOTSET);
}
- fprintf (fp, "%d\t%s\t%d\t%s\n", z, color, z+1, color);
- z++; /* Increment z-slice values */
+ while (gmt_strtok (*str, ",", &pos, color)) { /* Get color entries */
+ if (gmt_getrgb (API->GMT, color, rgb)) {
+ GMT_Report (API, GMT_MSG_NORMAL, "Badly formatted color entry: %s\n", color);
+ return (GMT_NOTSET);
+ }
+ fprintf (fp, "%d\t%s\t%d\t%s\n", z, last_color, z+1, color);
+ strncpy (last_color, color, GMT_LEN256-1);
+ z++; /* Increment z-slice values */
+ }
+ *mode -= GMT_CPT_CONTINUOUS; /* Served its purpose */
+ if (z == 0) { /* Needed at least two colors to specify a ramp */
+ GMT_Report (API, GMT_MSG_NORMAL, "Cannot make a continuous color ramp from a single color: %s\n", *str);
+ return (GMT_NOTSET);
+ }
+ }
+ else {
+ while (gmt_strtok (*str, ",", &pos, color)) { /* Get color entries */
+ if (gmt_getrgb (API->GMT, color, rgb)) {
+ GMT_Report (API, GMT_MSG_NORMAL, "Badly formatted color entry: %s\n", color);
+ return (GMT_NOTSET);
+ }
+ fprintf (fp, "%d\t%s\t%d\t%s\n", z, color, z+1, color);
+ z++; /* Increment z-slice values */
+ }
}
fclose (fp);
@@ -5404,7 +5436,7 @@ GMT_LOCAL int api_memory_registered (struct GMTAPI_CTRL *API, enum GMT_enum_fami
if (family == GMT_IS_COORD) return (GMT_NOTSET); /* Coordinate arrays cannot be a registered memory resource */
if ((object_ID = api_decode_id (resource)) == GMT_NOTSET) return (GMT_NOTSET); /* Not a registered resource */
if ((item = gmtapi_validate_id (API, family, object_ID, direction, GMT_NOTSET)) == GMT_NOTSET) return (GMT_NOTSET); /* Not the right attributes */
- if (module_input && direction == GMT_IN) API->object[item]->module_input = true; /* Flag this object as a module input resouce */
+ if (module_input && direction == GMT_IN) API->object[item]->module_input = true; /* Flag this object as a module input resource */
return (object_ID); /* resource is a registered and valid item */
}
@@ -5489,7 +5521,7 @@ int gmtapi_validate_id (struct GMTAPI_CTRL *API, int family, int object_ID, int
if (!(family == GMT_NOTSET || (int)S_obj->family == family)) { /* Not the required data type; check for exceptions... */
if (family == GMT_IS_DATASET && (S_obj->family == GMT_IS_VECTOR || S_obj->family == GMT_IS_MATRIX))
S_obj->family = GMT_IS_DATASET; /* Vectors or Matrix masquerading as dataset are valid. Change their family here. */
- else /* We dont like your kind */
+ else /* We don't like your kind */
continue;
}
if (object_ID == GMT_NOTSET && (int)S_obj->direction == direction) item = i; /* Pick the first object with the specified direction */
@@ -5498,7 +5530,7 @@ int gmtapi_validate_id (struct GMTAPI_CTRL *API, int family, int object_ID, int
else if ((int)S_obj->ID == object_ID) item = i; /* Pick the requested object */
if (item != GMT_NOTSET && direction == GMT_IN && module_input != GMT_NOTSET) { /* Must check that object's module_input status matches */
bool status = (module_input == GMTAPI_MODULE_INPUT) ? true : false;
- if (status != S_obj->module_input) item = GMT_NOTSET; /* Not the right type of input resouce */
+ if (status != S_obj->module_input) item = GMT_NOTSET; /* Not the right type of input resource */
}
}
if (item == GMT_NOTSET) { API->error = GMT_NOT_A_VALID_ID; return (GMT_NOTSET); } /* No such object found */
@@ -5631,7 +5663,7 @@ void *GMT_Create_Session (const char *session, unsigned int pad, unsigned int mo
API->pad = pad; /* Preserve the default pad value for this session */
API->print_func = (print_func == NULL) ? api_print_func : print_func; /* Pointer to the print function to use in GMT_Message|Report */
API->do_not_exit = mode & GMT_SESSION_NOEXIT; /* if set, then api_exit & GMT_exit are simply a return; otherwise they call exit */
- API->mode = mode & GMT_SESSION_EXTERNAL; /* if false|0 then we dont list read and write as modules */
+ API->mode = mode & GMT_SESSION_EXTERNAL; /* if false|0 then we don't list read and write as modules */
API->shape = (mode & GMT_SESSION_COLMAJOR) ? GMT_IS_COL_FORMAT : GMT_IS_ROW_FORMAT; /* if set then we must use column-major format [row-major] */
if (API->internal) API->leave_grid_scaled = 1; /* Do NOT undo grid scaling after write since modules do not reuse grids we save some CPU */
if (session) {
@@ -5759,7 +5791,7 @@ GMT_LOCAL int api_encode_id (void *V_API, char *filename, int object_ID) {
* The lower-level GMT i/o machinery will handle complications such as 0 (stdin), 1, or
* many data files so that the modules themselves simply read the next record with
* GMT_Get_Record until EOF (as if there is only one input source). Modules that need
- * to store all the data in memory for futher processing will call api_get_data instead,
+ * to store all the data in memory for further processing will call api_get_data instead,
* which will return a single entity (grid, dataset, cpt, etc).
*
* Destination registration is done in the same way, with the exception that for most
@@ -5800,7 +5832,7 @@ int GMT_Register_IO (void *V_API, unsigned int family, unsigned int method, unsi
* geometry: One of GMT_IS_{TEXT|POINT|LINE|POLY|SURF} (the last for GMT grids)
* input: Pointer to the source filename, stream, handle, array position, etc.
* wesn: Grid subset defined by 4 doubles; otherwise use NULL
- * RETURNED: Unique ID assigned to this input resouce, or GMT_NOTSET (-1) if error.
+ * RETURNED: Unique ID assigned to this input resource, or GMT_NOTSET (-1) if error.
*
* An error status is returned if problems are encountered via API->error [GMT_OK].
*
@@ -5828,7 +5860,7 @@ int GMT_Register_IO (void *V_API, unsigned int family, unsigned int method, unsi
* geometry: One of GMT_IS_{TEXT|POINT|LINE|POLY|SURF} (the last for GMT grids)
* output: Pointer to the destination filename, stream, handle, array position, etc.
* wesn: Grid subset defined by 4 doubles; otherwise use NULL
- * RETURNED: Unique ID assigned to this output resouce, or GMT_NOTSET (-1) if error.
+ * RETURNED: Unique ID assigned to this output resource, or GMT_NOTSET (-1) if error.
*
* An error status is returned if problems are encountered via API->error [GMT_OK].
*
@@ -6023,7 +6055,7 @@ int GMT_Init_IO (void *V_API, unsigned int family, unsigned int geometry, unsign
* n_args: Either 0 if we pass linked option structs or argc if we pass argv[]
* args: Either linked list of program option arguments (n_args == 0) or char *argv[].
*
- * Returns: false if successfull, true if error.
+ * Returns: false if successful, true if error.
*/
int object_ID; /* ID of first object [only for debug purposes - not used in this function; ignore -Wunused-but-set-variable warning */
struct GMT_OPTION *head = NULL;
@@ -6063,7 +6095,7 @@ int GMT_Begin_IO (void *V_API, unsigned int family, unsigned int direction, unsi
* family: The family of data must be GMT_IS_DATASET or TEXTSET.
* direction: Either GMT_IN or GMT_OUT.
* header: Either GMT_HEADER_ON|OFF, controls the writing of the table start header info block
- * Returns: false if successfull, true if error.
+ * Returns: false if successful, true if error.
*/
int error, item;
struct GMTAPI_CTRL *API = NULL;
@@ -6257,7 +6289,7 @@ int GMT_End_IO (void *V_API, unsigned int direction, unsigned int mode) {
* direction: Either GMT_IN or GMT_OUT
* mode: Either GMT_IO_DONE (nothing), GMT_IO_RESET (let all resources be accessible again), or GMT_IO_UNREG (unreg all accessed resources).
* NOTE: Mode not yet implemented until we see a use.
- * Returns: false if successfull, true if error.
+ * Returns: false if successful, true if error.
* For memory output we finalized the container, register it, sets the alloc_level to the calling entity
* and pass the resource upwards.
*/
@@ -6619,7 +6651,7 @@ void *GMT_Read_Data (void *V_API, unsigned int family, unsigned int method, unsi
if (family == GMT_IS_PALETTE && !just_get_data) { /* CPTs must be handled differently since the master files live in share/cpt and filename is missing .cpt */
int c_err = 0;
char CPT_file[GMT_BUFSIZ] = {""}, *file = strdup (input);
- if ((c_err = api_colors2cpt (API, &file)) < 0) { /* Maybe converted colors to new CPT */
+ if ((c_err = api_colors2cpt (API, &file, &mode)) < 0) { /* Maybe converted colors to new CPT */
gmt_M_str_free (input);
gmt_M_str_free (file);
return_null (API, GMT_CPT_READ_ERROR); /* Failed in the conversion */
@@ -6879,7 +6911,7 @@ int GMT_Write_Data (void *V_API, unsigned int family, unsigned int method, unsig
We do this below and get in_ID (the id of the data to write), while out_ID is the id of where
things go (the output "memory"). Having the in_ID we get the array index in_item that matches
this ID and of the correct family. We set direction to GMT_NOTSET since otherwise we may be
- denied a hit as we dont really know what the direction is for in_ID. Once in_item has been
+ denied a hit as we don't really know what the direction is for in_ID. Once in_item has been
secured we transfer ownership of this data from the in_ID object to the out_ID object. That
way we avoid accidental premature freeing of the data object via the in_ID object since it now
will live on via out_ID and outlive the current module.
@@ -6981,12 +7013,52 @@ static inline int api_wind_to_next_textrecord (int64_t *count, struct GMT_TEXTSE
}
/*! . */
+int GMT_Set_Geometry (void *V_API, unsigned int direction, unsigned int geometry) {
+ /* Sets the geometry of direction resource for record-by-record i/o.
+ * This currently only applies to external interfaces receiving data via rec-by-rc writing.
+ */
+ unsigned int method;
+ struct GMTAPI_DATA_OBJECT *S_obj = NULL;
+ struct GMTAPI_CTRL *API = NULL;
+
+ if (V_API == NULL) return_error (V_API, GMT_NOT_A_SESSION);
+ API = api_get_api_ptr (V_API);
+ if (!API->io_enabled[GMT_OUT]) return_error (API, GMT_ACCESS_NOT_ENABLED);
+ API->error = GMT_NOERROR;
+
+ S_obj = API->object[API->current_item[direction]]; /* Shorthand for the data source we are working on */
+ if (S_obj == NULL) return_error (API, GMT_OBJECT_NOT_FOUND); /* No such object */
+ method = api_set_method (S_obj); /* Get the actual method to use */
+ switch (method) { /* File, array, stream etc ? */
+ case GMT_IS_DUPLICATE:
+ case GMT_IS_REFERENCE:
+ if (S_obj->family == GMT_IS_DATASET) {
+ struct GMT_DATASET *D_obj = S_obj->resource;
+ if (!D_obj) /* Not allocated yet?*/
+ GMT_Report (API, GMT_MSG_DEBUG, "GMTAPI: Warning: GMT_Set_Geometry called but no object available\n");
+ else
+ D_obj->geometry = geometry;
+ }
+ break;
+ default: /* For all others there is no geometry requirement, so quietly skip */
+ break;
+ }
+ return GMT_NOERROR;
+}
+
+#ifdef FORTRAN_API
+int GMT_Set_Geometry_ (unsigned int *direction, unsigned int *geometry) { /* Fortran version: We pass the global GMT_FORTRAN structure */
+ return (GMT_Set_Geometry (GMT_FORTRAN, *direction, *geometry));
+}
+#endif
+
+/*! . */
void *GMT_Get_Record (void *V_API, unsigned int mode, int *retval) {
/* Retrieves the next data record from the virtual input source and
* returns the number of columns found via *retval (unless retval == NULL).
* If current record is a segment header then we return 0.
* If we reach EOF then we return EOF.
- * mode is either GMT_READ_DOUBLE (data columns), GMT_READ_TEXT (text string) or
+ * mode is either GMT_READ_DATA (data columns), GMT_READ_TEXT (text string) or
* GMT_READ_MIXED (expect data but tolerate read errors).
* Also, if (mode | GMT_READ_FILEBREAK) is true then we will return empty-handed
* when we get to the end of a file except the final file (which is EOF).
@@ -7262,7 +7334,7 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
* We use mode to signal the kind of record:
* GMT_WRITE_TABLE_HEADER: Write an ASCII table header
* GMT_WRITE_SEGMENT_HEADER: Write an ASCII or binary segment header
- * GMT_WRITE_DOUBLE: Write an ASCII or binary data record
+ * GMT_WRITE_DATA: Write an ASCII or binary data record
* GMT_WRITE_TEXT: Write an ASCII data record
* For text: If record == NULL use internal current record or header.
* Returns 0 if a record was written successfully (See what -s[r] can do).
@@ -7302,7 +7374,7 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
if (record) strncpy (API->GMT->current.io.segment_header, record, GMT_BUFSIZ-1); /* Default to last segment record if NULL */
gmt_write_segmentheader (API->GMT, S_obj->fp, API->GMT->common.b.ncol[GMT_OUT]); error = 1; /* Write one item */
break;
- case GMT_WRITE_DOUBLE: /* Export either a formatted ASCII data record or a binary record */
+ case GMT_WRITE_DATA: /* Export either a formatted ASCII data record or a binary record */
if (API->GMT->common.b.ncol[GMT_OUT] == UINT_MAX) API->GMT->common.b.ncol[GMT_OUT] = API->GMT->common.b.ncol[GMT_IN];
error = API->GMT->current.io.output (API->GMT, S_obj->fp, API->GMT->common.b.ncol[GMT_OUT], record);
break;
@@ -7334,7 +7406,14 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
D_obj->n_columns = D_obj->table[0]->n_columns = API->GMT->common.b.ncol[GMT_OUT];
}
T_obj = D_obj->table[0]; /* GMT_Put_Record only writes one table with one or more segments */
- if (D_obj->n_columns == 0) D_obj->n_columns = T_obj->n_columns = API->GMT->common.b.ncol[GMT_OUT]; /* Last resort */
+ if ((D_obj->n_columns == 0 || D_obj->n_columns == GMT_MAX_COLUMNS || D_obj->n_columns < API->GMT->common.b.ncol[GMT_OUT]) && mode == GMT_WRITE_DATA) { /* Number of columns not set or set incorrectly, see if -b has it */
+ if (API->GMT->common.b.ncol[GMT_OUT])
+ D_obj->n_columns = T_obj->n_columns = API->GMT->common.b.ncol[GMT_OUT];
+ else {
+ GMT_Report (API, GMT_MSG_DEBUG, "GMTAPI: Error: GMT_Put_Record does not know the number of columns\n");
+ return_error (API, GMT_N_COLS_NOT_SET);
+ }
+ }
count = API->GMT->current.io.curr_pos[GMT_OUT]; /* Short hand to counters for table (not used as == 0), segment, row */
switch (mode) {
case GMT_WRITE_TABLE_HEADER: /* Export a table header record; skip if binary */
@@ -7364,7 +7443,7 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
T_obj->segment[count[GMT_SEG]]->header = strdup (s);
}
break;
- case GMT_WRITE_DOUBLE: /* Export a segment row */
+ case GMT_WRITE_DATA: /* Export a segment row */
if (gmt_skip_output (API->GMT, record, T_obj->n_columns)) /* Record was skipped via -s[a|r] */
break;
if (count[GMT_SEG] == -1) { /* Most likely a file with one segment but no segment header */
@@ -7460,7 +7539,7 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
size_t size;
col = (API->GMT->common.o.active) ? API->GMT->common.o.n_cols : API->GMT->common.b.ncol[GMT_OUT]; /* Number of columns needed to hold the data records */
if (col == 0 && mode == GMT_WRITE_SEGMENT_HEADER && API->GMT->current.io.multi_segments[GMT_OUT]) {
- /* Cannot place the NaN records since we dont know the number of columns yet */
+ /* Cannot place the NaN records since we don't know the number of columns yet */
S_obj->delay++;
S_obj->rec++; /* Since the NaN-record is an actual data record that encodes a segment break */
API->current_rec[GMT_OUT]++; /* Since the NaN-record is an actual data record that encodes a segment break */
@@ -7487,7 +7566,7 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
API->current_rec[GMT_OUT]++; /* Since the NaN-record becomes an actual data record that encodes a segment break */
M_obj->n_rows++; /* Same */
}
- else if (mode == GMT_WRITE_DOUBLE) { /* Data record */
+ else if (mode == GMT_WRITE_DATA) { /* Data record */
if (!record)
GMT_Report (API, GMT_MSG_NORMAL, "GMTAPI: GMT_Put_Record passed a NULL data pointer for method GMT_IS_DUPLICATE_VIA_MATRIX\n");
else {
@@ -7513,7 +7592,7 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
if (S_obj->resource == NULL) { /* First time allocating space; S_obj->n_rows == S_obj->n_alloc == 0 */
col = (API->GMT->common.o.active) ? API->GMT->common.o.n_cols : API->GMT->common.b.ncol[GMT_OUT]; /* Number of columns needed to hold the data records */
if (col == 0 && mode == GMT_WRITE_SEGMENT_HEADER && API->GMT->current.io.multi_segments[GMT_OUT]) {
- /* Cannot place the NaN records since we dont know the number of columns yet */
+ /* Cannot place the NaN records since we don't know the number of columns yet */
S_obj->delay++;
S_obj->rec++; /* Since the NaN-record is an actual data record that encodes a segment break */
API->current_rec[GMT_OUT]++; /* Since the NaN-record is an actual data record that encodes a segment break */
@@ -7539,7 +7618,7 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
S_obj->rec++; /* Since the NaN-record is an actual data record that encodes a segment break */
V_obj->n_rows++; /* Same */
}
- else if (mode == GMT_WRITE_DOUBLE) { /* Data record */
+ else if (mode == GMT_WRITE_DATA) { /* Data record */
if (!record)
GMT_Report (API, GMT_MSG_NORMAL, "GMTAPI: GMT_Put_Record passed a NULL data pointer for method GMT_IS_DATASET_ARRAY\n");
else {
@@ -7564,7 +7643,7 @@ int GMT_Put_Record (void *V_API, unsigned int mode, void *record) {
break;
}
- if (!error && (mode == GMT_WRITE_DOUBLE || mode == GMT_WRITE_TEXT)) { /* Only increment if we placed a data record on the output */
+ if (!error && (mode == GMT_WRITE_DATA || mode == GMT_WRITE_TEXT)) { /* Only increment if we placed a data record on the output */
API->current_rec[GMT_OUT]++;
S_obj->rec++;
}
@@ -7948,7 +8027,7 @@ void *GMT_Create_Data (void *V_API, unsigned int family, unsigned int geometry,
/* Create an empty container of the requested kind and allocate space for content.
* The known families are GMT_IS_{DATASET,TEXTSET,GRID,PALETTE,IMAGE,POSTSCRIPT}, but we
* also allow for creation of the containers for GMT_IS_{VECTOR,MATRIX}. Note
- * that for VECTOR|MATRIX we dont allocate space to hold data as it is the users
+ * that for VECTOR|MATRIX we don't allocate space to hold data as it is the users
* responsibility to hook their data pointers in. The VECTOR allocates the array
* of column vector type and data pointers.
* Geometry should reflect the resource, e.g. GMT_IS_SURFACE for grid, etc.
@@ -8337,7 +8416,6 @@ unsigned int GMT_FFT_Option (void *V_API, char option, unsigned int dim, const c
GMT_Message (V_API, GMT_TIME_NONE, "\t-%c Choose or inquire about suitable %s %s for %u-D FFT, and set modifiers.\n", option, data_type[d1], dim_ref[d1], dim);
GMT_Message (V_API, GMT_TIME_NONE, "\t Setting the FFT %s:\n", dim_ref[d1]);
GMT_Message (V_API, GMT_TIME_NONE, "\t -Nf will force the FFT to use the %s of the %s.\n", dim_ref[d1], data_type[d1]);
- GMT_Message (V_API, GMT_TIME_NONE, "\t -Nq will inQuire about more suitable dimensions, report them, then continue.\n");
GMT_Message (V_API, GMT_TIME_NONE, "\t -Ns will list Singleton's [1967] recommended %s, then exit.\n", dim_ref[d1]);
GMT_Message (V_API, GMT_TIME_NONE, "\t -N%s will do FFT on array size %s (Must be >= %s size).\n", dim_name[d1], dim_name[d1], data_type[d1]);
GMT_Message (V_API, GMT_TIME_NONE, "\t Default chooses %s >= %s %s to optimize speed and accuracy of the FFT.\n", dim_ref[d1], data_type[d1], dim_ref[d1]);
@@ -8361,6 +8439,8 @@ unsigned int GMT_FFT_Option (void *V_API, char option, unsigned int dim, const c
GMT_Message (V_API, GMT_TIME_NONE, "\t +z[p] will write raw complex spectrum to two separate %s files.\n", data_type[d1]);
GMT_Message (V_API, GMT_TIME_NONE, "\t File name will have _real/_imag inserted before the file extensions.\n");
GMT_Message (V_API, GMT_TIME_NONE, "\t Append p to store polar forms, using _mag/_phase instead.\n");
+ GMT_Message (V_API, GMT_TIME_NONE, "\t Append modifiers for messages:\n");
+ GMT_Message (V_API, GMT_TIME_NONE, "\t +v will report all suitable dimensions (except when -Nf is selected).\n");
return_error (V_API, GMT_NOERROR);
}
@@ -8412,6 +8492,7 @@ void *GMT_FFT_Parse (void *V_API, char option, unsigned int dim, const char *arg
info->taper_width = -1.0; /* Not set yet */
info->taper_mode = GMT_FFT_EXTEND_NOT_SET; /* Not set yet */
info->trend_mode = GMT_FFT_REMOVE_NOT_SET; /* Not set yet */
+ info->info_mode = GMT_FFT_UNSPECIFIED; /* Not set yet */
if ((c = strchr (args, '+'))) { /* Handle modifiers */
while ((gmt_strtok (c, "+", &pos, p))) {
@@ -8436,6 +8517,7 @@ void *GMT_FFT_Parse (void *V_API, char option, unsigned int dim, const char *arg
info->save[GMT_IN] = true;
if (p[1]) strncpy (info->suffix, &p[1], GMT_LEN64-1);
break;
+ case 'v': info->verbose = true; break; /* Report FFT suggestions */
case 'z': /* Save FFT output in two files; append p for polar form */
info->save[GMT_OUT] = true;
if (p[1] == 'p') info->polar = true;
@@ -8456,8 +8538,8 @@ void *GMT_FFT_Parse (void *V_API, char option, unsigned int dim, const char *arg
info->taper_width = 100.0; /* Taper over entire margin strip by default */
switch (args[0]) {
- case 'f': case '\0': info->info_mode = GMT_FFT_FORCE; break;
- case 'q': info->info_mode = GMT_FFT_QUERY; break;
+ case 'f': case '\0': info->info_mode = GMT_FFT_FORCE; break; /* Default is force actual grid dimensions */
+ case 'q': info->verbose = true; break; /* No longer a mode. Backwards compatibility; see +v instead */
case 's': info->info_mode = GMT_FFT_LIST; break;
default:
if (dim == 2U) { /* 2-D */
@@ -8572,7 +8654,7 @@ GMT_LOCAL void fft_taper2d (struct GMT_CTRL *GMT, struct GMT_GRID *Grid, struct
i_data_start = GMT->current.io.pad[XLO]; /* Some shorthands for readability */
j_data_start = GMT->current.io.pad[YHI];
mx = h->mx;
- one = (F->taper_mode == GMT_FFT_EXTEND_NONE) ? 0 : 1; /* 0 is the boundry point which we want to taper to 0 for the interior taper */
+ one = (F->taper_mode == GMT_FFT_EXTEND_NONE) ? 0 : 1; /* 0 is the boundary point which we want to taper to 0 for the interior taper */
if (width_percent == 0) {
GMT_Report (GMT->parent, GMT_MSG_LONG_VERBOSE, "Tapering has been disabled via +t0\n");
@@ -8682,14 +8764,14 @@ GMT_LOCAL void fft_taper2d (struct GMT_CTRL *GMT, struct GMT_GRID *Grid, struct
}
/*! . */
-GMT_LOCAL struct GMT_FFT_WAVENUMBER * api_fft_init_2d (struct GMTAPI_CTRL *API, struct GMT_GRID *G, unsigned int mode, void *v_info) {
+GMT_LOCAL struct GMT_FFT_WAVENUMBER *api_fft_init_2d (struct GMTAPI_CTRL *API, struct GMT_GRID *G, unsigned int mode, void *v_info) {
/* Initialize grid dimensions for FFT machinery and set up wavenumbers */
unsigned int k, factors[32];
uint64_t node;
size_t worksize;
bool stop;
double tdummy, edummy;
- struct GMT_FFT_SUGGESTION fft_sug[3];
+ struct GMT_FFT_SUGGESTION fft_sug[GMT_FFT_N_SUGGEST];
struct GMT_FFT_INFO *F = NULL, *F_in = api_get_fftinfo_ptr (v_info);
struct GMT_FFT_WAVENUMBER *K = NULL;
struct GMT_CTRL *GMT = NULL;
@@ -8704,7 +8786,7 @@ GMT_LOCAL struct GMT_FFT_WAVENUMBER * api_fft_init_2d (struct GMTAPI_CTRL *API,
gmt_M_memcpy (F, F_in, 1, struct GMT_FFT_INFO);
if (F->K) GMT_Report (API, GMT_MSG_DEBUG, "Warning: F->K already set; investigate.\n");
}
- if (!F->set) { /* User is accepting the default values of extend via edge-point symmetry over 100% of margin */
+ if (!F->set || F->info_mode == GMT_FFT_UNSPECIFIED) { /* User is accepting the default values of extend via edge-point symmetry over 100% of margin */
F->info_mode = GMT_FFT_EXTEND_POINT_SYMMETRY;
F->taper_width = 100.0;
F->set = true;
@@ -8724,17 +8806,17 @@ GMT_LOCAL struct GMT_FFT_WAVENUMBER * api_fft_init_2d (struct GMTAPI_CTRL *API,
F->n_rows = G->header->n_rows;
}
else {
- gmtlib_suggest_fft_dim (GMT, G->header->n_columns, G->header->n_rows, fft_sug, (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE) || F->info_mode == GMT_FFT_QUERY));
- if (fft_sug[1].totalbytes < fft_sug[0].totalbytes) {
+ gmtlib_suggest_fft_dim (GMT, G->header->n_columns, G->header->n_rows, fft_sug, (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE) || F->verbose));
+ if (fft_sug[GMT_FFT_ACCURATE].totalbytes < fft_sug[GMT_FFT_FAST].totalbytes) {
/* The most accurate solution needs same or less storage
* as the fastest solution; use the most accurate's dimensions */
- F->n_columns = fft_sug[1].n_columns;
- F->n_rows = fft_sug[1].n_rows;
+ F->n_columns = fft_sug[GMT_FFT_ACCURATE].n_columns;
+ F->n_rows = fft_sug[GMT_FFT_ACCURATE].n_rows;
}
else {
/* Use the sizes of the fastest solution */
- F->n_columns = fft_sug[0].n_columns;
- F->n_rows = fft_sug[0].n_rows;
+ F->n_columns = fft_sug[GMT_FFT_FAST].n_columns;
+ F->n_rows = fft_sug[GMT_FFT_FAST].n_rows;
}
}
}
@@ -8785,7 +8867,6 @@ GMT_LOCAL struct GMT_FFT_WAVENUMBER * api_fft_init_2d (struct GMTAPI_CTRL *API,
G->data = f; /* Attach the new, larger aligned memory */
G->header->complex_mode = GMT_GRID_IS_COMPLEX_REAL; /* Flag as complex grid with real components only */
G->header->size = new_size; /* Update the size of complex grid */
- gmtlib_grd_real_interleave (GMT, G->header, G->data); /* Do the multiplexing RRRR.. to R_R_R_... */
}
if (!(G->header->mx == F->n_columns && G->header->my == F->n_rows)) { /* Must re-pad, possibly re-allocate the grid */
gmt_grd_pad_on (GMT, G, GMT->current.io.pad);
@@ -8996,9 +9077,6 @@ GMT_LOCAL void fft_grd_save_fft (struct GMT_CTRL *GMT, struct GMT_GRID *G, struc
else { /* Retain real and imag components as is */
Out->data[o_ij] = re; Out->data[o_ij+offset] = im;
}
-#if 0
- fprintf (stderr, "Re/Im = %g/%g [%d,%d] -> [%d/%d]\n", re, im, row_in, col_in, row_out, col_out);
-#endif
}
}
for (k = 0; k < 2; k++) { /* Write the two grids */
@@ -9288,6 +9366,8 @@ GMT_LOCAL int api_extract_argument (char *optarg, char *argument, char **key, in
else
strcpy (argument, optarg);
}
+ else
+ strcpy (argument, optarg);
}
else
strcpy (argument, optarg);
@@ -9474,19 +9554,24 @@ struct GMT_RESOURCE *GMT_Encode_Options (void *V_API, const char *module_name, i
/* 1g. Check if this is a *contour modules with -Gf|x given. For any other -G? flavor we kill the key with ! */
else if ((!strncmp (module, "grdcontour", 10U) || !strncmp (module, "pscontour", 9U)) && (opt = GMT_Find_Option (API, 'G', *head))) {
/* Found the -G option, check if any strings are requested */
- /* If not -Gf|x then we dont want this at all and set type = ! */
+ /* If not -Gf|x then we don't want this at all and set type = ! */
type = (opt->arg[0] == 'f') ? 'T' : ((opt->arg[0] == 'x') ? 'D' : '!');
}
/* 1h. Check if this is psxy or psxyz modules with quoted or decorated lines. For any other -S~|q? flavor we kill the key with ! */
else if ((!strncmp (module, "psxy", 4U) || !strncmp (module, "psxyz", 5U)) && (opt = GMT_Find_Option (API, 'S', *head))) {
/* Found the -S option, check if we requested quoted or decorated lines via fixed or crossing lines */
- /* If not f|x then we dont want this at all and set type = ! */
+ /* If not f|x then we don't want this at all and set type = ! */
type = (!strchr ("~q", opt->arg[0]) || !strchr ("fx", opt->arg[1])) ? '!' : ((opt->arg[1] == 'x') ? 'D' : 'T');
strip_colon = (type && strchr (opt->arg, ':'));
strip_colon_opt = opt->option;
if (strip_colon)
GMT_Report (API, GMT_MSG_DEBUG, "GMT_Encode_Options: Got quoted or decorate line and must strip argument %s from colon to end\n", opt->arg);
}
+ /* 1i. Check if this is the talwani3d module, where output type is grid except with -N it is dataset */
+ else if (!strncmp (module, "talwani3d", 9U)) {
+ /* Found the -N option; set type to D */
+ type = ((opt = GMT_Find_Option (API, 'N', *head))) ? 'D' : 'G';
+ }
gmt_M_str_free (module);
@@ -9543,7 +9628,7 @@ struct GMT_RESOURCE *GMT_Encode_Options (void *V_API, const char *module_name, i
}
info[n_items].mode = (k >= 0 && api_is_required_IO (key[k][K_DIR])) ? K_PRIMARY : K_SECONDARY;
if (k >= 0 && key[k][K_DIR] != '-')
- key[k][K_DIR] = api_not_required_io (key[k][K_DIR]); /* Make sure required { becomes ( and } becomes ) so we dont add them later */
+ key[k][K_DIR] = api_not_required_io (key[k][K_DIR]); /* Make sure required { becomes ( and } becomes ) so we don't add them later */
/* Add this item to our list */
info[n_items].option = opt;
info[n_items].family = family;
@@ -9563,7 +9648,7 @@ struct GMT_RESOURCE *GMT_Encode_Options (void *V_API, const char *module_name, i
else
implicit = false;
if (implicit) {
- /* This is an implicit reference and we must explicity add the missing item by adding the questionmark */
+ /* This is an implicit reference and we must explicitly add the missing item by adding the questionmark */
info[n_items].option = opt;
info[n_items].family = family;
info[n_items].geometry = geometry;
diff --git a/src/gmt_bcr.c b/src/gmt_bcr.c
index 92c3eb1..e0ed0a3 100644
--- a/src/gmt_bcr.c
+++ b/src/gmt_bcr.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_bcr.c 16849 2016-07-22 18:45:29Z pwessel $
+ * $Id: gmt_bcr.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -236,7 +236,7 @@ double gmt_bcr_get_z_fast (struct GMT_CTRL *GMT, struct GMT_GRID *G, double xx,
this routine returns the desired interpolated value (nearest-neighbor, bilinear
B-spline or bicubic) at xx, yy.
Same as gmt_bcr_get_z but no check for Nan or outside, so calling program
- must make sure we dont go outside array or pass nans.
+ must make sure we don't go outside array or pass nans.
*/
unsigned int i, j;
diff --git a/src/gmt_calclock.c b/src/gmt_calclock.c
index 840c68e..28bc0f3 100644
--- a/src/gmt_calclock.c
+++ b/src/gmt_calclock.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_calclock.c 15822 2016-03-07 00:53:21Z pwessel $
+ * $Id: gmt_calclock.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -314,7 +314,7 @@ void gmt_gcal_from_rd (struct GMT_CTRL *GMT, int64_t date, struct GMT_GCAL *gcal
int64_t prior_days, tempdate;
int corexn, tempyear;
- /* Day of the week in 0 thru 6: */
+ /* Day of the week in 0 through 6: */
gcal->day_w = calclock_cal_imod (date, 7);
diff --git a/src/gmt_cdf.c b/src/gmt_cdf.c
index f260629..0812369 100644
--- a/src/gmt_cdf.c
+++ b/src/gmt_cdf.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_cdf.c 16849 2016-07-22 18:45:29Z pwessel $
+ * $Id: gmt_cdf.c 17507 2017-01-31 23:21:54Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -42,14 +42,14 @@
#include "gmt_internals.h"
int gmt_cdf_grd_info (struct GMT_CTRL *GMT, int ncid, struct GMT_GRID_HEADER *header, char job) {
- int err; /* Implicity by gmt_M_err_trap */
+ int err; /* Implicitly by gmt_M_err_trap */
int nm[2];
double dummy[2];
char text[GMT_GRID_COMMAND_LEN320+GMT_GRID_REMARK_LEN160];
size_t limit = 2147483647U; /* 2^31 - 1 is the max length of a 1-D array in netCDF */
nc_type z_type;
- /* Dimension ids, varibale ids, etc. */
+ /* Dimension ids, variable ids, etc. */
int side_dim, xysize_dim, x_range_id, y_range_id, z_range_id, inc_id, nm_id, z_id, dims[1];
/* Define and get dimensions and variables */
@@ -58,7 +58,7 @@ int gmt_cdf_grd_info (struct GMT_CTRL *GMT, int ncid, struct GMT_GRID_HEADER *he
if (job == 'w') {
if (header->nm > limit) { /* Print error message and let things crash */
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Your grid contains more than 2^31 - 1 nodes (%zu) and cannot be stored with the deprecated GMT netCDF format.\n", header->nm);
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Your grid contains more than 2^31 - 1 nodes (%" PRIu64 ") and cannot be stored with the deprecated GMT netCDF format.\n", header->nm);
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Please choose another grid format such as the default netCDF 4 COARDS-compliant grid format.\n");
return (GMT_DIM_TOO_LARGE);
}
diff --git a/src/gmt_common.h b/src/gmt_common.h
index 5a76510..bdae2aa 100644
--- a/src/gmt_common.h
+++ b/src/gmt_common.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_common.h 16931 2016-08-18 21:40:44Z pwessel $
+ * $Id: gmt_common.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -48,7 +48,7 @@ enum GMT_enum_gaps {GMT_NEGGAP_IN_COL = 0, /* Check if previous minus current co
#define MAX_ASPATIAL 64 /* No more than 64 aspatial options in -a */
#define GMT_SHORTHAND_OPTIONS "BJRXYcp" /* All of the shorthand options */
-#define GMT_CRITICAL_OPT_ORDER "-VJfrRb" /* If given options among these must be parsed first and in this order */
+#define GMT_CRITICAL_OPT_ORDER "V-JfrRb" /* If given options among these must be parsed first and in this order */
/*! Structure with all information given via the common GMT command-line options -R -J .. */
struct GMT_COMMON {
@@ -121,7 +121,7 @@ struct GMT_COMMON {
struct b { /* -b[i][o][s|S][d|D][#cols][cvar1/var2/...] */
bool active[2]; /* true if current input/output is in native binary format */
bool nc[2]; /* True if netcdf i/o */
- bool o_delay; /* true if we dont know number of output columns until we have read at least one input record */
+ bool o_delay; /* true if we don't know number of output columns until we have read at least one input record */
enum GMT_swap_direction swab[2]; /* k_swap_in or k_swap_out if current binary input/output must be byte-swapped, else k_swap_none */
uint64_t ncol[2]; /* Number of expected columns of input/output
0 means it will be determined by program */
diff --git a/src/gmt_compat.c b/src/gmt_compat.c
index ac7eab9..89fc392 100644
--- a/src/gmt_compat.c
+++ b/src/gmt_compat.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_compat.c 15801 2016-03-03 03:22:17Z pwessel $
+ * $Id: gmt_compat.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_config.h.in b/src/gmt_config.h.in
index 3c4ba93..8bfb9c6 100644
--- a/src/gmt_config.h.in
+++ b/src/gmt_config.h.in
@@ -1,7 +1,7 @@
/*
- * $Id: gmt_config.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: gmt_config.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/gmt_constants.h b/src/gmt_constants.h
index 0624324..343eba2 100644
--- a/src/gmt_constants.h
+++ b/src/gmt_constants.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_constants.h 16803 2016-07-14 23:45:35Z pwessel $
+ * $Id: gmt_constants.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -16,7 +16,7 @@
* Contact info: gmt.soest.hawaii.edu
*--------------------------------------------------------------------*/
/*
- * gmt_constants.h contains definitions of constants used throught GMT.
+ * gmt_constants.h contains definitions of constants used through GMT.
*
* Author: Paul Wessel
* Date: 01-OCT-2009
@@ -25,7 +25,7 @@
/*!
* \file gmt_constants.h
- * \brief Definitions of constants used throught GMT.
+ * \brief Definitions of constants used through GMT.
*/
#ifndef _GMT_CONSTANTS_H
@@ -156,7 +156,10 @@ enum GMT_swap_direction {
#define GMT_GRID_LAYOUT "TRS" /* Standard GMT scanline single-item grid */
#define GMT_IMAGE_LAYOUT "TRBa" /* Standard GMT scanline band-interleaved image */
+#define GMT_CPT_CONTINUOUS 8 /* Final CPT should be continuous */
#define GMT_CPT_TEMPORARY 16 /* CPT was built from list of colors, e.g., red,green,255,blue,... */
+#define GMT_CPT_C_REVERSE 1 /* Reverse CPT colors */
+#define GMT_CPT_Z_REVERSE 2 /* Reverse CPT z-values */
/*! Codes for grdtrack */
enum GMT_enum_tracklayout {
@@ -192,7 +195,7 @@ enum GMT_enum_model {
GMT_POLYNOMIAL = 0, GMT_CHEBYSHEV, GMT_COSINE, GMT_SINE, GMT_FOURIER
};
-/*! Various array indeces of fonts and pens */
+/*! Various array indices of fonts and pens */
enum GMT_enum_index {
GMT_PRIMARY = 0, GMT_SECONDARY = 1
};
diff --git a/src/gmt_contour.h b/src/gmt_contour.h
index ab2f31b..e811061 100644
--- a/src/gmt_contour.h
+++ b/src/gmt_contour.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_contour.h 16603 2016-06-22 02:47:24Z pwessel $
+ * $Id: gmt_contour.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_customio.c b/src/gmt_customio.c
index 41944bc..4548ecf 100644
--- a/src/gmt_customio.c
+++ b/src/gmt_customio.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_customio.c 16849 2016-07-22 18:45:29Z pwessel $
+ * $Id: gmt_customio.c 17543 2017-02-09 14:14:29Z jluis $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -1222,7 +1222,7 @@ struct srf_header6 { /* Surfer 6 file header structure */
and 5 ints followed by doubles. The problem was that after the ints the doubles were not
read correctly. It looked like everything was displaced by 4 bytes.
I than found the note about the GMT 64-bit Modification and tried the same trick.
- While that worked with gcc compiled code, it crashed whith the VC6 compiler.
+ While that worked with gcc compiled code, it crashed with the VC6 compiler.
Since of the first 3 variables, only the first is important to find out which Surfer
grid format we are dealing with, I removed them from the header definition (and jump
12 bytes before reading the header). As a result the header has now one 4 byte char +
@@ -1248,7 +1248,7 @@ struct srf_header7 { /* Surfer 7 file header structure */
double z_max; /* Maximum z value */
double rotation; /* not currently used */
double no_value; /* If GS were cleverer this would be NaN */
- char id3[4]; /* Tag ID idicating a data section (DATA) */
+ char id3[4]; /* Tag ID indicating a data section (DATA) */
int len_d; /* Length in bytes of the DATA section */
};
@@ -1921,16 +1921,26 @@ int gmt_gdal_read_grd (struct GMT_CTRL *GMT, struct GMT_GRID_HEADER *header, flo
the same test to search for nodata values other than NaN. Note that gmt_galread sets
unknown nodata return by GDAL as NaN, so in those cases this block of code is not executed */
- /* Pointer arithmetic solution that should be parallelizable */
- grid += (header->pad[YHI] * header->mx + header->pad[XLO]); /* Position pointer at start of first row taking pad into acount */
- for (row = 0; row < header->n_rows; row++) {
- for (col = 0; col < header->n_columns; col++, grid++) {
- if (*grid == (float)from_gdalread->nodata) {
- *grid = GMT->session.f_NaN;
- header->has_NaNs = GMT_GRID_HAS_NANS;
+ /* Pointer arithmetic solution that should be parallelizable (but those IFs ...) */
+ if (subset) { /* We had a Sub-region demand so n_rows * n_columns == grid's allocated size */
+ for (row = 0; row < header->n_rows; row++) {
+ for (col = 0; col < header->n_columns; col++, grid++) {
+ if (*grid == (float)from_gdalread->nodata) {
+ *grid = GMT->session.f_NaN;
+ header->has_NaNs = GMT_GRID_HAS_NANS;
+ }
+ }
+ }
+ }
+ else { /* Full region. We are scanning also the padding zone which is known to have only 0's but never mind */
+ for (row = 0; row < header->my; row++) {
+ for (col = 0; col < header->mx; col++, grid++) {
+ if (*grid == (float)from_gdalread->nodata) {
+ *grid = GMT->session.f_NaN;
+ header->has_NaNs = GMT_GRID_HAS_NANS;
+ }
}
}
- grid += (header->pad[XLO] + header->pad[XHI]); /* Advance the pad number of columns */
}
grid = &grid[0]; /* Put the pointer pointing back to first element in array */
}
diff --git a/src/gmt_customio.h b/src/gmt_customio.h
index 28c264e..1eecf00 100644
--- a/src/gmt_customio.h
+++ b/src/gmt_customio.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_customio.h 15816 2016-03-06 01:24:53Z pwessel $
+ * $Id: gmt_customio.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_dcw.c b/src/gmt_dcw.c
index 458c6e4..3d81766 100644
--- a/src/gmt_dcw.c
+++ b/src/gmt_dcw.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_dcw.c 16957 2016-08-19 06:18:06Z jluis $
+ * $Id: gmt_dcw.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -247,7 +247,7 @@ struct GMT_DATASET * gmt_DCW_operation (struct GMT_CTRL *GMT, struct GMT_DCW_SEL
ks++; /* Gave some codes */
}
if (ks == 0) return NULL; /* No countries requested */
- if (mode != GMT_DCW_REGION && F->region && (mode & 12) == 0) return NULL; /* No plotting/dumping requested, just -R */
+ if (mode != GMT_DCW_REGION && F->region && (mode & (GMT_DCW_PLOT+GMT_DCW_DUMP+GMT_DCW_EXTRACT)) == 0) return NULL; /* No plotting/dumping requested, just -R */
if (mode & GMT_DCW_REGION) { /* Wish to determine region from polygons */
if (wesn == NULL) {
@@ -447,7 +447,7 @@ struct GMT_DATASET * gmt_DCW_operation (struct GMT_CTRL *GMT, struct GMT_DCW_SEL
for (kk = 0; kk < P->n_rows; kk++) {
out[GMT_X] = P->data[GMT_X][kk];
out[GMT_Y] = P->data[GMT_Y][kk];
- GMT_Put_Record (GMT->parent, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (GMT->parent, GMT_WRITE_DATA, out);
}
seg++;
}
@@ -518,7 +518,7 @@ unsigned int gmt_DCW_list (struct GMT_CTRL *GMT, unsigned list_mode) {
struct GMT_DCW_COUNTRY *GMT_DCW_country = NULL;
struct GMT_DCW_STATE *GMT_DCW_state = NULL;
struct GMT_DCW_COUNTRY_STATE *GMT_DCW_country_with_state = NULL;
- if ((list_mode & 3) == 0) return 0;
+ if ((list_mode & GMT_DCW_LIST) == 0) return 0;
if (dcw_load_lists (GMT, &GMT_DCW_country, &GMT_DCW_state, &GMT_DCW_country_with_state, n_bodies)) return 0; /* Something went wrong */
GMT_DCW_COUNTRIES = n_bodies[0];
GMT_DCW_STATES = n_bodies[1];
@@ -538,7 +538,7 @@ unsigned int gmt_DCW_list (struct GMT_CTRL *GMT, unsigned list_mode) {
gmt_M_free (GMT, GMT_DCW_country);
gmt_M_free (GMT, GMT_DCW_state);
gmt_M_free (GMT, GMT_DCW_country_with_state);
- return ((list_mode & 3));
+ return ((list_mode & GMT_DCW_LIST));
}
void gmt_DCW_option (struct GMTAPI_CTRL *API, char option, unsigned int plot) {
@@ -601,14 +601,21 @@ unsigned int gmt_DCW_parse (struct GMT_CTRL *GMT, char option, char *args, struc
}
}
break;
- case 'l': F->mode = DCW_GET_COUNTRY; break; /* Country list */
- case 'L': F->mode = DCW_GET_COUNTRY_AND_STATE; break; /* Country and state list */
+ case 'l': /* Country list */
+ F->mode = DCW_GET_COUNTRY;
+ F->mode |= GMT_DCW_LIST;
+ break;
+ case 'L': /* Country and state list */
+ F->mode = DCW_GET_COUNTRY_AND_STATE;
+ F->mode |= GMT_DCW_LIST;
+ break;
case 'p':
if (gmt_getpen (GMT, &p[1], &(this_item->pen))) { /* Error decoding pen */
gmt_pen_syntax (GMT, option, " ", 0);
n_errors++;
}
this_item->mode |= DCW_DO_OUTLINE;
+ F->mode |= GMT_DCW_PLOT;
break;
case 'g':
if (gmt_getfill (GMT, &p[1], &(this_item->fill))) {
@@ -616,6 +623,7 @@ unsigned int gmt_DCW_parse (struct GMT_CTRL *GMT, char option, char *args, struc
n_errors++;
}
this_item->mode |= DCW_DO_FILL;
+ F->mode |= GMT_DCW_PLOT;
break;
case 'w': F->report = true; break; /* Report region only */
default:
diff --git a/src/gmt_dcw.h b/src/gmt_dcw.h
index b82f150..3e292e6 100644
--- a/src/gmt_dcw.h
+++ b/src/gmt_dcw.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_dcw.h 15767 2016-02-26 04:10:53Z pwessel $
+ * $Id: gmt_dcw.h 17488 2017-01-26 02:21:14Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -38,7 +38,8 @@ enum GMT_DCW_modes {
GMT_DCW_REGION = 1,
GMT_DCW_PLOT = 2,
GMT_DCW_DUMP = 4,
- GMT_DCW_EXTRACT = 8
+ GMT_DCW_EXTRACT = 8,
+ GMT_DCW_LIST = 16
};
struct GMT_DCW_ITEM { /* One set of codes with their color/fill */
diff --git a/src/gmt_decorate.h b/src/gmt_decorate.h
index 07d5999..c92ffdb 100644
--- a/src/gmt_decorate.h
+++ b/src/gmt_decorate.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_decorate.h 16603 2016-06-22 02:47:24Z pwessel $
+ * $Id: gmt_decorate.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_defaults.h b/src/gmt_defaults.h
index 4e91a6c..fd81f64 100644
--- a/src/gmt_defaults.h
+++ b/src/gmt_defaults.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_defaults.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: gmt_defaults.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_dev.h b/src/gmt_dev.h
index 521a235..7167b1e 100644
--- a/src/gmt_dev.h
+++ b/src/gmt_dev.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_dev.h 16029 2016-04-03 03:26:48Z pwessel $
+ * $Id: gmt_dev.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_dimensions.h.in b/src/gmt_dimensions.h.in
index eb0a220..647397b 100644
--- a/src/gmt_dimensions.h.in
+++ b/src/gmt_dimensions.h.in
@@ -1,7 +1,7 @@
/*
- * $Id: gmt_dimensions.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: gmt_dimensions.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
*
* See LICENSE.TXT file for copying and redistribution conditions.
diff --git a/src/gmt_error.c b/src/gmt_error.c
index e34420a..3bfe20c 100644
--- a/src/gmt_error.c
+++ b/src/gmt_error.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_error.c 16983 2016-08-20 01:06:03Z remko $
+ * $Id: gmt_error.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_error.h b/src/gmt_error.h
index 9ac364a..b748a16 100644
--- a/src/gmt_error.h
+++ b/src/gmt_error.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_error.h 16983 2016-08-20 01:06:03Z remko $
+ * $Id: gmt_error.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_error_codes.c b/src/gmt_error_codes.c
index 9dd973d..0de15db 100644
--- a/src/gmt_error_codes.c
+++ b/src/gmt_error_codes.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_error_codes.c 16772 2016-07-11 04:09:50Z pwessel $
+ * $Id: gmt_error_codes.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_error_codes.h b/src/gmt_error_codes.h
index 9ca2d44..d3e4bb3 100644
--- a/src/gmt_error_codes.h
+++ b/src/gmt_error_codes.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_error_codes.h 16683 2016-07-01 16:05:52Z jluis $
+ * $Id: gmt_error_codes.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_esri_io.c b/src/gmt_esri_io.c
index 21ffaa2..4b83484 100644
--- a/src/gmt_esri_io.c
+++ b/src/gmt_esri_io.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_esri_io.c 17104 2016-09-18 01:33:17Z jluis $
+ * $Id: gmt_esri_io.c 17480 2017-01-23 04:14:33Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -234,7 +234,8 @@ GMT_LOCAL int esri_read_info (struct GMT_CTRL *GMT, FILE *fp, struct GMT_GRID_HE
header->wesn[XHI] = header->wesn[XLO] + 1;
header->nan_value = -32768.0f;
header->bits = 16; /* Temp pocket to store number of bits */
- stat (header->name, &F); /* Must finally find out if it is a 1 or 3 arcseconds file */
+ if (stat (header->name, &F)) /* Must finally find out if it is a 1 or 3 arcseconds file */
+ return (GMT_GRDIO_STAT_FAILED); /* Inquiry about file failed somehow */
if (F.st_size < 3e6) { /* Actually the true size is 2884802 */
header->inc[GMT_X] = header->inc[GMT_Y] = 3.0 * GMT_SEC2DEG; /* 3 arc seconds */
strcpy (header->remark, "Assumed to be a SRTM3 tile");
diff --git a/src/gmt_fft.c b/src/gmt_fft.c
index 11158b5..ef0e306 100644
--- a/src/gmt_fft.c
+++ b/src/gmt_fft.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_fft.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmt_fft.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -26,7 +26,7 @@
*
* Major overhaul, Florian Wobbe, 2012-07-09:
* Added free Kiss FFT (kissfft) to GMT code base.
- * Superceeded Norman Brenner's ancient Cooley-Tukey FFT implementation
+ * Superseded Norman Brenner's ancient Cooley-Tukey FFT implementation
* Kiss FFT. Brenner still available as a legacy/compativility choice.
* Support for Paul Swarztrauber's ancient FFTPACK and for Sun Performance
* Library (perflib) have been removed too because they are not maintained
@@ -255,26 +255,26 @@ void gmtlib_suggest_fft_dim (struct GMT_CTRL *GMT, unsigned int n_columns, unsig
nx_best_s, ny_best_s, s_time, s_err, best_space);
}
/* Fastest solution */
- fft_sug[0].n_columns = nx_best_t;
- fft_sug[0].n_rows = ny_best_t;
- fft_sug[0].worksize = (t_space/8) - (nx_best_t * ny_best_t);
- fft_sug[0].totalbytes = t_space;
- fft_sug[0].run_time = best_time;
- fft_sug[0].rms_rel_err = t_err;
+ fft_sug[GMT_FFT_FAST].n_columns = nx_best_t;
+ fft_sug[GMT_FFT_FAST].n_rows = ny_best_t;
+ fft_sug[GMT_FFT_FAST].worksize = (t_space/8) - (nx_best_t * ny_best_t);
+ fft_sug[GMT_FFT_FAST].totalbytes = t_space;
+ fft_sug[GMT_FFT_FAST].run_time = best_time;
+ fft_sug[GMT_FFT_FAST].rms_rel_err = t_err;
/* Most accurate solution */
- fft_sug[1].n_columns = nx_best_e;
- fft_sug[1].n_rows = ny_best_e;
- fft_sug[1].worksize = (e_space/8) - (nx_best_e * ny_best_e);
- fft_sug[1].totalbytes = e_space;
- fft_sug[1].run_time = e_time;
- fft_sug[1].rms_rel_err = best_err;
+ fft_sug[GMT_FFT_ACCURATE].n_columns = nx_best_e;
+ fft_sug[GMT_FFT_ACCURATE].n_rows = ny_best_e;
+ fft_sug[GMT_FFT_ACCURATE].worksize = (e_space/8) - (nx_best_e * ny_best_e);
+ fft_sug[GMT_FFT_ACCURATE].totalbytes = e_space;
+ fft_sug[GMT_FFT_ACCURATE].run_time = e_time;
+ fft_sug[GMT_FFT_ACCURATE].rms_rel_err = best_err;
/* Least storage solution */
- fft_sug[2].n_columns = nx_best_s;
- fft_sug[2].n_rows = ny_best_s;
- fft_sug[2].worksize = (best_space/8) - (nx_best_s * ny_best_s);
- fft_sug[2].totalbytes = best_space;
- fft_sug[2].run_time = s_time;
- fft_sug[2].rms_rel_err = s_err;
+ fft_sug[GMT_FFT_STORAGE].n_columns = nx_best_s;
+ fft_sug[GMT_FFT_STORAGE].n_rows = ny_best_s;
+ fft_sug[GMT_FFT_STORAGE].worksize = (best_space/8) - (nx_best_s * ny_best_s);
+ fft_sug[GMT_FFT_STORAGE].totalbytes = best_space;
+ fft_sug[GMT_FFT_STORAGE].run_time = s_time;
+ fft_sug[GMT_FFT_STORAGE].rms_rel_err = s_err;
return;
}
diff --git a/src/gmt_fft.h b/src/gmt_fft.h
index 836a38e..8a823cb 100644
--- a/src/gmt_fft.h
+++ b/src/gmt_fft.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_fft.h 16544 2016-06-14 00:15:52Z pwessel $
+ * $Id: gmt_fft.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -55,11 +55,17 @@ enum GMT_FFT_KCHOICE {
};
enum GMT_FFT_DIMSET {
- GMT_FFT_EXTEND = 0,
+ GMT_FFT_UNSPECIFIED = 0,
+ GMT_FFT_EXTEND,
GMT_FFT_FORCE,
GMT_FFT_SET,
- GMT_FFT_LIST,
- GMT_FFT_QUERY};
+ GMT_FFT_LIST};
+
+enum GMT_FFT_SUGGEST { /* Indices for struct GMT_FFT_SUGGESTION arrays */
+ GMT_FFT_FAST = 0,
+ GMT_FFT_ACCURATE,
+ GMT_FFT_STORAGE,
+ GMT_FFT_N_SUGGEST};
/*! Holds parameters needed to calculate kx, ky, kr */
struct GMT_FFT_WAVENUMBER {
@@ -76,6 +82,7 @@ struct GMT_FFT_INFO {
bool save[2]; /* save[GMT_IN] means save the input grid just before calling the FFT */
/* save[GMT_OUT] means save the complex output grid just after calling the FFT */
bool polar; /* true if we are to save the complex output grid in polar form */
+ bool verbose; /* true if we are to report FFT suggestions */
char suffix[GMT_LEN64]; /* Suffix used to form output names if save[GMT_IN] is true [tapered] */
unsigned int n_columns; /* Desired hard FFT n_columns dimensionl or 0 if free to adjust */
unsigned int n_rows; /* Desired hard FFT n_rows dimensionl or 0 if free to adjust */
diff --git a/src/gmt_gdal_librarified.c b/src/gmt_gdal_librarified.c
index 6228dbf..04ec223 100644
--- a/src/gmt_gdal_librarified.c
+++ b/src/gmt_gdal_librarified.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_gdal_librarified.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: gmt_gdal_librarified.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_gdalread.c b/src/gmt_gdalread.c
index f31a2ec..1894dac 100644
--- a/src/gmt_gdalread.c
+++ b/src/gmt_gdalread.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_gdalread.c 17124 2016-09-22 21:35:10Z jluis $
+ * $Id: gmt_gdalread.c 17543 2017-02-09 14:14:29Z jluis $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -326,7 +326,7 @@ GMT_LOCAL int populate_metadata (struct GMT_CTRL *GMT, struct GMT_GDALREAD_OUT_C
int i, j;
int status, bSuccess; /* success or failure */
int nBand, raster_count;
- int bGotMin, bGotMax; /* To know if driver transmited Min/Max */
+ int bGotMin, bGotMax; /* To know if driver transmitted Min/Max */
bool got_noDataValue = false, pixel_reg = false;
double adfGeoTransform[6]; /* bounds on the dataset */
double tmpdble; /* temporary value */
@@ -396,6 +396,10 @@ GMT_LOCAL int populate_metadata (struct GMT_CTRL *GMT, struct GMT_GDALREAD_OUT_C
Ctrl->GeoTransform[3] = dfULY;
}
}
+ else if (adfGeoTransform[1] != 1 && adfGeoTransform[5] != 1) { /* Patch a possible GDAL bug. Raised after issue #1030 */
+ adfGeoTransform[1] = adfGeoTransform[5] = 1;
+ GMT_Report(GMT->parent, GMT_MSG_VERBOSE, "Warning: GDAL seamed to have returned garbage in adfGeoTransform. Arbitrarily setting inc = 1.\n");
+ }
/* ------------------------------------------------------------------------- */
/* Get driver information */
@@ -417,7 +421,7 @@ GMT_LOCAL int populate_metadata (struct GMT_CTRL *GMT, struct GMT_GDALREAD_OUT_C
" This configuration is not supported.\n");
GDALClose(hDataset);
GDALDestroyDriverManager();
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Quiting with error\n");
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Quitting with error\n");
return(-1);
}
@@ -431,7 +435,7 @@ GMT_LOCAL int populate_metadata (struct GMT_CTRL *GMT, struct GMT_GDALREAD_OUT_C
|| anSrcWin[1] + anSrcWin[3] > GDALGetRasterYSize(hDataset)) {
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Computed -srcwin falls outside raster size of %dx%d.\n",
GDALGetRasterXSize(hDataset), GDALGetRasterYSize(hDataset));
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Quiting with error\n");
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Quitting with error\n");
return(-1);
}
Ctrl->RasterXsize = nXSize = anSrcWin[2];
@@ -457,7 +461,7 @@ GMT_LOCAL int populate_metadata (struct GMT_CTRL *GMT, struct GMT_GDALREAD_OUT_C
hBand = GDALGetRasterBand(hDataset, nBand+1);
- if (!got_R) { /* Not sure about what will realy happen in this case */
+ if (!got_R) { /* Not sure about what will really happen in this case */
Ctrl->band_field_names[nBand].XSize = GDALGetRasterBandXSize(hBand);
Ctrl->band_field_names[nBand].YSize = GDALGetRasterBandYSize(hBand);
}
@@ -673,7 +677,7 @@ int gmt_is_gdal_grid (struct GMT_CTRL *GMT, struct GMT_GRID_HEADER *header) {
int gmt_gdalread (struct GMT_CTRL *GMT, char *gdal_filename, struct GMT_GDALREAD_IN_CTRL *prhs, struct GMT_GDALREAD_OUT_CTRL *Ctrl) {
const char *format = NULL;
- int nRGBA = 1; /* 1 for BSQ; 3 for RGB and 4 for RGBA (If needed, value is updated bellow) */
+ int nRGBA = 1; /* 1 for BSQ; 3 for RGB and 4 for RGBA (If needed, value is updated below) */
int complex_mode = 0; /* 0 real only. 1|2 if complex array is to hold real (1) and imaginary (2) parts */
int nPixelSize, nBands, i, nReqBands = 0;
int anSrcWin[4], xOrigin = 0, yOrigin = 0;
@@ -745,6 +749,8 @@ int gmt_gdalread (struct GMT_CTRL *GMT, char *gdal_filename, struct GMT_GDALREAD
do_BIP = false;
if (topdown && rowmajor) just_copy = true; /* Means we will send out the data as it came from gdal */
if (!topdown && rowmajor) copy_flipud = true; /* Means we will send out the data as it came from gdal */
+ /* Send back the info that I->header->mem_layout must be updated */
+ strncpy(prhs->O.mem_layout, GMT->current.gdal_read_in.O.mem_layout, 4);
}
if (prhs->p.active) pad = prhs->p.pad;
@@ -843,7 +849,7 @@ int gmt_gdalread (struct GMT_CTRL *GMT, char *gdal_filename, struct GMT_GDALREAD
return (-1);
}
- /* Some formats (tipically DEMs) have their origin at Bottom Left corner.
+ /* Some formats (typically DEMs) have their origin at Bottom Left corner.
For those we have to flip the data matrix to be in accord with matlab (Top Left) */
hDriver = GDALGetDatasetDriver(hDataset);
@@ -1036,7 +1042,7 @@ int gmt_gdalread (struct GMT_CTRL *GMT, char *gdal_filename, struct GMT_GDALREAD
if (jump) {
nXSize = nBufXSize;
nYSize = nBufYSize;
- i_x_nXYSize = i*(nXSize + pad_w + pad_e)*(nYSize + pad_s + pad_n); /* We don't need to recompute this everytime */
+ i_x_nXYSize = i*(nXSize + pad_w + pad_e)*(nYSize + pad_s + pad_n); /* We don't need to recompute this every time */
}
else
i_x_nXYSize = i * (nBufXSize + pad_w + pad_e) * (nBufYSize + pad_s + pad_n);
diff --git a/src/gmt_gdalread.h b/src/gmt_gdalread.h
index 592e7cf..552a714 100644
--- a/src/gmt_gdalread.h
+++ b/src/gmt_gdalread.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_gdalread.h 17110 2016-09-18 22:59:42Z jluis $
+ * $Id: gmt_gdalread.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -29,7 +29,7 @@
#include <cpl_string.h>
#include <cpl_conv.h>
-/*! Structure to control which options are transmited to gmt_gdalwrite */
+/*! Structure to control which options are transmitted to gmt_gdalwrite */
struct GMT_GDALWRITE_CTRL {
char *driver; /* The GDAL diver name */
char *type; /* Data type */
@@ -61,7 +61,7 @@ struct GMT_GDALWRITE_CTRL {
} P;
};
-/*! Structure to control which options are transmited to gmt_gdalread */
+/*! Structure to control which options are transmitted to gmt_gdalread */
struct GMT_GDALREAD_IN_CTRL {
struct GD_B { /* Band selection */
int active;
@@ -136,7 +136,7 @@ struct GDAL_BAND_FNAMES {
double ScaleOffset[2];
};
-/*! Structure with the output data transmited by gmt_gdalread */
+/*! Structure with the output data transmitted by gmt_gdalread */
struct GMT_GDALREAD_OUT_CTRL {
/* active is true if the option has been activated */
struct UInt8 { /* Declare byte pointer */
diff --git a/src/gmt_gdalwrite.c b/src/gmt_gdalwrite.c
index 79fac27..be74415 100644
--- a/src/gmt_gdalwrite.c
+++ b/src/gmt_gdalwrite.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_gdalwrite.c 16941 2016-08-19 01:28:31Z remko $
+ * $Id: gmt_gdalwrite.c 17467 2017-01-23 01:57:23Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -25,7 +25,7 @@
* common formats such as JPEG or PNG.
* The trick is to create an intermediary MEM diver, write the data to it
* and finally use it as a dataset argument to GDALCreateCopy. One could not
- * do this from the begining because this method needs a Dataset and we didn't
+ * do this from the beginning because this method needs a Dataset and we didn't
* have any to start with. Only the pointer to 'data'.
* This all story needs bo checked for potential memory leaks.
*
@@ -204,11 +204,12 @@ int gmt_gdalwrite (struct GMT_CTRL *GMT, char *fname, struct GMT_GDALWRITE_CTRL
data = prhs->data;
/* Find out in which data type was given the input array */
- /* The two first cases bellow are messy. Decision should be made by a mem layout code stored in prhs */
+ /* The two first cases below are messy. Decision should be made by a mem layout code stored in prhs */
if (!strcmp(prhs->type,"byte")) { /* This case arrives here via grdimage */
+ uint64_t imsize = gmt_M_get_nm (GMT, n_cols, n_rows);
typeCLASS = GDT_Byte;
n_byteOffset = 1;
- outByte = gmt_M_memory (GMT, NULL, n_cols*n_rows, unsigned char);
+ outByte = gmt_M_memory (GMT, NULL, imsize, unsigned char);
}
else if (!strcmp(prhs->type,"uint8")) {
typeCLASS = GDT_Byte;
@@ -348,7 +349,7 @@ int gmt_gdalwrite (struct GMT_CTRL *GMT, char *fname, struct GMT_GDALWRITE_CTRL
}
for (i = 0; i < n_bands; i++) {
- /* A problem with writing to the MEM driver is that it tests that we dont overflow
+ /* A problem with writing to the MEM driver is that it tests that we don't overflow
but the issue is that the test is done on the MEM declared size, whilst we are
actually using a larger array, and the dimensions passed to GDALRasterIO refer
to it. The trick was to offset the initial position of the 'data' array in
@@ -367,10 +368,11 @@ int gmt_gdalwrite (struct GMT_CTRL *GMT, char *fname, struct GMT_GDALWRITE_CTRL
/* Only set NoData if nan_value contains an integer value */
GDALSetRasterNoDataValue(hBand, prhs->nan_value);
if (!strcmp(prhs->type, "byte")) {
- /* This case arrives here from a separate path. It started in grdimage and an originaly
+ /* This case arrives here from a separate path. It started in grdimage and an originally
data was in uchar but padded and possibly 3D (RGB) */
+ uint64_t imsize = gmt_M_get_nm (GMT, n_cols, n_rows);
tmpByte = (unsigned char *)data;
- for (nn = 0; nn < (uint64_t)n_cols*n_rows; nn++)
+ for (nn = 0; nn < imsize; nn++)
outByte[nn] = tmpByte[nn*n_bands + i];
if ((gdal_err = GDALRasterIO(hBand, GF_Write, 0, 0, n_cols, n_rows, outByte, n_cols, n_rows, typeCLASS, 0, 0)) != CE_None)
@@ -378,7 +380,7 @@ int gmt_gdalwrite (struct GMT_CTRL *GMT, char *fname, struct GMT_GDALWRITE_CTRL
}
else {
/* Here 'data' was converted to uchar in gmt_customio.c/gmt_gdal_write_grd */
- ijk = i * n_cols * n_rows;
+ ijk = i * gmt_M_get_nm (GMT, n_cols, n_rows);
if ((gdal_err = GDALRasterIO(hBand, GF_Write, 0, 0, n_cols, n_rows, &img[ijk], n_cols, n_rows, typeCLASS, 0, 0)) != CE_None)
GMT_Report(GMT->parent, GMT_MSG_NORMAL, "GDALRasterIO failed to write band %d [err = %d]\n", i, gdal_err);
}
diff --git a/src/gmt_glib.h b/src/gmt_glib.h
index 425f840..7a4d3c0 100644
--- a/src/gmt_glib.h
+++ b/src/gmt_glib.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_glib.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: gmt_glib.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_grd.h b/src/gmt_grd.h
index 09e0db7..4d66ca2 100644
--- a/src/gmt_grd.h
+++ b/src/gmt_grd.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_grd.h 16544 2016-06-14 00:15:52Z pwessel $
+ * $Id: gmt_grd.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_grdio.c b/src/gmt_grdio.c
index 0744c2e..fe25d2b 100644
--- a/src/gmt_grdio.c
+++ b/src/gmt_grdio.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_grdio.c 17154 2016-10-01 00:23:46Z pwessel $
+ * $Id: gmt_grdio.c 17518 2017-02-02 02:07:38Z jluis $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -28,7 +28,7 @@
*
* NOTE: We do not support grids that have more rows or columns that can fit
* in a 32-bit integer, hence all linear dimensions (row, col, etc.) are addressed
- * with 32-bit ints. However, 1-D array indeces (e.g., ij = row*n_columns + col) are
+ * with 32-bit ints. However, 1-D array indices (e.g., ij = row*n_columns + col) are
* addressed with 64-bit integers.
*
* Public functions (41 [+2]):
@@ -152,7 +152,7 @@ GMT_LOCAL int grdio_grd_layout (struct GMT_CTRL *GMT, struct GMT_GRID_HEADER *he
gmt_grd_mux_demux (GMT, header, grid, GMT_GRID_IS_SERIAL);
}
}
- /* header->arrangment might now have been changed accordingly */
+ /* header->arrangement might now have been changed accordingly */
return GMT_OK;
}
@@ -252,7 +252,7 @@ enum Grid_packing_mode {
GMT_LOCAL void grdio_pack_grid (struct GMT_CTRL *Ctrl, struct GMT_GRID_HEADER *header, float *grid, unsigned pack_mode) {
size_t n_representations = 0; /* number of distinct values >= 0 that a signed integral type can represent */
- if (pack_mode == k_grd_pack && (header->z_scale_autoadust || header->z_offset_autoadust)) {
+ if (pack_mode == k_grd_pack && (header->z_scale_autoadjust || header->z_offset_autoadjust)) {
switch (Ctrl->session.grdformat[header->type][1]) {
case 'b':
n_representations = 128; /* exp2 (8 * sizeof (int8_t)) / 2 */
@@ -273,13 +273,13 @@ GMT_LOCAL void grdio_pack_grid (struct GMT_CTRL *Ctrl, struct GMT_GRID_HEADER *h
if (n_representations != 0) {
/* Calculate auto-scale and offset */
gmt_grd_zminmax (Ctrl, header, grid); /* Calculate z_min/z_max */
- if (header->z_offset_autoadust) {
+ if (header->z_offset_autoadjust) {
/* shift to center values around 0 but shift only by integral value */
double z_range = header->z_max - header->z_min;
if (isfinite (z_range))
header->z_add_offset = rint(z_range / 2.0 + header->z_min);
}
- if (header->z_scale_autoadust) {
+ if (header->z_scale_autoadjust) {
/* scale z-range to use all n_representations */
double z_max = header->z_max - header->z_add_offset;
double z_min = fabs(header->z_min - header->z_add_offset);
@@ -337,7 +337,7 @@ GMT_LOCAL int grdio_parse_grd_format_scale (struct GMT_CTRL *Ctrl, struct GMT_GR
++p;
/* parse scale */
if (*p == 'a')
- header->z_scale_autoadust = header->z_offset_autoadust = true;
+ header->z_scale_autoadjust = header->z_offset_autoadjust = true;
else
sscanf (p, "%lf", &header->z_scale_factor);
}
@@ -349,11 +349,11 @@ GMT_LOCAL int grdio_parse_grd_format_scale (struct GMT_CTRL *Ctrl, struct GMT_GR
++p;
/* parse offset */
if (*p != 'a') {
- header->z_offset_autoadust = false;
+ header->z_offset_autoadjust = false;
sscanf (p, "%lf", &header->z_add_offset);
}
else
- header->z_offset_autoadust = true;
+ header->z_offset_autoadjust = true;
}
else
return GMT_NOERROR;
@@ -538,6 +538,7 @@ GMT_LOCAL void grdio_grd_wipe_pad (struct GMT_CTRL *GMT, struct GMT_GRID *G) {
}
GMT_LOCAL void grdio_pad_grd_off_sub (struct GMT_GRID *G, float *data) {
+ /* Remove the current grid pad and shuffle all rows to the left */
uint64_t ijp, ij0;
unsigned int row;
for (row = 0; row < G->header->n_rows; row++) {
@@ -549,12 +550,43 @@ GMT_LOCAL void grdio_pad_grd_off_sub (struct GMT_GRID *G, float *data) {
GMT_LOCAL void grdio_pad_grd_on_sub (struct GMT_CTRL *GMT, struct GMT_GRID *G, struct GMT_GRID_HEADER *h_old, float *data) {
/* Use G for dimensions but operate on data array which points to either the real or imaginary section */
- unsigned int row;
- uint64_t ij_new, ij_old;
- for (row = G->header->n_rows; row > 0; row--) {
- ij_new = gmt_M_ijp (G->header, row-1, 0); /* Index of start of this row's first column in new padded grid */
- ij_old = gmt_M_ijp (h_old, row-1, 0); /* Index of start of this row's first column in old padded grid */
- gmt_M_memcpy (&(data[ij_new]), &(data[ij_old]), G->header->n_columns, float);
+ uint64_t ij_new, ij_old, row, col, start_last_new_row, end_last_old_row;
+
+ /* See if the index of start of last new row exceeds index of last node in old grid */
+ start_last_new_row = gmt_M_get_nm (GMT, G->header->pad[YHI] + G->header->n_rows - 1, G->header->pad[XLO] + G->header->n_columns + G->header->pad[XHI]) + G->header->pad[XLO];
+ end_last_old_row = gmt_M_get_nm (GMT, h_old->pad[YHI] + h_old->n_rows - 1, h_old->pad[XLO] + h_old->n_columns + h_old->pad[XHI]) + h_old->pad[XLO] + h_old->n_columns - 1;
+ if (start_last_new_row > end_last_old_row) { /* May copy whole rows from bottom to top */
+ GMT_Report (GMT->parent, GMT_MSG_DEBUG, "grdio_pad_grd_on_sub can copy row-by-row\n");
+ for (row = G->header->n_rows; row > 0; row--) {
+ ij_new = gmt_M_ijp (G->header, row-1, 0); /* Index of this row's first column in new padded grid */
+ ij_old = gmt_M_ijp (h_old, row-1, 0); /* Index of this row's first column in old padded grid */
+ gmt_M_memcpy (&(data[ij_new]), &(data[ij_old]), G->header->n_columns, float);
+ }
+ }
+ else { /* Must do it from bottom to top on a per node basis */
+ GMT_Report (GMT->parent, GMT_MSG_DEBUG, "grdio_pad_grd_on_sub must copy node-by-node\n");
+ ij_new = gmt_M_ijp (G->header, G->header->n_rows-1, G->header->n_columns-1); /* Index of this row's last column in new padded grid */
+ ij_old = gmt_M_ijp (h_old, h_old->n_rows-1, h_old->n_columns-1); /* Index of this row's last column in old padded grid */
+ GMT_Report (GMT->parent, GMT_MSG_DEBUG, "grdio_pad_grd_on_sub: last ij_new = %d, last ij_old = %d\n", (int)ij_new, (int)ij_old);
+
+ if (ij_new > ij_old) { /* Can go back to front */
+ GMT_Report (GMT->parent, GMT_MSG_DEBUG, "grdio_pad_grd_on_sub: Must loop from end to front\n");
+ for (row = G->header->n_rows; row > 0; row--) {
+ ij_new = gmt_M_ijp (G->header, row-1, G->header->n_columns-1); /* Index of this row's last column in new padded grid */
+ ij_old = gmt_M_ijp (h_old, row-1, h_old->n_columns-1); /* Index of this row's last column in old padded grid */
+ for (col = 0; col < G->header->n_columns; col++)
+ data[ij_new--] = data[ij_old--];
+ }
+ }
+ else {
+ GMT_Report (GMT->parent, GMT_MSG_DEBUG, "grdio_pad_grd_on_sub: Must loop from front to end\n");
+ for (row = 0; row < G->header->n_rows; row++) {
+ ij_new = gmt_M_ijp (G->header, row, 0); /* Index of this row's last column in new padded grid */
+ ij_old = gmt_M_ijp (h_old, row, 0); /* Index of this row's last column in old padded grid */
+ for (col = 0; col < G->header->n_columns; col++)
+ data[ij_new++] = data[ij_old++];
+ }
+ }
}
grdio_grd_wipe_pad (GMT, G); /* Set pad areas to 0 */
}
@@ -849,7 +881,7 @@ int gmt_grd_get_format (struct GMT_CTRL *GMT, char *file, struct GMT_GRID_HEADER
* 3. In case of netCDF grids, the optional ?<varname> is stripped off as well.
* The info is stored in header->varname.
* 4. If a file is open for reading, we set header->name to the full path of the file
- * by seaching in current dir and the various GMT_*DIR paths.
+ * by searching in current dir and the various GMT_*DIR paths.
*/
size_t i = 0, j;
@@ -897,7 +929,7 @@ int gmt_grd_get_format (struct GMT_CTRL *GMT, char *file, struct GMT_GRID_HEADER
header->pocket = strdup(++pch);
header->name[i-1] = '\0'; /* Done, rip the driver/outtype info from file name */
if (!strncmp (header->pocket, "GMT", 3U) && header->nm > nc_limit) {
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Your grid contains more than 2^31 - 1 nodes (%zu) and cannot be stored with the deprecated GMT netCDF format via GDAL.\n", header->nm);
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Your grid contains more than 2^31 - 1 nodes (%" PRIu64 ") and cannot be stored with the deprecated GMT netCDF format via GDAL.\n", header->nm);
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Please choose another grid format such as the default netCDF 4 COARDS-compliant grid format.\n");
return (GMT_GRDIO_BAD_DIM); /* Grid is too large */
}
@@ -1948,29 +1980,29 @@ int gmt_read_img (struct GMT_CTRL *GMT, char *imgfile, struct GMT_GRID *Grid, do
if (!gmt_getdatapath (GMT, imgfile, file, R_OK)) return (GMT_GRDIO_FILE_NOT_FOUND);
if (stat (file, &buf)) return (GMT_GRDIO_STAT_FAILED); /* Inquiry about file failed somehow */
- switch (buf.st_size) { /* Known sizes are 1 or 2 min at lat_max = ~72, ~80, or ~85 */
+ switch (buf.st_size) { /* Known sizes are 1 or 2 min at lat_max = ~72, ~80, or ~85. Set exact latitude */
case GMT_IMG_NLON_1M*GMT_IMG_NLAT_1M_85*GMT_IMG_ITEMSIZE:
- if (lat == 0.0) lat = GMT_IMG_MAXLAT_85;
+ lat = GMT_IMG_MAXLAT_85;
min = 1;
break;
case GMT_IMG_NLON_1M*GMT_IMG_NLAT_1M_80*GMT_IMG_ITEMSIZE:
- if (lat == 0.0) lat = GMT_IMG_MAXLAT_80;
+ lat = GMT_IMG_MAXLAT_80;
min = 1;
break;
case GMT_IMG_NLON_1M*GMT_IMG_NLAT_1M_72*GMT_IMG_ITEMSIZE:
- if (lat == 0.0) lat = GMT_IMG_MAXLAT_72;
+ lat = GMT_IMG_MAXLAT_72;
min = 1;
break;
case GMT_IMG_NLON_2M*GMT_IMG_NLAT_2M_85*GMT_IMG_ITEMSIZE:
- if (lat == 0.0) lat = GMT_IMG_MAXLAT_85;
+ lat = GMT_IMG_MAXLAT_85;
min = 2;
break;
case GMT_IMG_NLON_2M*GMT_IMG_NLAT_2M_80*GMT_IMG_ITEMSIZE:
- if (lat == 0.0) lat = GMT_IMG_MAXLAT_80;
+ lat = GMT_IMG_MAXLAT_80;
min = 2;
break;
case GMT_IMG_NLON_2M*GMT_IMG_NLAT_2M_72*GMT_IMG_ITEMSIZE:
- if (lat == 0.0) lat = GMT_IMG_MAXLAT_72;
+ lat = GMT_IMG_MAXLAT_72;
min = 2;
break;
default:
@@ -2189,7 +2221,7 @@ void gmt_grd_pad_zero (struct GMT_CTRL *GMT, struct GMT_GRID *G) {
gmt_M_memset (G->header->BC, 4U, int); /* BCs no longer set for this grid */
}
-struct GMT_GRID * gmt_create_grid (struct GMT_CTRL *GMT) {
+struct GMT_GRID *gmt_create_grid (struct GMT_CTRL *GMT) {
/* Allocates space for a new grid container. No space allocated for the float grid itself */
struct GMT_GRID *G = NULL;
@@ -2214,8 +2246,25 @@ struct GMT_GRID *gmt_duplicate_grid (struct GMT_CTRL *GMT, struct GMT_GRID *G, u
if (G->header->pocket) Gnew->header->pocket = strdup (G->header->pocket);
if ((mode & GMT_DUPLICATE_DATA) || (mode & GMT_DUPLICATE_ALLOC)) { /* Also allocate and possibly duplicate data array */
- Gnew->data = gmt_M_memory_aligned (GMT, NULL, G->header->size, float);
- if (mode & GMT_DUPLICATE_DATA) gmt_M_memcpy (Gnew->data, G->data, G->header->size, float);
+ if ((mode & GMT_DUPLICATE_RESET) && !gmt_grd_pad_status (GMT, G->header, GMT->current.io.pad)) {
+ /* Pads differ and we requested resetting the pad */
+ gmt_M_grd_setpad (GMT, Gnew->header, GMT->current.io.pad); /* Set default pad size */
+ gmt_set_grddim (GMT, Gnew->header); /* Update size dimensions given the change of pad */
+ if (mode & GMT_DUPLICATE_DATA) { /* Per row since grid sizes will not the same */
+ uint64_t node_in, node_out;
+ unsigned int row;
+ Gnew->data = gmt_M_memory_aligned (GMT, NULL, Gnew->header->size, float);
+ gmt_M_row_loop (GMT, G, row) {
+ node_in = gmt_M_ijp (G->header, row, 0);
+ node_out = gmt_M_ijp (Gnew->header, row, 0);
+ gmt_M_memcpy (&Gnew->data[node_out], &G->data[node_in], G->header->nx, float);
+ }
+ }
+ }
+ else { /* Can do fast copy */
+ Gnew->data = gmt_M_memory_aligned (GMT, NULL, G->header->size, float);
+ if (mode & GMT_DUPLICATE_DATA) gmt_M_memcpy (Gnew->data, G->data, G->header->size, float);
+ }
}
return (Gnew);
}
@@ -2598,7 +2647,7 @@ void gmtlib_grd_flip_vertical (void *gridp, const unsigned n_cols, const unsigne
}
bool gmtlib_check_url_name (char *fname) {
- /* File names starting as below should not be tested for existance or reading permissions as they
+ /* File names starting as below should not be tested for existence or reading permissions as they
are either meant to be accessed on the fly (http & ftp) or they are compressed. So, if any of
the conditions holds true, returns true. All cases are read via GDAL support or other. */
if ( !strncmp(fname,"http:",5) ||
@@ -2617,13 +2666,18 @@ bool gmtlib_check_url_name (char *fname) {
unsigned int gmtlib_expand_headerpad (struct GMT_CTRL *GMT, struct GMT_GRID_HEADER *h, double *new_wesn, unsigned int *orig_pad, double *orig_wesn) {
unsigned int tmp_pad[4] = {0, 0, 0, 0}, delta[4] = {0, 0, 0, 0}, k = 0;
- /* When using subset with memory grids we must temporarily change the pad to match the region wesn */
- if (new_wesn[XLO] > h->wesn[XLO]) k++, tmp_pad[XLO] = h->pad[XLO] + urint ((new_wesn[XLO] - h->wesn[XLO]) * h->r_inc[GMT_X]);
- if (new_wesn[XHI] < h->wesn[XHI]) k++, tmp_pad[XHI] = h->pad[XHI] + urint ((h->wesn[XHI] - new_wesn[XHI]) * h->r_inc[GMT_X]);
- if (new_wesn[YLO] > h->wesn[YLO]) k++, tmp_pad[YLO] = h->pad[YLO] + urint ((new_wesn[YLO] - h->wesn[YLO]) * h->r_inc[GMT_Y]);
- if (new_wesn[YHI] < h->wesn[YHI]) k++, tmp_pad[YHI] = h->pad[YHI] + urint ((h->wesn[YHI] - new_wesn[YHI]) * h->r_inc[GMT_Y]);
- if (k) { /* Yes, pad will change since region is different */
- for (k = 0; k < 4; k++) delta[k] = tmp_pad[k] - h->pad[k]; /* Columns with data being passed */
+ /* When using subset with memory grids we cannot actually cut the grid but instead
+ * must temporarily change the pad to match the desired inner region wesn. This means
+ * the pads will change and can be quite large. */
+
+ gmt_M_memcpy (tmp_pad, h->pad, 4, unsigned int); /* Initialize new pad to the original pad */
+ /* First determine which (and how many, k) of the 4 new boundaries are inside the original region and update the padding: */
+ if (new_wesn[XLO] > h->wesn[XLO]) k++, tmp_pad[XLO] += urint ((new_wesn[XLO] - h->wesn[XLO]) * h->r_inc[GMT_X]);
+ if (new_wesn[XHI] < h->wesn[XHI]) k++, tmp_pad[XHI] += urint ((h->wesn[XHI] - new_wesn[XHI]) * h->r_inc[GMT_X]);
+ if (new_wesn[YLO] > h->wesn[YLO]) k++, tmp_pad[YLO] += urint ((new_wesn[YLO] - h->wesn[YLO]) * h->r_inc[GMT_Y]);
+ if (new_wesn[YHI] < h->wesn[YHI]) k++, tmp_pad[YHI] += urint ((h->wesn[YHI] - new_wesn[YHI]) * h->r_inc[GMT_Y]);
+ if (k) { /* Yes, pad will change since region is different for k of the 4 sides */
+ for (k = 0; k < 4; k++) delta[k] = tmp_pad[k] - h->pad[k]; /* Columns with data being passed as padding */
gmt_M_memcpy (orig_pad, h->pad, 4, unsigned int); /* Place the original grid pad in the provided array */
gmt_M_memcpy (orig_wesn, h->wesn, 4, double); /* Place the original grid wesn in the provided array */
gmt_M_memcpy (h->pad, tmp_pad, 4, unsigned int); /* Place the new pad in the grid header */
@@ -2631,8 +2685,8 @@ unsigned int gmtlib_expand_headerpad (struct GMT_CTRL *GMT, struct GMT_GRID_HEAD
gmt_set_grddim (GMT, h); /* This recomputes n_columns|n_rows. */
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "gmtlib_expand_headerpad: %d pad sides changed. Now %u/%u/%u/%u\n",
k, h->pad[XLO], h->pad[XHI], h->pad[YLO], h->pad[YHI]);
- for (k = 0; k < 4; k++) {
- if (delta[k] >= 2) h->BC[k] = GMT_BC_IS_DATA;
+ for (k = 0; k < 4; k++) { /* If pad now contains data then change the BC to reflect this */
+ if (delta[k] >= orig_pad[k]) h->BC[k] = GMT_BC_IS_DATA;
}
}
else
@@ -2772,7 +2826,7 @@ int gmtlib_read_image (struct GMT_CTRL *GMT, char *file, struct GMT_IMAGE *I, do
snprintf (strR, GMT_LEN128, "%.10f/%.10f/%.10f/%.10f", GMT->common.R.wesn[XLO], GMT->common.R.wesn[XHI],
GMT->common.R.wesn[YLO], GMT->common.R.wesn[YHI]);
to_gdalread->R.region = strR;
- /*to_gdalread->R.active = true;*/ /* Wait untill we really know how to use it */
+ /*to_gdalread->R.active = true;*/ /* Wait until we really know how to use it */
}
if (I->header->pocket) { /* See if we have a band request */
@@ -2780,7 +2834,7 @@ int gmtlib_read_image (struct GMT_CTRL *GMT, char *file, struct GMT_IMAGE *I, do
to_gdalread->B.bands = I->header->pocket; /* Band parsing and error testing is done in gmt_gdalread */
}
- to_gdalread->p.active = to_gdalread->p.pad = (int)GMT->current.io.pad[0]; /* Only 'square' padding allowed */
+ to_gdalread->p.active = to_gdalread->p.pad = (int)pad[0]; /* Only 'square' padding allowed */
to_gdalread->I.active = true; /* Means that image in I->data will be BIP interleaved */
/* Tell gmt_gdalread that we already have the memory allocated and send in the *data pointer */
@@ -2797,6 +2851,9 @@ int gmtlib_read_image (struct GMT_CTRL *GMT, char *file, struct GMT_IMAGE *I, do
return (GMT_GRDIO_READ_FAILED);
}
+ if (to_gdalread->O.mem_layout[0]) /* If a different mem_layout request was applyied in gmt_gdalread than we must update */
+ strncpy(I->header->mem_layout, to_gdalread->O.mem_layout, 4);
+
if (to_gdalread->B.active) gmt_M_str_free (I->header->pocket); /* It was allocated by strdup. Free it for an eventual reuse. */
I->colormap = from_gdalread->ColorMap;
diff --git a/src/gmt_grdio.h b/src/gmt_grdio.h
index 9d5b98b..3822f6e 100644
--- a/src/gmt_grdio.h
+++ b/src/gmt_grdio.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_grdio.h 17124 2016-09-22 21:35:10Z jluis $
+ * $Id: gmt_grdio.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_hash.h b/src/gmt_hash.h
index e5829f0..e9a78a8 100644
--- a/src/gmt_hash.h
+++ b/src/gmt_hash.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_hash.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: gmt_hash.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_init.c b/src/gmt_init.c
index 6cc76ad..4ca12aa 100644
--- a/src/gmt_init.c
+++ b/src/gmt_init.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_init.c 17153 2016-09-30 23:41:38Z jluis $
+ * $Id: gmt_init.c 17543 2017-02-09 14:14:29Z jluis $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -1199,7 +1199,7 @@ GMT_LOCAL int gmtinit_count_xy_terms (char *txt, int64_t *xstart, int64_t *xstop
GMT_LOCAL int gmtinit_parse_model2d (struct GMT_CTRL *GMT, char option, char *in_arg, struct GMT_MODEL *M) {
/* Parse -N[p|P|f|F|c|C|s|S|x|X|y|Y][x|y]<list-of-terms>[,...][+l<lengths>][+o<origins>][+r] for trend2d, grdtrend.
* p means polynomial.
- * c means cosine. You may optionaly add x|y to only add basis for that dimension [both]
+ * c means cosine. You may optionally add x|y to only add basis for that dimension [both]
* s means sine. Optionally append x|y [both]
* f means both cosine and sine (Fourier series). Optionally append x|y [both]
* list-of-terms is either a single order (e.g., 2) or a range (e.g., 0-3)
@@ -1395,7 +1395,7 @@ int gmt_parse_model (struct GMT_CTRL *GMT, char option, char *in_arg, unsigned i
#endif
-/*! Parse the -U option. Full syntax: -U[<just>/<dx>/<dy>/][c|<label>] */
+/*! Parse the -U option. Full syntax: -U[[<just>]/<dx>/<dy>/][c|<label>] */
GMT_LOCAL int gmtinit_parse_U_option (struct GMT_CTRL *GMT, char *item) {
int i, just, n = 0, n_slashes, error = 0;
char txt_j[GMT_LEN256] = {""}, txt_x[GMT_LEN256] = {""}, txt_y[GMT_LEN256] = {""};
@@ -1475,7 +1475,7 @@ GMT_LOCAL int gmtinit_parse_colon_option (struct GMT_CTRL *GMT, char *item) {
break;
}
for (way = 0; !error && way < 2; way++) if (ok[way]) {
- if (GMT->current.io.col_type[way][GMT_X] == GMT_IS_UNKNOWN && GMT->current.io.col_type[way][GMT_Y] == GMT_IS_UNKNOWN) /* Dont know what x/y is yet */
+ if (GMT->current.io.col_type[way][GMT_X] == GMT_IS_UNKNOWN && GMT->current.io.col_type[way][GMT_Y] == GMT_IS_UNKNOWN) /* Don't know what x/y is yet */
GMT->current.setting.io_lonlat_toggle[way] = true;
else if (GMT->current.io.col_type[way][GMT_X] == GMT_IS_FLOAT && GMT->current.io.col_type[way][GMT_Y] == GMT_IS_FLOAT) /* Cartesian x/y vs y/x cannot be identified */
GMT->current.setting.io_lonlat_toggle[way] = true;
@@ -1662,7 +1662,7 @@ GMT_LOCAL int gmtinit_parse_p_option (struct GMT_CTRL *GMT, char *item) {
switch (p[0]) {
case 'v': /* Specify fixed view point in 2-D projected coordinates */
if (sscanf (&p[1], "%[^/]/%s", txt_a, txt_b) != 2) {
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error in -p (%s): Syntax is -p<az>/<el>[/<z>][+wlon0/lat0[/z0]][+vx0[%s]/y0[%s]]\n", p, GMT_DIM_UNITS, GMT_DIM_UNITS);
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error in -p (%s): Syntax is -p<az>/<el>[/<z>][+wlon0/lat0[/z0]][+vx0[%s]/y0[%s]]\n", p, GMT_DIM_UNITS_DISPLAY, GMT_DIM_UNITS_DISPLAY);
return 1;
}
GMT->current.proj.z_project.view_x = gmt_M_to_inch (GMT, txt_a);
@@ -1671,7 +1671,7 @@ GMT_LOCAL int gmtinit_parse_p_option (struct GMT_CTRL *GMT, char *item) {
break;
case 'w': /* Specify fixed World point in user's coordinates */
if (sscanf (&p[1], "%[^/]/%[^/]/%s", txt_a, txt_b, txt_c) < 2) {
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error in -p: (%s) Syntax is -p<az>/<el>[/<z>][+wlon0/lat0[/z0]][+vx0[%s]/y0[%s]]\n", p, GMT_DIM_UNITS, GMT_DIM_UNITS);
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error in -p: (%s) Syntax is -p<az>/<el>[/<z>][+wlon0/lat0[/z0]][+vx0[%s]/y0[%s]]\n", p, GMT_DIM_UNITS_DISPLAY, GMT_DIM_UNITS_DISPLAY);
return 1;
}
error += gmt_verify_expectations (GMT, GMT->current.io.col_type[GMT_IN][GMT_X], gmt_scanf (GMT, txt_a, GMT->current.io.col_type[GMT_IN][GMT_X], &GMT->current.proj.z_project.world_x), txt_a);
@@ -1797,7 +1797,7 @@ GMT_LOCAL int gmtinit_decode4_wesnz (struct GMT_CTRL *GMT, const char *in, unsig
for (k = 0; k < 5; k++) side[k] = 0;
*draw_box = false;
}
- if (in[i] == 's') { /* Since s can mean both "draw south axis" and "seconds", check futher */
+ if (in[i] == 's') { /* Since s can mean both "draw south axis" and "seconds", check further */
if (side[S_SIDE]) go = false; /* If S was set already then s probably means seconds */
else if (i && in[i-1] == ',') go = true; /* Special case of ,s to indicate south, e.g. -B30,s */
else if (i && (in[i-1] == '.' || isdigit ((int)in[i-1]))) go = false; /* Probably seconds, e.g. -B30s */
@@ -2821,7 +2821,7 @@ GMT_LOCAL int gmtinit_parse4_B_option (struct GMT_CTRL *GMT, char *in) {
if (GMT->current.map.frame.axis[i].prefix[0]) { /* Deal with space/no space before prefix */
char workspace[GMT_LEN64] = {""};
- if (GMT->current.map.frame.axis[i].prefix[0] == '-') /* Dont want a space */
+ if (GMT->current.map.frame.axis[i].prefix[0] == '-') /* Don't want a space */
strncpy (workspace, &GMT->current.map.frame.axis[i].prefix[1], GMT_LEN64-1);
else { /* Want a space */
workspace[0] = ' '; /* The leading space */
@@ -2831,7 +2831,7 @@ GMT_LOCAL int gmtinit_parse4_B_option (struct GMT_CTRL *GMT, char *in) {
}
if (GMT->current.map.frame.axis[i].unit[0]) { /* Deal with space/no space before unit */
char workspace[GMT_LEN64] = {""};
- if (GMT->current.map.frame.axis[i].unit[0] == '-') /* Dont want a space */
+ if (GMT->current.map.frame.axis[i].unit[0] == '-') /* Don't want a space */
strncpy (workspace, &GMT->current.map.frame.axis[i].unit[1], GMT_LEN64-1);
else { /* Want a space */
workspace[0] = ' '; /* The leading space */
@@ -2884,7 +2884,7 @@ GMT_LOCAL int gmtinit_parse4_B_option (struct GMT_CTRL *GMT, char *in) {
/* New GMT5 functions for parsing new -B syntax */
/*! . */
-GMT_LOCAL void gmtinit_handle5_plussign (struct GMT_CTRL *GMT, char *in, char *mods, unsigned way) {
+void gmt_handle5_plussign (struct GMT_CTRL *GMT, char *in, char *mods, unsigned way) {
/* Way = 0: replace any +<letter> with <letter> NOT in <mods> with ASCII 1<letter>
* Way = 1: Replace ASCII 1 with + */
gmt_M_unused(GMT);
@@ -2993,7 +2993,7 @@ GMT_LOCAL int gmtinit_parse5_B_frame_setting (struct GMT_CTRL *GMT, char *in) {
/* OK, here we are pretty sure this is a frame -B statement */
strncpy (text, in, GMT_BUFSIZ-1);
- gmtinit_handle5_plussign (GMT, text, "bgnot", 0); /* Temporarily change double plus-signs to double ASCII 1 to avoid +<modifier> angst */
+ gmt_handle5_plussign (GMT, text, "bgnot", 0); /* Temporarily change double plus-signs to double ASCII 1 to avoid +<modifier> angst */
GMT->current.map.frame.header[0] = '\0';
if ((mod = strchr (text, '+'))) { /* Find start of modifiers, if any */
@@ -3030,7 +3030,7 @@ GMT_LOCAL int gmtinit_parse5_B_frame_setting (struct GMT_CTRL *GMT, char *in) {
case 't':
if (p[1]) { /* Actual title was appended */
strcpy (GMT->current.map.frame.header, &p[1]);
- gmtinit_handle5_plussign (GMT, GMT->current.map.frame.header, NULL, 1); /* Recover any non-modifier plus signs */
+ gmt_handle5_plussign (GMT, GMT->current.map.frame.header, NULL, 1); /* Recover any non-modifier plus signs */
gmtlib_enforce_rgb_triplets (GMT, GMT->current.map.frame.header, GMT_LEN256); /* If @; is used, make sure the color information passed on to ps_text is in r/b/g format */
}
break;
@@ -3134,12 +3134,12 @@ GMT_LOCAL int gmtinit_parse5_B_option (struct GMT_CTRL *GMT, char *in) {
if (!(side[GMT_X] || side[GMT_Y] || side[GMT_Z])) GMT->current.map.frame.set_both = side[GMT_X] = side[GMT_Y] = true; /* If no axis were named we default to both x and y */
strncpy (text, &in[k], GMT_BUFSIZ-1); /* Make a copy of the input, starting after the leading -B[p|s][xyz] indicators */
- gmtinit_handle5_plussign (GMT, text, "Llpu", 0); /* Temporarily change any +<letter> except +L|l, +p, +u to ASCII 1 to avoid interference with +modifiers */
+ gmt_handle5_plussign (GMT, text, "Llpu", 0); /* Temporarily change any +<letter> except +L|l, +p, +u to ASCII 1 to avoid interference with +modifiers */
k = 0; /* Start at beginning of text and look for first occurrence of +L|l, +p, or +s */
while (text[k] && !(text[k] == '+' && strchr ("Llpu", text[k+1]))) k++;
gmt_M_memset (orig_string, GMT_BUFSIZ, char);
strncpy (orig_string, text, k); /* orig_string now has the interval information */
- gmtinit_handle5_plussign (GMT, orig_string, NULL, 1); /* Recover any non-modifier plus signs */
+ gmt_handle5_plussign (GMT, orig_string, NULL, 1); /* Recover any non-modifier plus signs */
if (text[k]) mod = &text[k]; /* mod points to the start of the modifier information in text*/
for (no = 0; no < 3; no++) { /* Process each axis separately */
if (!side[no]) continue; /* Except we did not specify this axis */
@@ -3164,7 +3164,7 @@ GMT_LOCAL int gmtinit_parse5_B_option (struct GMT_CTRL *GMT, char *in) {
}
else {
strcpy (GMT->current.map.frame.axis[no].label, &p[1]);
- gmtinit_handle5_plussign (GMT, GMT->current.map.frame.axis[no].label, NULL, 1); /* Recover any non-modifier plus signs */
+ gmt_handle5_plussign (GMT, GMT->current.map.frame.axis[no].label, NULL, 1); /* Recover any non-modifier plus signs */
gmtlib_enforce_rgb_triplets (GMT, GMT->current.map.frame.axis[no].label, GMT_LEN256); /* If @; is used, make sure the color information passed on to ps_text is in r/b/g format */
}
break;
@@ -3175,7 +3175,7 @@ GMT_LOCAL int gmtinit_parse5_B_option (struct GMT_CTRL *GMT, char *in) {
}
else {
strcpy (GMT->current.map.frame.axis[no].prefix, &p[1]);
- gmtinit_handle5_plussign (GMT, GMT->current.map.frame.axis[no].prefix, NULL, 1); /* Recover any non-modifier plus signs */
+ gmt_handle5_plussign (GMT, GMT->current.map.frame.axis[no].prefix, NULL, 1); /* Recover any non-modifier plus signs */
gmtlib_enforce_rgb_triplets (GMT, GMT->current.map.frame.axis[no].prefix, GMT_LEN256); /* If @; is used, make sure the color information passed on to ps_text is in r/b/g format */
}
break;
@@ -3186,7 +3186,7 @@ GMT_LOCAL int gmtinit_parse5_B_option (struct GMT_CTRL *GMT, char *in) {
}
else {
strcpy (GMT->current.map.frame.axis[no].unit, &p[1]);
- gmtinit_handle5_plussign (GMT, GMT->current.map.frame.axis[no].unit, NULL, 1); /* Recover any non-modifier plus signs */
+ gmt_handle5_plussign (GMT, GMT->current.map.frame.axis[no].unit, NULL, 1); /* Recover any non-modifier plus signs */
gmtlib_enforce_rgb_triplets (GMT, GMT->current.map.frame.axis[no].unit, GMT_LEN256); /* If @; is used, make sure the color information passed on to ps_text is in r/b/g format */
}
break;
@@ -3231,9 +3231,8 @@ GMT_LOCAL int gmtinit_parse5_B_option (struct GMT_CTRL *GMT, char *in) {
if (GMT->current.proj.projection == GMT_LINEAR && GMT->current.setting.map_degree_symbol != gmt_none) {
for (no = 0; no < 2; no++) {
if (GMT->current.io.col_type[GMT_IN][no] & GMT_IS_GEO && GMT->current.map.frame.axis[no].unit[0] == 0) {
- GMT->current.map.frame.axis[no].unit[0] = '-';
- GMT->current.map.frame.axis[no].unit[1] = (char)GMT->current.setting.ps_encoding.code[GMT->current.setting.map_degree_symbol];
- GMT->current.map.frame.axis[no].unit[2] = '\0';
+ GMT->current.map.frame.axis[no].unit[0] = (char)GMT->current.setting.ps_encoding.code[GMT->current.setting.map_degree_symbol];
+ GMT->current.map.frame.axis[no].unit[1] = '\0';
}
}
}
@@ -3989,7 +3988,7 @@ GMT_LOCAL bool gmtinit_parse_J_option (struct GMT_CTRL *GMT, char *args) {
GMT->current.proj.lon0 = GMT->current.proj.pars[0]; GMT->current.proj.lat0 = GMT->current.proj.pars[1];
break;
- case GMT_OBLIQUE_MERC_POLE: /* Oblique mercator, specifying orgin and pole */
+ case GMT_OBLIQUE_MERC_POLE: /* Oblique mercator, specifying origin and pole */
GMT->current.proj.N_hemi = (GMT->common.J.string[1] == 'C') ? true : false; /* Upper case -JoC allows S pole views */
n = sscanf (args, "%[^/]/%[^/]/%[^/]/%[^/]/%s", txt_a, txt_b, txt_c, txt_d, txt_e);
error += gmt_verify_expectations (GMT, GMT_IS_LON, gmt_scanf (GMT, txt_a, GMT_IS_LON, &GMT->current.proj.pars[0]), txt_a);
@@ -4489,7 +4488,7 @@ GMT_LOCAL unsigned int gmtinit_def_std_fonts (struct GMT_CTRL *GMT) {
To add additional fonts, create a similar file called PSL_custom_fonts.txt
in GMT/share/postscriptlight and add your extra font information there.
The fontheight below is the height of A for unit fontsize.
- Encoded = 0 if we may reencode this font as needed.
+ Encoded = 0 if we may re-encode this font as needed.
*/
unsigned int i = 0;
size_t n_alloc = 0;
@@ -5672,21 +5671,21 @@ void gmtlib_explain_options (struct GMT_CTRL *GMT, char *options) {
gmt_message (GMT, "\t Append T (Calendar format), t (time relative to TIME_EPOCH),\n");
gmt_message (GMT, "\t f (floating point), x (longitude), y (latitude) to each item.\n");
gmt_message (GMT, "\t -f[i|o]g means -f[i|o]0x,1y (geographic coordinates).\n");
- gmt_message (GMT, "\t -fp[<unit>] means input is projected coordinates.\n");
+ gmt_message (GMT, "\t -fp[<unit>] means input x,y are in projected coordinates.\n");
break;
case 'g': /* -g option to tell GMT to identify data gaps based on point separation */
- gmt_message (GMT, "\t-g Use data point separations to determine data gaps.\n");
- gmt_message (GMT, "\t Append x|X or y|Y to flag data gaps in x or y coordinates,\n");
- gmt_message (GMT, "\t respectively, and d|D for distance gaps.\n");
- gmt_message (GMT, "\t Upper case means we first project the points. Append <gap>[unit].\n");
+ gmt_message (GMT, "\t-g Use data point separations to determine if there are data gaps.\n");
+ gmt_message (GMT, "\t Append x|X or y|Y to identify data gaps in x or y coordinates,\n");
+ gmt_message (GMT, "\t respectively, and append d|D for distance gaps. Upper case X|Y|D\n");
+ gmt_message (GMT, "\t means we first project the points (requires -J). Append [+|-]<gap>[unit].\n");
gmt_message (GMT, "\t Geographic data: choose from %s [Default is meter (%c)].\n", GMT_LEN_UNITS2_DISPLAY, GMT_MAP_DIST_UNIT);
- gmt_message (GMT, "\t For gaps based on mapped coordinates, choose from %s [%s].\n",
+ gmt_message (GMT, "\t For gaps based on mapped coordinates, choose unit from %s [%s].\n",
GMT_DIM_UNITS_DISPLAY, GMT->session.unit_name[GMT->current.setting.proj_length_unit]);
gmt_message (GMT, "\t Note: For x|y with time data the unit is controlled by TIME_UNIT.\n");
- gmt_message (GMT, "\t Repeat option to specify multiple criteria, and prepend +\n");
- gmt_message (GMT, "\t to indicate that all the criteria must be met [any].\n");
+ gmt_message (GMT, "\t Repeat the -g option to specify multiple criteria, and add -ga\n");
+ gmt_message (GMT, "\t to indicate that all criteria must be met [just one must be met].\n");
break;
case 'h': /* Header */
@@ -5710,13 +5709,13 @@ void gmtlib_explain_options (struct GMT_CTRL *GMT, char *options) {
case 'n': /* -n option for grid resampling parameters in BCR */
- gmt_message (GMT, "\t-n[b|c|l|n][+a][+b<BC>][+c][+t<threshold>] Determine the grid interpolation mode.\n");
- gmt_message (GMT, "\t (b = B-spline, c = bicubic, l = bilinear, n = nearest-neighbor) [Default: bicubic].\n");
- gmt_message (GMT, "\t Append +a switch off antialiasing (except for l) [Default: on].\n");
+ gmt_message (GMT, "\t-n[b|c|l|n][+a][+b<BC>][+c][+t<threshold>] Specify the grid interpolation mode.\n");
+ gmt_message (GMT, "\t (b = B-spline, c = bicubic, l = bilinear, n = nearest-neighbor) [Default is bicubic].\n");
+ gmt_message (GMT, "\t Append +a to switch off antialiasing (except for l) [Default: on].\n");
gmt_message (GMT, "\t Append +b<BC> to change boundary conditions. <BC> can be either:\n");
- gmt_message (GMT, "\t g for geographic boundary conditions, or one or both of\n");
- gmt_message (GMT, "\t x for periodic boundary conditions on x,\n");
- gmt_message (GMT, "\t y for periodic boundary conditions on y.\n");
+ gmt_message (GMT, "\t g for geographic boundary conditions, or one or both of\n");
+ gmt_message (GMT, "\t x for periodic boundary conditions on x,\n");
+ gmt_message (GMT, "\t y for periodic boundary conditions on y.\n");
gmt_message (GMT, "\t [Default: Natural conditions, unless grid is known to be geographic].\n");
gmt_message (GMT, "\t Append +c to clip interpolated grid to input z-min/max [Default may exceed limits].\n");
gmt_message (GMT, "\t Append +t<threshold> to change the minimum weight in vicinity of NaNs. A threshold of\n");
@@ -5734,7 +5733,7 @@ void gmtlib_explain_options (struct GMT_CTRL *GMT, char *options) {
if (gmt_M_compat_check (GMT, 4) || options[k] == 'p') {
gmt_message (GMT, "\t-%c Select a 3-D pseudo perspective view. Append the\n", options[k]);
gmt_message (GMT, "\t azimuth and elevation of the viewpoint [180/90].\n");
- gmt_message (GMT, "\t When used with -Jz|Z, optionally add zlevel for frame, etc [bottom of z-axis]\n");
+ gmt_message (GMT, "\t When used with -Jz|Z, optionally add zlevel for frame, etc. [bottom of z-axis]\n");
gmt_message (GMT, "\t Optionally, append +w<lon/lat[/z] to specify a fixed point\n");
gmt_message (GMT, "\t and +vx/y for its justification. Just append + by itself\n");
gmt_message (GMT, "\t to select default values [region center and page center].\n");
@@ -5861,7 +5860,7 @@ void gmt_label_syntax (struct GMT_CTRL *GMT, unsigned int indent, unsigned int k
gmt_message (GMT, "%s +x[first,last] adds <first> and <last> to these two labels [,'].\n", pad);
gmt_message (GMT, "%s This modifier is only allowed if -SqN2 is used.\n", pad);
}
- gmt_message (GMT, "%s +=<prefix> to give all labels a prefix.\n", pad);
+ if (kind < 2) gmt_message (GMT, "%s +=<prefix> to give all labels a prefix.\n", pad);
}
/*! Contour/line label placement specifications in *contour and psxy[z] */
@@ -5949,9 +5948,9 @@ void gmt_fill_syntax (struct GMT_CTRL *GMT, char option, char *string) {
gmt_message (GMT, "\t 2) <c>/<m>/<y>/<k> in range 0-100%%;\n");
gmt_message (GMT, "\t 3) <hue>-<sat>-<val> in ranges 0-360, 0-1, 0-1;\n");
gmt_message (GMT, "\t 4) any valid color name;\n");
- gmt_message (GMT, "\t 5) P|p<dpi>/<pattern>[:F<color>B<color>], with <dpi> of the pattern.\n");
- gmt_message (GMT, "\t Give <pattern> number from 1-90 or a filename, optionally add\n");
- gmt_message (GMT, "\t replacement fore- or background colors (set - for transparency).\n");
+ gmt_message (GMT, "\t 5) P|p<pattern>[+b<color>][+f<color>][+r<dpi>];\n");
+ gmt_message (GMT, "\t Give <pattern> number from 1-90 or a filename, optionally add +r<dpi> [300].\n");
+ gmt_message (GMT, "\t Optionally, use +f,+b to change fore- or background colors (set - for transparency).\n");
gmt_message (GMT, "\t For PDF fill transparency, append @<transparency> in the range 0-100 [0 = opaque].\n");
}
@@ -5966,7 +5965,7 @@ void gmt_pen_syntax (struct GMT_CTRL *GMT, char option, char *string, unsigned i
gmt_message (GMT, "\t-%c ", option);
gmt_message (GMT, string, gmt_putpen (GMT, &GMT->current.setting.map_default_pen));
gmt_message (GMT, "\n\t <pen> is a comma-separated list of three optional items in the order:\n");
- gmt_message (GMT, "\t <width>[%s], <color>, and <style>[%s].\n", GMT_DIM_UNITS, GMT_DIM_UNITS);
+ gmt_message (GMT, "\t <width>[%s], <color>, and <style>[%s].\n", GMT_DIM_UNITS_DISPLAY, GMT_DIM_UNITS_DISPLAY);
gmt_message (GMT, "\t <width> >= 0.0 sets pen width (default units are points); alternatively a pen\n");
gmt_message (GMT, "\t name: Choose among faint, default, or [thin|thick|fat][er|est], or obese.\n");
gmt_message (GMT, "\t <color> = (1) <gray> or <red>/<green>/<blue>, all in range 0-255,\n");
@@ -6017,25 +6016,25 @@ void gmt_rgb_syntax (struct GMT_CTRL *GMT, char option, char *string) {
}
-void gmt_refpoint_syntax (struct GMT_CTRL *GMT, char option, char *string, unsigned int kind, unsigned int part) {
+void gmt_refpoint_syntax (struct GMT_CTRL *GMT, char *option, char *string, unsigned int kind, unsigned int part) {
/* For -Dg|j|J|n|x */
char *type[GMT_ANCHOR_NTYPES] = {"logo", "image", "legend", "color-bar", "insert", "map scale", "map rose"}, *tab[2] = {"", " "};
unsigned int shift = (kind == GMT_ANCHOR_INSERT) ? 1 : 0; /* Add additional "tab" to front of message */
if (part & 1) { /* Here string is message, or NULL */
- if (string) gmt_message (GMT, "\t-%c %s\n", option, string);
+ if (string) gmt_message (GMT, "\t-%s %s\n", option, string);
gmt_message (GMT, "\t %sPositioning is specified via one of four coordinate systems:\n", tab[shift]);
- gmt_message (GMT, "\t %s Use -%cg to specify <refpoint> with map coordinates.\n", tab[shift], option);
- gmt_message (GMT, "\t %s Use -%cj or -%cJ to specify <refpoint> with 2-char justification code (BL, MC, etc).\n", tab[shift], option, option);
- gmt_message (GMT, "\t %s Use -%cn to specify <refpoint> with normalized coordinates in 0-1 range.\n", tab[shift], option);
- gmt_message (GMT, "\t %s Use -%cx to specify <refpoint> with plot coordinates.\n", tab[shift], option);
- gmt_message (GMT, "\t %sAll except -%cx require the -R and -J options to be set.\n", tab[shift], option);
+ gmt_message (GMT, "\t %s Use -%sg to specify <refpoint> with map coordinates.\n", tab[shift], option);
+ gmt_message (GMT, "\t %s Use -%sj or -%sJ to specify <refpoint> with 2-char justification code (BL, MC, etc).\n", tab[shift], option, option);
+ gmt_message (GMT, "\t %s Use -%sn to specify <refpoint> with normalized coordinates in 0-1 range.\n", tab[shift], option);
+ gmt_message (GMT, "\t %s Use -%sx to specify <refpoint> with plot coordinates.\n", tab[shift], option);
+ gmt_message (GMT, "\t %sAll except -%sx require the -R and -J options to be set.\n", tab[shift], option);
}
/* May need to place other things in the middle */
if (part & 2) { /* Here string is irrelevant */
char *just[GMT_ANCHOR_NTYPES] = {"BL", "BL", "BL", "BL", "BL", "MC", "MC"};
gmt_message (GMT, "\t %sAppend 2-char +j<justify> code to associate that anchor point on the %s with <refpoint>.\n", tab[shift], type[kind]);
- gmt_message (GMT, "\t %sIf +j<justify> is not given then <justify> will default to the same as <refpoint> (with -%cj),\n", tab[shift], option);
- gmt_message (GMT, "\t %s or the mirror opposite of <refpoint> (with -%cJ), or %s (else).\n", tab[shift], option, just[kind]);
+ gmt_message (GMT, "\t %sIf +j<justify> is not given then <justify> will default to the same as <refpoint> (with -%sj),\n", tab[shift], option);
+ gmt_message (GMT, "\t %s or the mirror opposite of <refpoint> (with -%sJ), or %s (else).\n", tab[shift], option, just[kind]);
gmt_message (GMT, "\t %sOptionally, append +o<dx>[/<dy>] to offset %s from <refpoint> in direction implied by <justify> [0/0].\n", tab[shift], type[kind]);
}
}
@@ -6054,9 +6053,9 @@ void gmt_mapinsert_syntax (struct GMT_CTRL *GMT, char option, char *string) {
gmt_message (GMT, "\t Append r if coordinates are the lower left and upper right corners of a rectangular area.\n");
gmt_message (GMT, "\t b) Give <u><xmin>/<xmax>/<ymin>/<ymax> of bounding rectangle in projected coordinates.\n");
gmt_message (GMT, "\t c) Set reference point and dimensions of the insert:\n");
- gmt_refpoint_syntax (GMT, 'D', NULL, GMT_ANCHOR_INSERT, 1);
+ gmt_refpoint_syntax (GMT, "D", NULL, GMT_ANCHOR_INSERT, 1);
gmt_message (GMT, "\t Append <width>[<u>]/<height>[<u>] of bounding rectangle (<u> is unit).\n");
- gmt_refpoint_syntax (GMT, 'D', NULL, GMT_ANCHOR_INSERT, 2);
+ gmt_refpoint_syntax (GMT, "D", NULL, GMT_ANCHOR_INSERT, 2);
gmt_message (GMT, "\t Append +s<file> to save insert lower left corner and dimensions to <file>.\n");
gmt_message (GMT, "\t Set panel attributes separately via the -F option.\n");
}
@@ -6070,7 +6069,7 @@ void gmt_mapscale_syntax (struct GMT_CTRL *GMT, char option, char *string) {
/* Used in psbasemap and pscoast */
if (string[0] == ' ') GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option. Correct syntax:\n", option);
gmt_message (GMT, "\t-%c %s\n", option, string);
- gmt_refpoint_syntax (GMT, 'L', NULL, GMT_ANCHOR_MAPSCALE, 3);
+ gmt_refpoint_syntax (GMT, "L", NULL, GMT_ANCHOR_MAPSCALE, 3);
gmt_message (GMT, "\t Use +c<slat> (with central longitude) or +c<slon>/<slat> to specify scale origin.\n");
gmt_message (GMT, "\t Set scale length with +w<length> and append a unit from %s [km]. Use -%cf to draw a \"fancy\" scale [Default is plain].\n", GMT_LEN_UNITS2_DISPLAY, option);
gmt_message (GMT, "\t Several modifiers are optional:\n");
@@ -6091,7 +6090,7 @@ void gmt_maprose_syntax (struct GMT_CTRL *GMT, char option, char *string) {
gmt_message (GMT, "\t-%c %s\n", option, string);
gmt_message (GMT, "\t Choose between a directional (-Td) or magnetic (-Tm) rose.\n");
gmt_message (GMT, "\t Both share most modifiers for locating and sizing the rose.\n");
- gmt_refpoint_syntax (GMT, 'T', NULL, GMT_ANCHOR_MAPROSE, 3);
+ gmt_refpoint_syntax (GMT, "Td|m", NULL, GMT_ANCHOR_MAPROSE, 3);
gmt_message (GMT, "\t Set the diameter of the rose with modifier +w<width>.\n");
gmt_message (GMT, "\t Several modifiers are optional:\n");
gmt_message (GMT, "\t Add labels with +l, which places the letters W, E, S, N at the cardinal points.\n");
@@ -6440,7 +6439,7 @@ void gmt_syntax (struct GMT_CTRL *GMT, char option) {
gmt_message (GMT, "\t <colinfo> is <colno>|<colrange>u, where column numbers start at 0\n");
gmt_message (GMT, "\t a range is given as <first>-<last>, e.g., 2-5., u is type:\n");
gmt_message (GMT, "\t t: relative time, T: absolute time, f: floating point,\n");
- gmt_message (GMT, "\t x: longitude, y: latitude, g: geographic coordinate.\n");
+ gmt_message (GMT, "\t x: longitude, y: latitude, g: short for 0x,1y.\n");
break;
case 'g':
@@ -6692,6 +6691,10 @@ int gmt_parse_R_option (struct GMT_CTRL *GMT, char *item) {
if (GMT_Destroy_Data (GMT->parent, &G) != GMT_OK) {
return (GMT->parent->error);
}
+ if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Handle round-off in actual_range for latitudes */
+ if (gmt_M_is_Npole (GMT->current.io.grd_info.grd.wesn[YHI])) GMT->current.io.grd_info.grd.wesn[YHI] = +90.0;
+ if (gmt_M_is_Spole (GMT->current.io.grd_info.grd.wesn[YLO])) GMT->current.io.grd_info.grd.wesn[YLO] = -90.0;
+ }
if ((GMT->current.proj.projection == GMT_UTM || GMT->current.proj.projection == GMT_TM || GMT->current.proj.projection == GMT_STEREO)) { /* Perhaps we got an [U]TM or stereographic grid? */
if (fabs (GMT->current.io.grd_info.grd.wesn[XLO]) > 360.0 || fabs (GMT->current.io.grd_info.grd.wesn[XHI]) > 360.0 \
|| fabs (GMT->current.io.grd_info.grd.wesn[YLO]) > 90.0 || fabs (GMT->current.io.grd_info.grd.wesn[YHI]) > 90.0) { /* Yes we probably did, but cannot be sure */
@@ -6702,6 +6705,8 @@ int gmt_parse_R_option (struct GMT_CTRL *GMT, char *item) {
}
if (!inv_project) { /* Got grid with degrees */
gmt_M_memcpy (GMT->common.R.wesn, GMT->current.io.grd_info.grd.wesn, 4, double);
+ GMT_Report (GMT->parent, GMT_MSG_DEBUG,
+ "-R<grdfile> converted to -R%.16g/%.16g/%.16g/%.16g\n", GMT->common.R.wesn[XLO], GMT->common.R.wesn[XHI], GMT->common.R.wesn[YLO], GMT->common.R.wesn[YHI]);
#if 0
/* Next bit removed because of issue #592. Should not change the boundaries of the grid */
if (GMT->current.io.grd_info.grd.registration == GMT_GRID_NODE_REG && doubleAlmostEqualZero (GMT->common.R.wesn[XHI] - GMT->common.R.wesn[XLO] + GMT->current.io.grd_info.grd.inc[GMT_X], 360.0)) {
@@ -6789,7 +6794,7 @@ int gmt_parse_R_option (struct GMT_CTRL *GMT, char *item) {
i++;
}
if (GMT->common.R.oblique) {
- double_swap (p[2], p[1]); /* So w/e/s/n makes sense */
+ gmt_M_double_swap (p[2], p[1]); /* So w/e/s/n makes sense */
gmt_M_memcpy (GMT->common.R.wesn_orig, p, 4, double); /* Save these in case they get enlarged by oblique projections */
}
if (inv_project) { /* Convert rectangular distances to geographic corner coordinates */
@@ -7006,7 +7011,7 @@ unsigned int gmt_parse_segmentize (struct GMT_CTRL *GMT, char option, char *in_a
* Thus, -F or -Fc or -Fcs or -Fs is the standard default. However, if we use
* -Fcf or -Ff then we ignore segment headers WITHIN each file, except for the first header
* in each file. In other words, all points in a file will be considered continuous.
- * Finally, using -Fca or -Fa then all points in all fields are considered continous and
+ * Finally, using -Fca or -Fa then all points in all fields are considered continuous and
* only the first segment header in the first file is considered. So only a|f|r is allowed.
* 2) -Fn: Network. For each group of points we connect each point with every other point.
* The modifiers a,f,s control what the "group" is. With s, we construct a separate
@@ -9884,6 +9889,9 @@ int gmt_pickdefaults (struct GMT_CTRL *GMT, bool lines, struct GMT_OPTION *optio
if (GMT_Begin_IO (GMT->parent, GMT_IS_TEXTSET, GMT_OUT, GMT_HEADER_ON) != GMT_OK) {
return (GMT->parent->error); /* Enables data output and sets access mode */
}
+ if (GMT_Set_Geometry (GMT->parent, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ return (GMT->parent->error);
+ }
for (opt = options; opt; opt = opt->next) {
if (!(opt->option == '<' || opt->option == '#') || !opt->arg)
continue; /* Skip other and empty options */
@@ -10590,7 +10598,7 @@ int gmt_parse_vector (struct GMT_CTRL *GMT, char symbol, char *text, struct GMT_
}
}
break;
- case 'l': S->v.status |= (GMT_VEC_BEGIN_L + GMT_VEC_END_L); break; /* Obsolete modifier for left halfs at active heads */
+ case 'l': S->v.status |= (GMT_VEC_BEGIN_L + GMT_VEC_END_L); break; /* Obsolete modifier for left halves at active heads */
case 'm': /* Vector head at midpoint of segment */
switch (p[1]) {
case '\0': f = 1; S->v.status |= PSL_VEC_MID_FWD; break; /* Place forward-pointing arrow head at center of segment */
@@ -10656,7 +10664,7 @@ int gmt_parse_vector (struct GMT_CTRL *GMT, char symbol, char *text, struct GMT_
}
break;
case 'q': S->v.status |= GMT_VEC_ANGLES; break; /* Expect start,stop angle rather than length in input */
- case 'r': S->v.status |= (GMT_VEC_BEGIN_R + GMT_VEC_END_R); break; /* Obsolete modifier for right halfs at active heads */
+ case 'r': S->v.status |= (GMT_VEC_BEGIN_R + GMT_VEC_END_R); break; /* Obsolete modifier for right halves at active heads */
case 's': S->v.status |= GMT_VEC_JUST_S; break; /* Input (angle,length) are vector end point (x,y) instead */
case 't': /* Get endpoint trim(s) */
switch (p[1]) {
@@ -10721,7 +10729,7 @@ int gmt_parse_symbol_option (struct GMT_CTRL *GMT, char *text, struct GMT_SYMBOL
p->factor = 1.0;
/* col_off is the col number of first parameter after (x,y) [or (x,y,z) if mode == 1)].
- However, if size is not given then that is requred too so col_off++ */
+ However, if size is not given then that is required too so col_off++ */
if (!strncmp (text, "E-", 2U) || !strncmp (text, "J-", 2U)) {
/* Special degenerate geographic ellipse and rectangle symbols, remove the - to avoid parsing issues */
@@ -11871,6 +11879,10 @@ int gmt_parse_common_options (struct GMT_CTRL *GMT, char *list, char option, cha
if (item[0]) {
GMT->common.t.active = true;
GMT->common.t.value = atof (item);
+ if (GMT->common.t.value < 0.0 || GMT->common.t.value > 100.0) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error -t: Transparency must be in 0-100%% range!\n");
+ error++;
+ }
}
else {
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Option -t was not given any value (please add transparency in 0-100%% range)!\n");
diff --git a/src/gmt_internals.h b/src/gmt_internals.h
index 3054366..078f7fd 100644
--- a/src/gmt_internals.h
+++ b/src/gmt_internals.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_internals.h 17049 2016-08-31 21:08:56Z pwessel $
+ * $Id: gmt_internals.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_io.c b/src/gmt_io.c
index 1cd2eda..686fe5c 100644
--- a/src/gmt_io.c
+++ b/src/gmt_io.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_io.c 17149 2016-09-30 21:26:07Z pwessel $
+ * $Id: gmt_io.c 17588 2017-02-23 23:35:14Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -38,7 +38,7 @@
*
* gmtlib_getuserpath Get pathname of file in "user directories" (GMT->session.TMPDIR, CWD, HOME, GMT->session.USERDIR)
* gmt_getdatapath Get pathname of file in "data directories" (CWD, GMT_{USER,DATA,GRID,IMG}DIR)
- * gmt_getsharepath Get pathname of file in "share directries" (CWD, GMT->session.USERDIR, GMT->session.SHAREDIR tree)
+ * gmt_getsharepath Get pathname of file in "share directories" (CWD, GMT->session.USERDIR, GMT->session.SHAREDIR tree)
* gmt_fopen: Open a file using gmt_getdatapath
* gmt_fclose: Close a file
* gmtlib_io_init: Init GMT_IO structure
@@ -752,7 +752,7 @@ GMT_LOCAL bool gmtio_get_binary_input (struct GMT_CTRL *GMT, FILE *fp, uint64_t
uint64_t i;
if (n > GMT_MAX_COLUMNS) {
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Number of data columns (%d) exceeds limit (GMT_MAX_COLUMS = %d)\n", n, GMT_MAX_COLUMNS);
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Number of data columns (%d) exceeds limit (GMT_MAX_COLUMNS = %d)\n", n, GMT_MAX_COLUMNS);
return (true); /* Done with this file */
}
for (i = 0; i < n; i++) {
@@ -792,9 +792,9 @@ GMT_LOCAL int gmtio_bin_output (struct GMT_CTRL *GMT, FILE *fp, uint64_t n, doub
uint64_t i, n_out, col_pos;
double val;
- if (gmt_skip_output (GMT, ptr, n)) return (0); /* Record was skipped via -s[a|r] */
+ if (gmt_skip_output (GMT, ptr, n)) return (-1); /* Record was skipped via -s[a|r] */
if (GMT->current.setting.io_lonlat_toggle[GMT_OUT]) /* Write lat/lon instead of lon/lat */
- double_swap (ptr[GMT_X], ptr[GMT_Y]);
+ gmt_M_double_swap (ptr[GMT_X], ptr[GMT_Y]);
n_out = (GMT->common.o.active) ? GMT->common.o.n_cols : n;
for (i = 0, k = 0; i < n_out; i++) {
col_pos = (GMT->common.o.active) ? GMT->current.io.col[GMT_OUT][i].col : i; /* Which data column to pick */
@@ -805,7 +805,7 @@ GMT_LOCAL int gmtio_bin_output (struct GMT_CTRL *GMT, FILE *fp, uint64_t n, doub
k += GMT->current.io.fmt[GMT_OUT][i].io (GMT, fp, 1, &val);
if (GMT->current.io.fmt[GMT_OUT][i].skip > 0) gmtio_x_write (GMT, fp, GMT->current.io.fmt[GMT_OUT][i].skip); /* Post-fill */
}
- return (k);
+ return (0);
}
/*! . */
@@ -814,7 +814,7 @@ GMT_LOCAL int gmtio_ascii_output (struct GMT_CTRL *GMT, FILE *fp, uint64_t n, do
int e = 0, wn = 0;
double val;
- if (gmt_skip_output (GMT, ptr, n)) return (0); /* Record was skipped via -s[a|r] */
+ if (gmt_skip_output (GMT, ptr, n)) return (-1); /* Record was skipped via -s[a|r] */
n_out = (GMT->common.o.active) ? GMT->common.o.n_cols : n;
last = n_out - 1; /* Last filed, need to output linefeed instead of delimiter */
@@ -839,7 +839,7 @@ GMT_LOCAL int gmtio_ascii_output (struct GMT_CTRL *GMT, FILE *fp, uint64_t n, do
wn += e;
}
- return ((e < 0) ? e : wn);
+ return ((e < 0) ? -1 : 0);
}
/*! . */
@@ -1771,14 +1771,14 @@ GMT_LOCAL int gmtio_get_dms_order (struct GMT_CTRL *GMT, char *text, struct GMT_
* Items not encountered are left as -1.
*/
- unsigned int j, n_d, n_m, n_s, n_x, n_dec, order, error = 0;
+ unsigned int j, n_d, n_m, n_s, n_x, n_dec, n_period, order, error = 0;
int sequence[3], last, i_signed, n_delim;
size_t i1, i;
bool big_to_small;
for (i = 0; i < 3; i++) S->order[i] = -1; /* Meaning not encountered yet */
- n_d = n_m = n_s = n_x = n_dec = n_delim = 0;
+ n_d = n_m = n_s = n_x = n_dec = n_delim = n_period = 0;
S->delimiter[0][0] = S->delimiter[0][1] = S->delimiter[1][0] = S->delimiter[1][1] = 0;
sequence[0] = sequence[1] = sequence[2] = -1;
@@ -1836,6 +1836,7 @@ GMT_LOCAL int gmtio_get_dms_order (struct GMT_CTRL *GMT, char *text, struct GMT_
n_s++;
break;
case '.': /* Decimal point for seconds? */
+ n_period++;
if (text[i+1] == 'x')
n_dec++;
else { /* Must be a delimiter */
@@ -1887,6 +1888,8 @@ GMT_LOCAL int gmtio_get_dms_order (struct GMT_CTRL *GMT, char *text, struct GMT_
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "ERROR: Unacceptable dmmss template %s\n", text);
GMT_exit (GMT, GMT_PARSE_ERROR); return GMT_PARSE_ERROR;
}
+ else if (n_period > 1)
+ GMT_Report (GMT->parent, GMT_MSG_VERBOSE, "WARNING: Multiple periods in dmmss template %s is likely to lead to confusion\n", text);
return (GMT_NOERROR);
}
@@ -2626,7 +2629,7 @@ GMT_LOCAL int gmtio_prep_ogr_output (struct GMT_CTRL *GMT, struct GMT_DATASET *D
}
gmtio_alloc_ogr_seg (GMT, T->segment[seg], T->ogr->n_aspatial); /* Copy over any feature-specific values */
T->segment[seg]->ogr->pol_mode = GMT_IS_PERIMETER;
- gmt_set_seg_minmax (GMT, T->segment[seg]); /* Make sure min/max are set per polygon */
+ gmt_set_seg_minmax (GMT, T->ogr->geometry, T->segment[seg]); /* Make sure min/max are set per polygon */
}
/* OK, they are all polygons. Determine any polygon holes: if a point is fully inside another polygon (not on the edge) */
@@ -3204,7 +3207,7 @@ GMT_LOCAL void *gmtio_ascii_input (struct GMT_CTRL *GMT, FILE *fp, uint64_t *n,
col_no, *n, GMT->current.io.rec_no);
if (GMT->current.setting.io_lonlat_toggle[GMT_IN] && col_no >= 2)
- double_swap (GMT->current.io.curr_rec[GMT_X], GMT->current.io.curr_rec[GMT_Y]); /* Got lat/lon instead of lon/lat */
+ gmt_M_double_swap (GMT->current.io.curr_rec[GMT_X], GMT->current.io.curr_rec[GMT_Y]); /* Got lat/lon instead of lon/lat */
if (GMT->current.proj.inv_coordinates) gmtio_adjust_projected (GMT); /* Must apply inverse projection to get lon, lat */
if (GMT->current.io.col_type[GMT_IN][GMT_X] & GMT_IS_LON) /* Must account for periodicity in 360 as per current rule*/
gmtio_adjust_periodic_x (GMT);
@@ -3332,7 +3335,7 @@ GMT_LOCAL int gmtio_write_table (struct GMT_CTRL *GMT, void *dest, unsigned int
}
}
if (GMT->current.io.multi_segments[GMT_OUT]) { /* Want to write segment headers */
- if (table->segment[seg]->ogr) gmtio_build_segheader_from_ogr (GMT, GMT_OUT, table->segment[seg]); /* We have access to OGR metadata */
+ if (!GMT->common.a.output && table->segment[seg]->ogr) gmtio_build_segheader_from_ogr (GMT, GMT_OUT, table->segment[seg]); /* We have access to OGR metadata */
if (table->segment[seg]->header)
strncpy (GMT->current.io.segment_header, table->segment[seg]->header, GMT_BUFSIZ-1);
else
@@ -3365,7 +3368,7 @@ GMT_LOCAL int gmtio_write_table (struct GMT_CTRL *GMT, void *dest, unsigned int
/*! . */
GMT_LOCAL void * gmtio_nc_input (struct GMT_CTRL *GMT, FILE *fp, uint64_t *n, int *retval)
{ /* netCDF tables contain information about the number of records, so we can use a
- * faster startegy: When file is opened, determine number of rows and columns and
+ * faster strategy: When file is opened, determine number of rows and columns and
* preallocate all the column vectors. Then, when we ask for the first data record
* we read the entire data set. We then simply return the values corresponding to
* the current row. Note some variables may be 2-D and we then consider them as a
@@ -3919,10 +3922,10 @@ void gmt_set_tableheader (struct GMT_CTRL *GMT, int direction, bool true_false)
/*! . */
int gmt_z_output (struct GMT_CTRL *GMT, FILE *fp, uint64_t n, double *data) {
int err;
- if (gmt_skip_output (GMT, data, n)) return (0); /* Record was skipped via -s[a|r] */
+ if (gmt_skip_output (GMT, data, n)) return (-1); /* Record was skipped via -s[a|r] */
err = GMT->current.io.write_item (GMT, fp, n, data);
/* Cast below since the output functions are declared with uint64_t but cannot really exceed 4096... SHould change uint64_t to uint32_t */
- return (err ? -1 : (int)n); /* Return -1 if failed, else n items written */
+ return (err ? -1 : 0); /* Return -1 if failed, else n items written */
}
/* gmt_z_input and gmt_z_output are used in grd2xyz/xyz2grd to fascilitate reading of one-col items via the general i/o machinery */
@@ -3986,7 +3989,7 @@ int gmtlib_process_binary_input (struct GMT_CTRL *GMT, uint64_t n_read) {
if (GMT->current.io.curr_rec[GMT_X] == GMT->current.io.prev_rec[GMT_X] && GMT->current.io.curr_rec[GMT_Y] == GMT->current.io.prev_rec[GMT_Y]) return (2); /* Yes, duplicate */
}
if (GMT->current.setting.io_lonlat_toggle[GMT_IN] && n_read >= 2)
- double_swap (GMT->current.io.curr_rec[GMT_X], GMT->current.io.curr_rec[GMT_Y]); /* Got lat/lon instead of lon/lat */
+ gmt_M_double_swap (GMT->current.io.curr_rec[GMT_X], GMT->current.io.curr_rec[GMT_Y]); /* Got lat/lon instead of lon/lat */
if (GMT->current.proj.inv_coordinates) gmtio_adjust_projected (GMT); /* Must apply inverse projection to get lon, lat */
if (GMT->current.io.col_type[GMT_IN][GMT_X] & GMT_IS_LON) gmtio_adjust_periodic_x (GMT); /* Must account for periodicity in 360 */
else if (GMT->current.io.col_type[GMT_IN][GMT_Y] & GMT_IS_LON) gmtio_adjust_periodic_y (GMT); /* Must account for periodicity in 360 as per current rule*/
@@ -4508,7 +4511,7 @@ int gmt_access (struct GMT_CTRL *GMT, const char* filename, int mode) {
if ((c = gmtlib_file_unitscale (file))) c[0] = '\0'; /* Chop off any x/u unit specification */
if (mode == W_OK)
return (access (file, mode)); /* When writing, only look in current directory */
- if (mode == R_OK || mode == F_OK) { /* Look in special directories when reading or just checking for existance */
+ if (mode == R_OK || mode == F_OK) { /* Look in special directories when reading or just checking for existence */
char path[GMT_BUFSIZ];
return (gmt_getdatapath (GMT, file, path, mode) ? 0 : -1);
}
@@ -4644,7 +4647,7 @@ bool gmt_skip_output (struct GMT_CTRL *GMT, double *cols, uint64_t n_cols) {
uint64_t c, n_nan;
if (n_cols > GMT_MAX_COLUMNS) {
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Number of output data columns (%d) exceeds limit (GMT_MAX_COLUMS = %d)\n", n_cols, GMT_MAX_COLUMNS);
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Number of output data columns (%d) exceeds limit (GMT_MAX_COLUMNS = %d)\n", n_cols, GMT_MAX_COLUMNS);
return (true); /* Skip record since we cannot access that many columns */
}
if (GMT->current.setting.io_nan_mode == GMT_IO_NAN_OK) return (false); /* Normal case; output the record */
@@ -4680,9 +4683,9 @@ void gmt_format_abstime_output (struct GMT_CTRL *GMT, double dt, char *text) {
char date[GMT_LEN16] = {""}, tclock[GMT_LEN16] = {""};
gmt_format_calendar (GMT, date, tclock, &GMT->current.io.date_output, &GMT->current.io.clock_output, false, 1, dt);
- if (date[0] == '\0') /* No date wanted hence dont use T */
+ if (date[0] == '\0') /* No date wanted hence don't use T */
sprintf (text, "%s", tclock);
- else if (tclock[0] == '\0') /* No clock wanted hence dont use T */
+ else if (tclock[0] == '\0') /* No clock wanted hence don't use T */
sprintf (text, "%s", date);
else /* ISO format */
sprintf (text, "%sT%s", date, tclock);
@@ -4943,6 +4946,7 @@ void gmt_set_seg_polar (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S) {
* true of course. */
int answer;
+ if ((GMT->current.io.col_type[GMT_IN][GMT_X] & GMT_IS_GEO) == 0 || S->n_columns < 2) return; /* No can do */
if ((answer = gmtlib_determine_pole (GMT, S->data[GMT_X], S->data[GMT_Y], S->n_rows)) == -99) return; /* No good */
if (answer) { /* true if contains a pole; adjust rectangular bounds and set pole flag */
S->pole = (answer < 0) ? -1 : +1;
@@ -5080,7 +5084,7 @@ void gmt_write_segmentheader (struct GMT_CTRL *GMT, FILE *fp, uint64_t n_cols) {
void gmtlib_io_binary_header (struct GMT_CTRL *GMT, FILE *fp, unsigned int dir) {
uint64_t k;
char c = ' ';
- if (dir == GMT_IN) { /* Use fread since we dont know if input is a stream or a file */
+ if (dir == GMT_IN) { /* Use fread since we don't know if input is a stream or a file */
size_t nr = 0;
for (k = 0; k < GMT->current.setting.io_n_header_items; k++) nr += gmt_M_fread (&c, sizeof (char), 1U, fp);
}
@@ -5973,7 +5977,7 @@ int gmt_scanf (struct GMT_CTRL *GMT, char *s, unsigned int expectation, double *
break;
case GMT_IS_UNKNOWN:
- /* True if we dont know but must try both geographic or float formats */
+ /* True if we don't know but must try both geographic or float formats */
type = gmtio_scanf_geo (s, val);
if ((type == GMT_IS_LON) && GMT->current.io.warn_geo_as_cartesion) {
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "GMT: Longitude input data detected and successfully converted but will be considered Cartesian coordinates.\n");
@@ -6124,7 +6128,7 @@ struct GMT_TEXTTABLE * gmtlib_read_texttable (struct GMT_CTRL *GMT, void *source
n_row_alloc = GMT_CHUNK;
row = 0;
if (!no_segments) {
- in = gmtio_ascii_textinput (GMT, fp, &ncol, &status); /* Don't read if we didnt read a segment header up front */
+ in = gmtio_ascii_textinput (GMT, fp, &ncol, &status); /* Don't read if we didn't read a segment header up front */
n_read++;
}
no_segments = false; /* This has now served its purpose */
@@ -6182,7 +6186,7 @@ struct GMT_TEXTTABLE * gmtlib_read_texttable (struct GMT_CTRL *GMT, void *source
}
/*! . */
-void gmt_set_seg_minmax (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S) {
+void gmt_set_seg_minmax (struct GMT_CTRL *GMT, unsigned int geometry, struct GMT_DATASEGMENT *S) {
/* Determine the min/max values for each column in the segment */
uint64_t row, col;
@@ -6201,10 +6205,12 @@ void gmt_set_seg_minmax (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S) {
}
}
}
+ if (geometry == GMT_IS_POLY)
+ gmt_set_seg_polar (GMT, S);
}
/*! . */
-void gmt_set_tbl_minmax (struct GMT_CTRL *GMT, struct GMT_DATATABLE *T) {
+void gmt_set_tbl_minmax (struct GMT_CTRL *GMT, unsigned int geometry, struct GMT_DATATABLE *T) {
/* Update the min/max of all segments and the entire table */
uint64_t seg, col;
struct GMT_DATASEGMENT *S = NULL;
@@ -6220,7 +6226,7 @@ void gmt_set_tbl_minmax (struct GMT_CTRL *GMT, struct GMT_DATATABLE *T) {
T->n_records = 0;
for (seg = 0; seg < T->n_segments; seg++) {
S = T->segment[seg];
- gmt_set_seg_minmax (GMT, S);
+ gmt_set_seg_minmax (GMT, geometry, S);
if (S->n_rows == 0) continue;
for (col = 0; col < T->n_columns; col++) {
if (S->min[col] < T->min[col]) T->min[col] = S->min[col];
@@ -6245,7 +6251,7 @@ void gmtlib_set_dataset_minmax (struct GMT_CTRL *GMT, struct GMT_DATASET *D) {
D->n_records = D->n_segments = 0;
for (tbl = 0; tbl < D->n_tables; tbl++) {
T = D->table[tbl];
- gmt_set_tbl_minmax (GMT, T);
+ gmt_set_tbl_minmax (GMT, D->geometry, T);
for (col = 0; col < D->n_columns; col++) {
if (T->min[col] < D->min[col]) D->min[col] = T->min[col];
if (T->max[col] > D->max[col]) D->max[col] = T->max[col];
@@ -6460,7 +6466,7 @@ bool gmt_parse_segment_item (struct GMT_CTRL *GMT, char *in_string, char *patter
if (!out_string) return (true); /* If NULL is passed as out_string then we just return true if we find the option */
out_string[0] = '\0'; /* Reset string to empty before we try to set it below */
k = (size_t)t - (size_t)in_string; /* Position of pattern in in_string */
- if (k && !(in_string[k-1] == ' ' || in_string[k-1] == '\t')) return (false); /* Option not first or preceeded by whitespace */
+ if (k && !(in_string[k-1] == ' ' || in_string[k-1] == '\t')) return (false); /* Option not first or preceded by whitespace */
t += 2; /* Position of the argument */
if (t[0] == '\"') /* Double quoted argument, must scan from next character until terminal quote */
sscanf (++t, "%[^\"]", out_string);
@@ -7112,8 +7118,7 @@ struct GMT_DATATABLE * gmtlib_read_table (struct GMT_CTRL *GMT, void *source, un
}
else { /* OK to populate segment and increment counters */
gmtlib_assign_segment (GMT, T->segment[seg], row, T->segment[seg]->n_columns); /* Allocate and place arrays into segment */
- gmt_set_seg_minmax (GMT, T->segment[seg]); /* Set min/max */
- if (poly && (GMT->current.io.col_type[GMT_IN][GMT_X] & GMT_IS_GEO)) gmt_set_seg_polar (GMT, T->segment[seg]);
+ gmt_set_seg_minmax (GMT, *geometry, T->segment[seg]); /* Set min/max */
T->n_records += row; /* Total number of records so far */
T->segment[seg]->id = seg; /* Internal segment number */
}
@@ -7210,14 +7215,14 @@ struct GMT_DATASET * gmt_alloc_dataset (struct GMT_CTRL *GMT, struct GMT_DATASET
D->table[0]->n_headers = Din->table[0]->n_headers;
if (D->table[0]->n_headers) D->table[0]->header = gmt_M_memory (GMT, NULL, D->table[0]->n_headers, char *);
for (hdr = 0; hdr < D->table[0]->n_headers; hdr++) { /* Concatenate headers */
- for (tbl = len = 0; tbl < Din->n_tables; tbl++) len += (strlen (Din->table[tbl]->header[hdr]) + 2);
+ for (tbl = len = 0; tbl < Din->n_tables; tbl++) if (Din->table[tbl]->header) len += (strlen (Din->table[tbl]->header[hdr]) + 2);
D->table[0]->header[hdr] = calloc (len, sizeof (char));
strncpy (D->table[0]->header[hdr], Din->table[0]->header[hdr], len);
if (Din->n_tables > 1) gmt_chop (D->table[0]->header[hdr]); /* Remove newline */
for (tbl = 1; tbl < Din->n_tables; tbl++) { /* Now go across tables to paste */
if (tbl < (Din->n_tables - 1)) gmt_chop (Din->table[tbl]->header[hdr]);
strcat (D->table[0]->header[hdr], "\t");
- strcat (D->table[0]->header[hdr], Din->table[tbl]->header[hdr]);
+ if (Din->table[tbl]->header) strcat (D->table[0]->header[hdr], Din->table[tbl]->header[hdr]);
}
}
@@ -7746,7 +7751,7 @@ int gmt_conv_intext2dbl (struct GMT_CTRL *GMT, char *record, unsigned int ncols)
gmt_scanf (GMT, p, GMT->current.io.col_type[GMT_IN][k], &GMT->current.io.curr_rec[k]); /* Be tolerant of errors */
k++;
}
- if (GMT->current.setting.io_lonlat_toggle[GMT_IN] && k >= 2) double_swap (GMT->current.io.curr_rec[GMT_X], GMT->current.io.curr_rec[GMT_Y]); /* Got lat/lon instead of lon/lat */
+ if (GMT->current.setting.io_lonlat_toggle[GMT_IN] && k >= 2) gmt_M_double_swap (GMT->current.io.curr_rec[GMT_X], GMT->current.io.curr_rec[GMT_Y]); /* Got lat/lon instead of lon/lat */
if (GMT->current.io.col_type[GMT_IN][GMT_X] & GMT_IS_LON) /* Must account for periodicity in 360 */
gmtio_adjust_periodic_x (GMT);
else if (GMT->current.io.col_type[GMT_IN][GMT_Y] & GMT_IS_LON) /* Must account for periodicity in 360 as per current rule*/
diff --git a/src/gmt_io.h b/src/gmt_io.h
index 94fb241..d8b77f8 100644
--- a/src/gmt_io.h
+++ b/src/gmt_io.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_io.h 16811 2016-07-15 23:02:04Z pwessel $
+ * $Id: gmt_io.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -78,7 +78,7 @@ enum GMT_enum_ogr {
GMT_IS_MULTILINESTRING,
GMT_IS_MULTIPOLYGON};
-/*! Codes for aspatial assocation with segment header options: */
+/*! Codes for aspatial association with segment header options: */
enum GMT_enum_segopt {
/*! -D */ GMT_IS_D = -1,
/*! -G */ GMT_IS_G = -2,
diff --git a/src/gmt_macros.h b/src/gmt_macros.h
index 3b5c600..d07704a 100644
--- a/src/gmt_macros.h
+++ b/src/gmt_macros.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_macros.h 16722 2016-07-06 13:46:09Z remko $
+ * $Id: gmt_macros.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -16,7 +16,7 @@
* Contact info: gmt.soest.hawaii.edu
*--------------------------------------------------------------------*/
/*
- * gmt_macros.h contains definitions of macros used throught GMT.
+ * gmt_macros.h contains definitions of macros used through GMT.
*
* Author: Paul Wessel
* Date: 01-OCT-2009
@@ -25,7 +25,7 @@
/*!
* \file gmt_macros.h
- * \brief Definitions of macros used throught GMT.
+ * \brief Definitions of macros used through GMT.
*/
#ifndef _GMT_MACROS_H
@@ -89,13 +89,13 @@
/*! Macros for swapping misc data types */
-#define bool_swap(x, y) {bool bool_tmp; bool_tmp = x, x = y, y = bool_tmp;}
-#define char_swap(x, y) {char char_tmp; char_tmp = x, x = y, y = char_tmp;}
-#define uint64_swap(x, y) {uint64_t uint64_t_tmp; uint64_t_tmp = x, x = y, y = uint64_t_tmp;}
-#define int_swap(x, y) {int int_tmp; int_tmp = x, x = y, y = int_tmp;}
-#define uint_swap(x, y) {unsigned int uint_tmp; uint_tmp = x, x = y, y = uint_tmp;}
-#define double_swap(x, y) {double double_tmp; double_tmp = x, x = y, y = double_tmp;}
-#define float_swap(x, y) {float float_tmp; float_tmp = x, x = y, y = float_tmp;}
+#define gmt_M_bool_swap(x, y) {bool bool_tmp; bool_tmp = x, x = y, y = bool_tmp;}
+#define gmt_M_char_swap(x, y) {char char_tmp; char_tmp = x, x = y, y = char_tmp;}
+#define gmt_M_uint64_swap(x, y) {uint64_t uint64_t_tmp; uint64_t_tmp = x, x = y, y = uint64_t_tmp;}
+#define gmt_M_int_swap(x, y) {int int_tmp; int_tmp = x, x = y, y = int_tmp;}
+#define gmt_M_uint_swap(x, y) {unsigned int uint_tmp; uint_tmp = x, x = y, y = uint_tmp;}
+#define gmt_M_double_swap(x, y) {double double_tmp; double_tmp = x, x = y, y = double_tmp;}
+#define gmt_M_float_swap(x, y) {float float_tmp; float_tmp = x, x = y, y = float_tmp;}
/*! Macro to ensure proper value and sign of a change in longitude from lon1 to lon2 */
#define gmt_M_set_delta_lon(lon1,lon2,delta) {delta = lon2 - lon1; if (fabs (delta) > 180.0) delta = copysign (360.0 - fabs (delta), -delta);}
diff --git a/src/gmt_make_module_src.sh b/src/gmt_make_module_src.sh
index e56b3c8..31dbaf4 100755
--- a/src/gmt_make_module_src.sh
+++ b/src/gmt_make_module_src.sh
@@ -2,7 +2,7 @@
#
# $Id: gmt_make_module_src.sh 16501 2016-06-04 18:21:29Z pwessel $
#
-# Copyright (c) 2012-2016
+# Copyright (c) 2012-2017
# by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
diff --git a/src/gmt_map.c b/src/gmt_map.c
index 6dc8e07..f93ef1b 100644
--- a/src/gmt_map.c
+++ b/src/gmt_map.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_map.c 17158 2016-10-03 07:03:48Z pwessel $
+ * $Id: gmt_map.c 17543 2017-02-09 14:14:29Z jluis $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -481,7 +481,7 @@ GMT_LOCAL void map_lat_swap_init (struct GMT_CTRL *GMT) {
/* PW notes: Projections only convert latitudes if GMT->current.proj.GMT_convert_latitudes is true.
* This is set by gmt_map_setup if the ellipsoid is not a sphere. Calling map_lat_swap_init by itself
* does not affect the mapping machinery. Since various situations call for the use
- * of auxilliary latitudes we initialize map_lat_swap_init in gmt_begin. This means
+ * of auxiliary latitudes we initialize map_lat_swap_init in gmt_begin. This means
* programs can use functions like gmt_lat_swap whenever needed.
*/
@@ -875,11 +875,11 @@ GMT_LOCAL unsigned int map_wesn_crossing (struct GMT_CTRL *GMT, double lon0, dou
gmt_geo_to_xy (GMT, lon0, lat0, &x0, &y0);
if (hypot (x0 - xx[1], y0 - yy[1]) < hypot (x0 - xx[0], y0 - yy[0])) {
- double_swap (clon[0], clon[1]);
- double_swap (clat[0], clat[1]);
- double_swap (xx[0], xx[1]);
- double_swap (yy[0], yy[1]);
- uint_swap (sides[0], sides[1]);
+ gmt_M_double_swap (clon[0], clon[1]);
+ gmt_M_double_swap (clat[0], clat[1]);
+ gmt_M_double_swap (xx[0], xx[1]);
+ gmt_M_double_swap (yy[0], yy[1]);
+ gmt_M_uint_swap (sides[0], sides[1]);
}
return (2);
@@ -1034,11 +1034,11 @@ GMT_LOCAL unsigned int map_rect_crossing (struct GMT_CTRL *GMT, double lon0, dou
/* Sort the two intermediate points into the right order based on projected distances from the first point */
if (hypot (x0 - xx[1], y0 - yy[1]) < hypot (x0 - xx[0], y0 - yy[0])) {
- double_swap (clon[0], clon[1]);
- double_swap (clat[0], clat[1]);
- double_swap (xx[0], xx[1]);
- double_swap (yy[0], yy[1]);
- uint_swap (sides[0], sides[1]);
+ gmt_M_double_swap (clon[0], clon[1]);
+ gmt_M_double_swap (clat[0], clat[1]);
+ gmt_M_double_swap (xx[0], xx[1]);
+ gmt_M_double_swap (yy[0], yy[1]);
+ gmt_M_uint_swap (sides[0], sides[1]);
}
return (2);
@@ -1191,8 +1191,8 @@ GMT_LOCAL int map_ellipse_crossing (struct GMT_CTRL *GMT, double lon1, double la
if ((jump = map_jump_x (GMT, x2, y2, x1, y1))) {
(*GMT->current.map.get_crossings) (GMT, xx, yy, x2, y2, x1, y1);
if (jump == 1) { /* Add right border point first */
- double_swap (xx[0], xx[1]);
- double_swap (yy[0], yy[1]);
+ gmt_M_double_swap (xx[0], xx[1]);
+ gmt_M_double_swap (yy[0], yy[1]);
}
gmt_xy_to_geo (GMT, &clon[0], &clat[0], xx[0], yy[0]);
gmt_xy_to_geo (GMT, &clon[1], &clat[1], xx[1], yy[1]);
@@ -1491,7 +1491,7 @@ GMT_LOCAL uint64_t map_rect_clip (struct GMT_CTRL *GMT, double *lon, double *lat
n = m; /* Current size of polygon */
m = 0; /* Start with nuthin' */
- uint_swap (in, out); /* Swap what is input and output for clipping against this border */
+ gmt_M_uint_swap (in, out); /* Swap what is input and output for clipping against this border */
if (n) {
/* Must ensure we copy the very first point if it is inside the clip rectangle */
if (inside[side] ((side%2) ? xtmp[in][0] : ytmp[in][0], border[side])) {xtmp[out][0] = xtmp[in][0]; ytmp[out][0] = ytmp[in][0]; m = 1;} /* First point is inside; add it */
@@ -1685,12 +1685,24 @@ GMT_LOCAL uint64_t map_wesn_clip (struct GMT_CTRL *GMT, double *lon, double *lat
inside[GMT_BOTTOM] = inside[GMT_LEFT] = gmt_inside_lower_boundary; outside[GMT_BOTTOM] = outside[GMT_LEFT] = gmt_outside_lower_boundary;
border[GMT_BOTTOM] = GMT->common.R.wesn[YLO]; border[GMT_LEFT] = GMT->common.R.wesn[XLO]; border[GMT_RIGHT] = GMT->common.R.wesn[XHI]; border[GMT_TOP] = GMT->common.R.wesn[YHI];
- /* Make data longitudes have no jumps [This is mostly for pscoast] */
- for (i = 0; i < n; i++) {
- if (lon[i] < border[GMT_LEFT] && (lon[i] + 360.0) <= border[GMT_RIGHT])
- lon[i] += 360.0;
- else if (lon[i] > border[GMT_RIGHT] && (lon[i] - 360.0) >= border[GMT_LEFT])
- lon[i] -= 360.0;
+/* This is new approach to get rid of those crossing lines for filled polygons,
+ * i.e., issue # 949. Also see comments further down.
+ * P. Wessel, Dec 1 2016 */
+ if (GMT->current.map.coastline) { /* Make data longitudes have no jumps [This is for pscoast] */
+ for (i = 0; i < n; i++) {
+ if (lon[i] < border[GMT_LEFT] && (lon[i] + 360.0) <= border[GMT_RIGHT])
+ lon[i] += 360.0;
+ else if (lon[i] > border[GMT_RIGHT] && (lon[i] - 360.0) >= border[GMT_LEFT])
+ lon[i] -= 360.0;
+ }
+ }
+ else { /* Don't let points be > 180 from center longitude */
+ double mid_lon = 0.5 * (border[GMT_LEFT] + border[GMT_RIGHT]), diff;
+ for (i = 0; i < n; i++) {
+ diff = lon[i] - mid_lon;
+ if (diff > 180.0) lon[i] -= 360.0;
+ else if (diff < -180.0) lon[i] += 360.0;
+ }
}
if (!GMT->current.map.coastline) { /* Not do if pscoast since it has its own oddness */
double xmin, xmax;
@@ -1727,7 +1739,7 @@ GMT_LOCAL uint64_t map_wesn_clip (struct GMT_CTRL *GMT, double *lon, double *lat
n_cross = 0; /* No crossings so far */
curved = !((side%2) ? GMT->current.map.meridian_straight : GMT->current.map.parallel_straight); /* Is this border straight or curved when projected */
- uint_swap (in, out); /* Swap what is input and output for clipping against this border */
+ gmt_M_uint_swap (in, out); /* Swap what is input and output for clipping against this border */
if (side%2 && periodic) { /* No clipping can take place on w or e border; just copy all and go to next side */
m = n;
if (m == n_alloc) gmt_M_malloc4 (GMT, xtmp[0], ytmp[0], xtmp[1], ytmp[1], m, &n_alloc, double);
@@ -1735,16 +1747,25 @@ GMT_LOCAL uint64_t map_wesn_clip (struct GMT_CTRL *GMT, double *lon, double *lat
gmt_M_memcpy (ytmp[out], ytmp[in], m, double);
continue;
}
+#if 0
+/* This caused lots of issues with various map types so replaced by the check about
+ * that uses the mid-longitude as center and does a +/- 180 test from that.
+ * P. Wessel, Dec 1 2016 */
if (!GMT->current.map.coastline && side % 2) { /* Either left or right border */
/* For non-periodic maps we have to be careful to position the polygon so it does
* not have longitude jumps at the current border. This does not apply to pscoast
- * which has special handling and hence bypasses this test */
-
- for (i = 0; i < n; i++) { /* If points is > 180 degrees from border, flip side */
- if ((xtmp[in][i] - border[side]) > 180.0) xtmp[in][i] -= 360.0;
- else if ((xtmp[in][i] - border[side]) < -180.0) xtmp[in][i] += 360.0;
+ * which has special handling and hence bypasses this test.
+ * Note that we may be using the map longitude range if this exceeds 180
+ * as it is tricky to make those plots with large but < 360 longitudes. */
+ //double map_lon_range = MAX (180.0, border[GMT_RIGHT] - border[GMT_LEFT]);
+ double map_lon_range = 1800.0, diff;
+ for (i = 0; i < n; i++) { /* If points is > map_lon_range degrees from border, flip side */
+ diff = xtmp[in][i] - border[side];
+ if (diff > map_lon_range) xtmp[in][i] -= 360.0;
+ else if (diff < -map_lon_range) xtmp[in][i] += 360.0;
}
}
+#endif
if (n) {
/* Must ensure we copy the very first point if it is inside the clip rectangle */
if (inside[side] ((side%2) ? xtmp[in][0] : ytmp[in][0], border[side])) {xtmp[out][0] = xtmp[in][0]; ytmp[out][0] = ytmp[in][0]; m = 1;} /* First point is inside; add it */
@@ -1991,8 +2012,8 @@ GMT_LOCAL bool map_cartesian_overlap (struct GMT_CTRL *GMT, double lon0, double
gmt_geo_to_xy (GMT, lon0, lat0, &x0, &y0);
gmt_geo_to_xy (GMT, lon1, lat1, &x1, &y1);
- if (x0 > x1) double_swap (x0, x1);
- if (y0 > y1) double_swap (y0, y1);
+ if (x0 > x1) gmt_M_double_swap (x0, x1);
+ if (y0 > y1) gmt_M_double_swap (y0, y1);
if (x1 - GMT->current.proj.rect[XLO] < -GMT_CONV8_LIMIT || x0 - GMT->current.proj.rect[XHI] > GMT_CONV8_LIMIT) return (false);
if (y1 - GMT->current.proj.rect[YLO] < -GMT_CONV8_LIMIT || y0 - GMT->current.proj.rect[YHI] > GMT_CONV8_LIMIT) return (false);
@@ -2007,8 +2028,8 @@ GMT_LOCAL bool map_rect_overlap (struct GMT_CTRL *GMT, double lon0, double lat0,
gmt_geo_to_xy (GMT, lon0, lat0, &x0, &y0);
gmt_geo_to_xy (GMT, lon1, lat1, &x1, &y1);
- if (x0 > x1) double_swap (x0, x1);
- if (y0 > y1) double_swap (y0, y1);
+ if (x0 > x1) gmt_M_double_swap (x0, x1);
+ if (y0 > y1) gmt_M_double_swap (y0, y1);
if (x1 - GMT->current.proj.rect[XLO] < -GMT_CONV8_LIMIT || x0 - GMT->current.proj.rect[XHI] > GMT_CONV8_LIMIT) return (false);
if (y1 - GMT->current.proj.rect[YLO] < -GMT_CONV8_LIMIT || y0 - GMT->current.proj.rect[YHI] > GMT_CONV8_LIMIT) return (false);
@@ -2026,8 +2047,8 @@ GMT_LOCAL bool map_rect_overlap (struct GMT_CTRL *GMT, double lon0, double lat0,
/*! . */
GMT_LOCAL bool map_wesn_overlap (struct GMT_CTRL *GMT, double lon0, double lat0, double lon1, double lat1) {
/* Return true if either of the points (lon0,lat0) and (lon1,lat1) is inside (not on) the rectangular lon/lat boundaries */
- if (lon0 > lon1) double_swap (lon0, lon1);
- if (lat0 > lat1) double_swap (lat0, lat1);
+ if (lon0 > lon1) gmt_M_double_swap (lon0, lon1);
+ if (lat0 > lat1) gmt_M_double_swap (lat0, lat1);
if (lon1 - GMT->common.R.wesn[XLO] < -GMT_CONV8_LIMIT) {
lon0 += 360.0;
lon1 += 360.0;
@@ -2277,8 +2298,8 @@ GMT_LOCAL double map_az_backaz_cartesian (struct GMT_CTRL *GMT, double lonE, dou
double az, dx, dy;
if (baz) { /* exchange point one and two */
- double_swap (lonS, lonE);
- double_swap (latS, latE);
+ gmt_M_double_swap (lonS, lonE);
+ gmt_M_double_swap (latS, latE);
}
dx = lonE - lonS;
dy = latE - latS;
@@ -2297,8 +2318,8 @@ GMT_LOCAL double map_az_backaz_cartesian_proj (struct GMT_CTRL *GMT, double lonE
double az, dx, dy, xE, yE, xS, yS;
if (baz) { /* exchange point one and two */
- double_swap (lonS, lonE);
- double_swap (latS, latE);
+ gmt_M_double_swap (lonS, lonE);
+ gmt_M_double_swap (latS, latE);
}
gmt_geo_to_xy (GMT, lonE, latE, &xE, &yE);
gmt_geo_to_xy (GMT, lonS, latS, &xS, &yS);
@@ -2319,8 +2340,8 @@ GMT_LOCAL double map_az_backaz_flatearth (struct GMT_CTRL *GMT, double lonE, dou
double az, dx, dy, dlon;
if (baz) { /* exchange point one and two */
- double_swap (lonS, lonE);
- double_swap (latS, latE);
+ gmt_M_double_swap (lonS, lonE);
+ gmt_M_double_swap (latS, latE);
}
gmt_M_set_delta_lon (lonS, lonE, dlon);
dx = dlon * cosd (0.5 * (latE + latS));
@@ -2341,8 +2362,8 @@ GMT_LOCAL double map_az_backaz_sphere (struct GMT_CTRL *GMT, double lonE, double
gmt_M_unused(GMT);
if (baz) { /* exchange point one and two */
- double_swap (lonS, lonE);
- double_swap (latS, latE);
+ gmt_M_double_swap (lonS, lonE);
+ gmt_M_double_swap (latS, latE);
}
sincosd (latS, &sin_yS, &cos_yS);
sincosd (latE, &sin_yE, &cos_yE);
@@ -2498,6 +2519,9 @@ GMT_LOCAL bool map_init_linear (struct GMT_CTRL *GMT) {
}
else
GMT->current.map.lon_wrap = false;
+ if (gmt_M_y_is_lon (GMT, GMT_IN)) { /* y is longitude */
+ GMT->current.proj.central_meridian = 0.5 * (GMT->common.R.wesn[YLO] + GMT->common.R.wesn[YHI]);
+ }
GMT->current.proj.scale[GMT_X] = GMT->current.proj.pars[0];
GMT->current.proj.scale[GMT_Y] = GMT->current.proj.pars[1];
GMT->current.proj.xyz_pos[GMT_X] = (GMT->current.proj.scale[GMT_X] >= 0.0); /* False if user wants x to increase left */
@@ -2541,10 +2565,16 @@ GMT_LOCAL bool map_init_linear (struct GMT_CTRL *GMT) {
case GMT_LINEAR: /* Regular scaling */
if (GMT->current.io.col_type[GMT_IN][GMT_Y] == GMT_IS_ABSTIME && GMT->current.proj.xyz_projection[GMT_Y] != GMT_TIME)
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Warning -JX|x option: Your y-column contains absolute time but -JX|x...T was not specified!\n");
- ymin = (GMT->current.proj.xyz_pos[GMT_Y]) ? GMT->common.R.wesn[YLO] : GMT->common.R.wesn[YHI];
- ymax = (GMT->current.proj.xyz_pos[GMT_Y]) ? GMT->common.R.wesn[YHI] : GMT->common.R.wesn[YLO];
- GMT->current.proj.fwd_y = &gmt_translin;
- GMT->current.proj.inv_y = &gmt_itranslin;
+ GMT->current.proj.fwd_y = ((gmt_M_y_is_lon (GMT, GMT_IN)) ? &gmt_translind : &gmt_translin);
+ GMT->current.proj.inv_y = ((gmt_M_y_is_lon (GMT, GMT_IN)) ? &gmt_itranslind : &gmt_itranslin);
+ if (GMT->current.proj.xyz_pos[GMT_Y]) {
+ (*GMT->current.proj.fwd_y) (GMT, GMT->common.R.wesn[YLO], &ymin);
+ (*GMT->current.proj.fwd_y) (GMT, GMT->common.R.wesn[YHI], &ymax);
+ }
+ else {
+ (*GMT->current.proj.fwd_y) (GMT, GMT->common.R.wesn[YHI], &ymin);
+ (*GMT->current.proj.fwd_y) (GMT, GMT->common.R.wesn[YLO], &ymax);
+ }
break;
case GMT_LOG10: /* Log10 transformation */
if (GMT->common.R.wesn[YLO] <= 0.0 || GMT->common.R.wesn[YHI] <= 0.0) {
@@ -2776,6 +2806,7 @@ GMT_LOCAL bool map_init_cyleqdist (struct GMT_CTRL *GMT) {
return (false); /* No need to search for wesn */
}
+//#define CHRISTMAS
/*!
* TRANSFORMATION ROUTINES FOR MILLER CYLINDRICAL PROJECTION (GMT_MILLER)
@@ -2789,7 +2820,19 @@ GMT_LOCAL bool map_init_miller (struct GMT_CTRL *GMT) {
map_cyl_validate_clon (GMT, 1); /* Make sure the central longitude is valid */
gmt_vmiller (GMT, GMT->current.proj.pars[0]);
gmt_miller (GMT, GMT->common.R.wesn[XLO], GMT->common.R.wesn[YLO], &xmin, &ymin);
+#ifdef CHRISTMAS
+ if (GMT->common.R.wesn[YLO] > 0.0) {
+ gmt_miller (GMT, GMT->common.R.wesn[XLO], GMT->common.R.wesn[YLO], &xmin, &ymin);
+ gmt_miller (GMT, 0.5 * (GMT->common.R.wesn[XLO] + GMT->common.R.wesn[XHI]), GMT->common.R.wesn[YHI], &xmax, &ymax);
+ }
+ else {
+ gmt_miller (GMT, GMT->common.R.wesn[XHI], GMT->common.R.wesn[YHI], &xmin, &ymin);
+ gmt_miller (GMT, 0.5 * (GMT->common.R.wesn[XLO] + GMT->common.R.wesn[XHI]), GMT->common.R.wesn[YLO], &xmax, &ymax);
+ }
+#else
+ gmt_miller (GMT, GMT->common.R.wesn[XLO], GMT->common.R.wesn[YLO], &xmin, &ymin);
gmt_miller (GMT, GMT->common.R.wesn[XHI], GMT->common.R.wesn[YHI], &xmax, &ymax);
+#endif
if (GMT->current.proj.units_pr_degree) GMT->current.proj.pars[1] /= GMT->current.proj.M_PR_DEG;
GMT->current.proj.scale[GMT_X] = GMT->current.proj.scale[GMT_Y] = GMT->current.proj.pars[1];
map_setinfo (GMT, xmin, xmax, ymin, ymax, GMT->current.proj.pars[1]);
@@ -3060,7 +3103,7 @@ GMT_LOCAL void map_pole_rotate_forward (struct GMT_CTRL *GMT, double lon, double
}
#if 0
-/* Not curently used in GMT */
+/* Not currently used in GMT */
GMT_LOCAL void map_pole_rotate_inverse (struct GMT_CTRL *GMT, double *lon, double *lat, double tlon, double tlat) {
/* Given the pole position in GMT->current.proj, geographical coordinates
* are computed from oblique coordinates assuming a spherical earth.
@@ -3289,8 +3332,8 @@ GMT_LOCAL void map_get_crossings_tm (struct GMT_CTRL *GMT, double *xc, double *y
xa = x0; xb = x1;
ya = y0; yb = y1;
if (ya > yb) { /* Make A the minimum y point */
- double_swap (xa, xb);
- double_swap (ya, yb);
+ gmt_M_double_swap (xa, xb);
+ gmt_M_double_swap (ya, yb);
}
yb -= GMT->current.map.height;
@@ -4751,7 +4794,7 @@ GMT_LOCAL void map_wesn_search (struct GMT_CTRL *GMT, double xmin, double xmax,
gmtlib_get_lon_minmax (GMT, lon, k, &w, &e); /* Determine lon-range by robust quandrant check */
gmt_M_free (GMT, lon);
- /* Then check if one or both poles are inside map; then the above wont be correct */
+ /* Then check if one or both poles are inside map; then the above won't be correct */
if (GMT->current.proj.projection == GMT_AZ_EQDIST) { /* Must be careful since if a pole equals an antipode we get NaNs as coordinates */
gmt_geo_to_xy (GMT, GMT->current.proj.central_meridian, -90.0, &x, &y);
@@ -4763,7 +4806,7 @@ GMT_LOCAL void map_wesn_search (struct GMT_CTRL *GMT, double xmin, double xmax,
if (test_pole[1] && !gmt_map_outside (GMT, GMT->current.proj.central_meridian, +90.0)) { n = +90.0; w = 0.0; e = 360.0; }
s -= 0.1; if (s < -90.0) s = -90.0; /* Make sure point is not inside area, 0.1 is just a small arbitrary number */
- n += 0.1; if (n > 90.0) n = 90.0; /* But dont go crazy beyond the pole */
+ n += 0.1; if (n > 90.0) n = 90.0; /* But don't go crazy beyond the pole */
w -= 0.1; e += 0.1; if (fabs (w - e) > 360.0) { w = 0.0; e = 360.0; } /* Ensure max 360 range */
*west = w; *east = e; *south = s; *north = n; /* Pass back our findings */
}
@@ -4842,8 +4885,8 @@ GMT_LOCAL void map_get_crossings_x (struct GMT_CTRL *GMT, double *xc, double *yc
xa = x0; xb = x1;
ya = y0; yb = y1;
if (xa > xb) { /* Make A the minimum x point */
- double_swap (xa, xb);
- double_swap (ya, yb);
+ gmt_M_double_swap (xa, xb);
+ gmt_M_double_swap (ya, yb);
}
xb -= 2.0 * gmtlib_half_map_width (GMT, yb);
@@ -5218,8 +5261,8 @@ GMT_LOCAL double map_rudoe_dist_meter (struct GMT_CTRL *GMT, double lonS, double
*/
if (latS < 0.0) { /* Station in southern hemisphere, swap */
- double_swap (lonS, lonE);
- double_swap (latS, latE);
+ gmt_M_double_swap (lonS, lonE);
+ gmt_M_double_swap (latS, latE);
}
el = GMT->current.proj.ECC2 / GMT->current.proj.one_m_ECC2;
e1 = 1.0 + el;
@@ -5301,8 +5344,8 @@ GMT_LOCAL double map_az_backaz_loxodrome (struct GMT_CTRL *GMT, double lonE, dou
double az, d_lon;
if (baz) { /* exchange point one and two */
- double_swap (lonS, lonE);
- double_swap (latS, latE);
+ gmt_M_double_swap (lonS, lonE);
+ gmt_M_double_swap (latS, latE);
}
gmt_M_set_delta_lon (lonE, lonS, d_lon);
if (doubleAlmostEqualZero (latS, latE)) /* Along parallel */
@@ -5964,7 +6007,7 @@ GMT_LOCAL void map_set_distaz (struct GMT_CTRL *GMT, unsigned int mode, unsigned
exit (GMT_PROJECTION_ERROR);
break;
}
- if (type > 0) return; /* Contour-related assignemnts end here */
+ if (type > 0) return; /* Contour-related assignments end here */
/* Mapping only */
if (mode == GMT_CARTESIAN_DIST || mode == GMT_CARTESIAN_DIST2) { /* Cartesian data */
@@ -5991,7 +6034,7 @@ void GMT_set_geocentric (struct GMT_CTRL *GMT, bool notify)
}
#endif
-/* GMT_dateline_clip simply clips a polygon agains the dateline and results in two polygons in L */
+/* GMT_dateline_clip simply clips a polygon against the dateline and results in two polygons in L */
/*! . */
void gmtlib_set_oblique_pole_and_origin (struct GMT_CTRL *GMT, double plon, double plat, double olon, double olat) {
@@ -6119,7 +6162,7 @@ unsigned int gmt_split_poly_at_dateline (struct GMT_CTRL *GMT, struct GMT_DATASE
inside[1] = gmt_inside_lower_boundary; outside[1] = gmt_outside_lower_boundary;
L = gmt_M_memory (GMT, NULL, 2, struct GMT_DATASEGMENT *); /* The two polygons */
- for (row = 0; row < S->n_rows; row++) gmt_lon_range_adjust (GMT_IS_0_TO_P360_RANGE, &S->data[GMT_X][row]); /* First enforce 0 <= lon < 360 so we dont have to check again */
+ for (row = 0; row < S->n_rows; row++) gmt_lon_range_adjust (GMT_IS_0_TO_P360_RANGE, &S->data[GMT_X][row]); /* First enforce 0 <= lon < 360 so we don't have to check again */
for (side = 0; side < 2; side++) { /* Do it twice to get two truncated polygons */
if (S->n_rows == 0) continue; /* Nothing! */
@@ -6876,8 +6919,8 @@ uint64_t *gmtlib_split_line (struct GMT_CTRL *GMT, double **xx, double **yy, uin
if (add_crossings) { /* Find and insert the crossings */
map_get_crossings_x (GMT, xc, yc, xin[i], yin[i], xin[i-1], yin[i-1]);
if (way[k] == 1) { /* Add right border point first */
- double_swap (xc[0], xc[1]);
- double_swap (yc[0], yc[1]);
+ gmt_M_double_swap (xc[0], xc[1]);
+ gmt_M_double_swap (yc[0], yc[1]);
}
x[j] = xc[0]; y[j++] = yc[0]; /* End of one segment */
x[j] = xc[1]; y[j++] = yc[1]; /* Start of another */
@@ -7358,7 +7401,7 @@ int gmt_grd_project (struct GMT_CTRL *GMT, struct GMT_GRID *I, struct GMT_GRID *
* In addition, these settings (via -n) control interpolation:
* antialias: true if we need to do the antialiasing STEP 1 (below)
* interpolant: 0 = nearest neighbor, 1 = bilinear, 2 = B-spline, 3 = bicubic
- * threshold: minumum weight to be used. If weight < threshold interpolation yields NaN.
+ * threshold: minimum weight to be used. If weight < threshold interpolation yields NaN.
* We initialize the O->data array to NaN.
*
* Changed 10-Sep-07 to include the argument "antialias" and "threshold" and
@@ -7541,7 +7584,7 @@ int gmt_img_project (struct GMT_CTRL *GMT, struct GMT_IMAGE *I, struct GMT_IMAGE
* In addition, these settings (via -n) control interpolation:
* antialias: true if we need to do the antialiasing STEP 1 (below)
* interpolant: 0 = nearest neighbor, 1 = bilinear, 2 = B-spline, 3 = bicubic
- * threshold: minumum weight to be used. If weight < threshold interpolation yields NaN.
+ * threshold: minimum weight to be used. If weight < threshold interpolation yields NaN.
*
* We initialize the O->data array to the NaN color.
*
@@ -7710,7 +7753,7 @@ double gmt_azim_to_angle (struct GMT_CTRL *GMT, double lon, double lat, double c
return (angle);
}
else if (GMT->current.proj.projection == GMT_POLAR) { /* r/theta */
- return (azim); /* Place holder - not correct yet but dont want to go into the below if r/theta */
+ return (azim); /* Place holder - not correct yet but don't want to go into the below if r/theta */
}
/* Find second point c spherical degrees away in the azim direction */
@@ -8097,7 +8140,7 @@ void gmtlib_init_ellipsoid (struct GMT_CTRL *GMT) {
GMT->current.proj.DIST_M_PR_DEG = GMT->current.proj.M_PR_DEG;
GMT->current.proj.DIST_KM_PR_DEG = GMT->current.proj.KM_PR_DEG;
- /* Compute coefficients needed for auxilliary latitude conversions */
+ /* Compute coefficients needed for auxiliary latitude conversions */
map_lat_swap_init (GMT);
}
@@ -8708,9 +8751,11 @@ int gmt_map_setup (struct GMT_CTRL *GMT, double wesn[]) {
if (gmt_M_is_azimuthal(GMT) && GMT->common.R.oblique) map_horizon_search (GMT, wesn[XLO], wesn[XHI], wesn[YLO], wesn[YHI], GMT->current.proj.rect[XLO], GMT->current.proj.rect[XHI], GMT->current.proj.rect[YLO], GMT->current.proj.rect[YHI]);
}
- if (GMT->current.proj.central_meridian < GMT->common.R.wesn[XLO] && (GMT->current.proj.central_meridian + 360.0) <= GMT->common.R.wesn[XHI]) GMT->current.proj.central_meridian += 360.0;
- if (GMT->current.proj.central_meridian > GMT->common.R.wesn[XHI] && (GMT->current.proj.central_meridian - 360.0) >= GMT->common.R.wesn[XLO]) GMT->current.proj.central_meridian -= 360.0;
-
+ if (gmt_M_x_is_lon (GMT, GMT_IN)) { /* x is longitude */
+ if (GMT->current.proj.central_meridian < GMT->common.R.wesn[XLO] && (GMT->current.proj.central_meridian + 360.0) <= GMT->common.R.wesn[XHI]) GMT->current.proj.central_meridian += 360.0;
+ if (GMT->current.proj.central_meridian > GMT->common.R.wesn[XHI] && (GMT->current.proj.central_meridian - 360.0) >= GMT->common.R.wesn[XLO]) GMT->current.proj.central_meridian -= 360.0;
+ }
+
/* Maximum step size (in degrees) used for interpolation of line segments along great circles (or meridians/parallels) before they are plotted */
GMT->current.map.path_step = GMT->current.setting.map_line_step / GMT->current.proj.scale[GMT_X] / GMT->current.proj.M_PR_DEG;
diff --git a/src/gmt_memory.c b/src/gmt_memory.c
index f05afe8..4eced8e 100644
--- a/src/gmt_memory.c
+++ b/src/gmt_memory.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_memory.c 16740 2016-07-08 00:42:45Z pwessel $
+ * $Id: gmt_memory.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -48,11 +48,11 @@
* place the final memory there. We assume that for most purposes we will
* need GMT_INITIAL_MEM_COL_ALLOC columns [2] and allocate GMT_INITIAL_MEM_ROW_ALLOC
* [2097152U] rows for each column. This is 32 Mb for double precision data.
- * These arrays are expected to hardly ever beeing reallocated as that would
- * only happen for very long segments, a rare occurance. For most typical data
+ * These arrays are expected to hardly ever being reallocated as that would
+ * only happen for very long segments, a rare occurrence. For most typical data
* we may have lots of smaller segments but rarely do any segment exceed the
* 1048576U length initialized above. Thus, reallocs are generally avoided.
- * Note: (1) All columns share a signle n_alloc counter and the code belows will
+ * Note: (1) All columns share a single n_alloc counter and the code belows will
* check whenever arrays need to be extended.
* (2) We chose to maintain a small set of column vectors rather than a single
* item since GMT tends to use columns vectors and thus the book-keeping is
@@ -287,7 +287,7 @@ static inline void gmt_memtrack_add (struct GMT_CTRL *GMT, const char *where, vo
old = entry->size;
if (entry->ptr != ptr) { /* Must delete and add back since the address changed */
char *name = entry->name; /* remember pointer of name */
- entry->name = NULL; /* prevent pointer from beeing freed in gmt_treedelete */
+ entry->name = NULL; /* prevent pointer from being freed in gmt_treedelete */
entry = gmt_treedelete (entry, entry->ptr);
entry = gmt_treeinsert (entry, ptr);
entry->name = name; /* put name back */
@@ -607,7 +607,7 @@ void * gmt_malloc_func (struct GMT_CTRL *GMT, void *ptr, size_t n, size_t *n_all
* module is the name of the module requesting the memory (main program or library function).
* Note: This memory, used for all kinds of things, is not requested to be aligned (align = false),
*/
- size_t in_n_alloc = (n_alloc) ? *n_alloc : 0U; /* If NULL it means init, i.e. 0, and we dont pass n_alloc back out */
+ size_t in_n_alloc = (n_alloc) ? *n_alloc : 0U; /* If NULL it means init, i.e. 0, and we don't pass n_alloc back out */
if (in_n_alloc == 0 || !ptr) { /* A) First time allocation, use default minimum size, unless n > 0 is given */
in_n_alloc = (n == 0) ? GMT->session.min_meminc : n;
ptr = NULL; /* Initialize a new pointer to NULL before calling gmt_M_memory with it */
diff --git a/src/gmt_memory.h b/src/gmt_memory.h
index 8ae4d3a..ad917d6 100644
--- a/src/gmt_memory.h
+++ b/src/gmt_memory.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_memory.h 16539 2016-06-12 00:01:22Z pwessel $
+ * $Id: gmt_memory.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_mgg_header2.c b/src/gmt_mgg_header2.c
index d417fa8..85bad48 100644
--- a/src/gmt_mgg_header2.c
+++ b/src/gmt_mgg_header2.c
@@ -1,4 +1,4 @@
-/* $Id: gmt_mgg_header2.c 16544 2016-06-14 00:15:52Z pwessel $
+/* $Id: gmt_mgg_header2.c 17326 2016-11-08 20:28:56Z pwessel $
*
* Code donated by David Divens, NOAA/NGDC
* Distributed under the GNU Public License (see LICENSE.TXT for details)
@@ -129,13 +129,13 @@ GMT_LOCAL int grd98_GMTtoMGG2 (struct GMT_GRID_HEADER *gmt, MGG_GRID_HEADER_2 *m
mgg->minValue = irint(gmt->z_min * mgg->precision);
mgg->maxValue = irint(gmt->z_max * mgg->precision);
- /* Data fits in two byte boundry */
+ /* Data fits in two byte boundary */
if ((-SHRT_MAX <= mgg->minValue) && (mgg->maxValue <= SHRT_MAX)) {
mgg->numType = sizeof (short);
mgg->nanValue = (short)SHRT_MIN;
}
#ifdef MGG_BYTE_SIZE
- /* Data fits in one byte boundry */
+ /* Data fits in one byte boundary */
if ((gmt->z_min >= 0) && (gmt->z_max <= 127)) {
mgg->numType = sizeof (char);
mgg->nanValue = (char)255;
diff --git a/src/gmt_nan.h b/src/gmt_nan.h
index c6f1ab4..6f033b6 100644
--- a/src/gmt_nan.h
+++ b/src/gmt_nan.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_nan.h 15810 2016-03-05 00:33:55Z pwessel $
+ * $Id: gmt_nan.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_nc.c b/src/gmt_nc.c
index fe04aa2..2325cc3 100644
--- a/src/gmt_nc.c
+++ b/src/gmt_nc.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_nc.c 17160 2016-10-03 16:21:37Z pwessel $
+ * $Id: gmt_nc.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_notposix.c b/src/gmt_notposix.c
index 2ef9bd3..259efa4 100644
--- a/src/gmt_notposix.c
+++ b/src/gmt_notposix.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_notposix.c 15810 2016-03-05 00:33:55Z pwessel $
+ * $Id: gmt_notposix.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_notposix.h b/src/gmt_notposix.h
index 19011aa..2c83ed4 100644
--- a/src/gmt_notposix.h
+++ b/src/gmt_notposix.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_notposix.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: gmt_notposix.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_parse.c b/src/gmt_parse.c
index 8b0f786..c7db91a 100644
--- a/src/gmt_parse.c
+++ b/src/gmt_parse.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_parse.c 17140 2016-09-26 02:45:51Z pwessel $
+ * $Id: gmt_parse.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -296,7 +296,7 @@ GMT_LOCAL int parse_complete_options (struct GMT_CTRL *GMT, struct GMT_OPTION *o
if (B_replace) { /* Only -B is given and we want to use the history */
if (B_replace == 2) continue; /* Already done this */
if (!GMT->init.history[B_id]) Return;
- opt2 = opt; /* Since we dont want to change the opt loop avove */
+ opt2 = opt; /* Since we don't want to change the opt loop avove */
B_next = opt->next; /* Pointer to option following the -B option */
gmt_M_str_free (opt2->arg);/* Free previous pointer to arg */
if (gmt_strtok (GMT->init.history[B_id], B_delim, &pos, p)) /* Get the first argument */
diff --git a/src/gmt_plot.c b/src/gmt_plot.c
index 1aeea9d..a933c70 100644
--- a/src/gmt_plot.c
+++ b/src/gmt_plot.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_plot.c 16849 2016-07-22 18:45:29Z pwessel $
+ * $Id: gmt_plot.c 17592 2017-02-24 00:40:55Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -74,6 +74,8 @@
#include "gmt_dev.h"
#include "gmt_internals.h"
+#define gmt_M_axis_is_geo_strict(C,axis) (((axis) == GMT_X && C->current.io.col_type[GMT_IN][axis] & GMT_IS_LON) || ((axis) == GMT_Y && C->current.io.col_type[GMT_IN][axis] & GMT_IS_LAT))
+
/* Functions declared elsewhere but needed here once */
EXTERN_MSC int gmt_load_custom_annot (struct GMT_CTRL *GMT, struct GMT_PLOT_AXIS *A, char item, double **xx, char ***labels);
EXTERN_MSC bool gmt_genper_reset (struct GMT_CTRL *GMT, bool reset);
@@ -918,7 +920,7 @@ GMT_LOCAL void plot_fancy_frame_curved_outline (struct GMT_CTRL *GMT, struct PSL
else {
az1 = d_atan2d (y1 - GMT->current.proj.c_y0, x1 - GMT->current.proj.c_x0);
az2 = d_atan2d (y2 - GMT->current.proj.c_y0, x2 - GMT->current.proj.c_x0);
- if (!GMT->current.proj.north_pole) double_swap (az1, az2); /* In S hemisphere, must draw in opposite direction */
+ if (!GMT->current.proj.north_pole) gmt_M_double_swap (az1, az2); /* In S hemisphere, must draw in opposite direction */
while (az1 < 0.0) az1 += 360.0; /* Wind az1 to be in the 0-360 range */
while (az2 < az1) az2 += 360.0; /* Likewise ensure az1 > az1 and is now in the 0-720 range */
da0 = R2D * escl * width /radius;
@@ -1151,9 +1153,9 @@ GMT_LOCAL void plot_polar_map_boundary (struct GMT_CTRL *GMT, struct PSL_CTRL *P
return;
}
- if (!GMT->current.proj.north_pole && s <= -90.0) /* Cannot have southern boundary */
+ if (!GMT->current.proj.north_pole && gmt_M_is_Spole (s)) /* Cannot have southern boundary */
GMT->current.map.frame.side[S_SIDE] = 0;
- if (GMT->current.proj.north_pole && n >= 90.0) /* Cannot have northern boundary */
+ if (GMT->current.proj.north_pole && gmt_M_is_Npole (n)) /* Cannot have northern boundary */
GMT->current.map.frame.side[N_SIDE] = 0;
if (gmt_M_360_range (w, e) || doubleAlmostEqualZero (e, w))
GMT->current.map.frame.side[E_SIDE] = GMT->current.map.frame.side[W_SIDE] = 0;
@@ -1215,9 +1217,9 @@ GMT_LOCAL void plot_conic_map_boundary (struct GMT_CTRL *GMT, struct PSL_CTRL *P
/* Here draw fancy map boundary */
- if (!GMT->current.proj.north_pole && s <= -90.0) /* Cannot have southern boundary */
+ if (!GMT->current.proj.north_pole && gmt_M_is_Spole (s)) /* Cannot have southern boundary */
GMT->current.map.frame.side[S_SIDE] = 0;
- if (GMT->current.proj.north_pole && n >= 90.0) /* Cannot have northern boundary */
+ if (GMT->current.proj.north_pole && gmt_M_is_Npole (n)) /* Cannot have northern boundary */
GMT->current.map.frame.side[N_SIDE] = 0;
fat_pen = fabs (GMT->current.setting.map_frame_width) * GMT->session.u2u[GMT_INCH][GMT_PT];
@@ -1266,9 +1268,9 @@ GMT_LOCAL void plot_ellipse_map_boundary (struct GMT_CTRL *GMT, struct PSL_CTRL
return;
}
plot_wesn_map_boundary (GMT, PSL, w, e, s, n); /* Draw outline first, then turn off non-existant sides */
- if (GMT->common.R.wesn[YLO] <= -90.0) /* Cannot have southern boundary */
+ if (gmt_M_is_Spole (GMT->common.R.wesn[YLO])) /* Cannot have southern boundary */
GMT->current.map.frame.side[S_SIDE] = 0;
- if (GMT->common.R.wesn[YHI] >= 90.0) /* Cannot have northern boundary */
+ if (gmt_M_is_Npole (GMT->common.R.wesn[YHI])) /* Cannot have northern boundary */
GMT->current.map.frame.side[N_SIDE] = 0;
}
@@ -2071,7 +2073,7 @@ GMT_LOCAL bool plot_is_fancy_boundary (struct GMT_CTRL *GMT) {
case GMT_AZ_EQDIST:
case GMT_GNOMONIC:
case GMT_VANGRINTEN:
- return (GMT->current.proj.polar);
+ return (GMT->current.proj.polar && !GMT->common.R.oblique);
break;
case GMT_POLAR:
case GMT_OBLIQUE_MERC:
@@ -2445,7 +2447,7 @@ GMT_LOCAL void plot_draw_dir_rose (struct GMT_CTRL *GMT, struct PSL_CTRL *PSL, s
PSL_setfill (PSL, GMT->PSL->init.page_rgb, true);
PSL_plotpolygon (PSL, xp, yp, 8); /* Outline of 4-pointed star */
tx[0] = mr->refpoint->x, ty[0] = mr->refpoint->y;
- /* Fill positive halfs of the 4-pointed blades */
+ /* Fill positive halves of the 4-pointed blades */
PSL_setfill (PSL, GMT->current.setting.map_default_pen.rgb, true);
tx[1] = xp[0], ty[1] = yp[0], tx[2] = xp[7], ty[2] = yp[7];
PSL_plotpolygon (PSL, tx, ty, 3); /* East */
@@ -2592,7 +2594,7 @@ GMT_LOCAL void plot_format_symbol_string (struct GMT_CTRL *GMT, struct GMT_CUSTO
unsigned int want_col, col, pos;
/* Tricky, how do we know which column in the input goes with this variable $n, i.e. how is n related to record col?. Then,
we must scan the GMT->io.current.record for the col'th item and strcpy that into text. The reason n -> col is
- tricky is while we may know this is the 3rd extra variable, we dont know if -C<cpt> was used or if this is psxyz, no? */
+ tricky is while we may know this is the 3rd extra variable, we don't know if -C<cpt> was used or if this is psxyz, no? */
want_col = start + n;
for (col = pos = 0; col <= want_col; col++) (void)gmt_strtok (GMT->current.io.record, GMT_TOKEN_SEPARATORS, &pos, text);
}
@@ -2648,7 +2650,7 @@ GMT_LOCAL void plot_encodefont (struct PSL_CTRL *PSL, int font_no, double size,
if (PSL->internal.comments) PSL_command (PSL, "%% Set font encoding and size for this custom symbol %s item %d\n", name, id);
PSL_command (PSL, "/PSL_symbol_%s_setfont_%d {", name, id);
- if (encode) { /* Reencode fonts with Standard+ or ISOLatin1[+] encodings */
+ if (encode) { /* Re-encode fonts with Standard+ or ISOLatin1[+] encodings */
PSL_command (PSL, " PSL_font_encode %d get 0 eq {%s_Encoding /%s /%s PSL_reencode PSL_font_encode %d 1 put} if", font_no, PSL->init.encoding, PSL->internal.font[font_no].name, PSL->internal.font[font_no].name, font_no);
PSL->internal.font[font_no].encoded = true;
}
@@ -3036,8 +3038,8 @@ GMT_LOCAL void plot_reverse_polygon (struct GMT_CTRL *GMT, struct GMT_DATASEGMEN
/* Reverse the direction of this polygon, i.e, swap points n-1-k and k */
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "Make polygon to clockwise\n");
for (k = 0; k < S->n_rows/2; k++) {
- double_swap (S->data[GMT_X][k], S->data[GMT_X][n1-k]);
- double_swap (S->data[GMT_Y][k], S->data[GMT_Y][n1-k]);
+ gmt_M_double_swap (S->data[GMT_X][k], S->data[GMT_X][n1-k]);
+ gmt_M_double_swap (S->data[GMT_Y][k], S->data[GMT_Y][n1-k]);
}
}
@@ -3150,7 +3152,11 @@ GMT_LOCAL uint64_t plot_geo_polygon_segment (struct GMT_CTRL *GMT, struct GMT_DA
plon[n-1] = S->data[GMT_X][S->n_rows-1];
gmt_M_memcpy (&plon[1], S->data[GMT_X], S->n_rows, double);
gmt_M_memcpy (&plat[1], S->data[GMT_Y], S->n_rows, double);
- if (GMT->current.map.path_mode == GMT_RESAMPLE_PATH) n = gmt_fix_up_path (GMT, &plon, &plat, n, 0.0, 0);
+ if (GMT->current.map.path_mode == GMT_RESAMPLE_PATH && (n = gmt_fix_up_path (GMT, &plon, &plat, n, 0.0, 0)) == 0) {
+ gmt_M_free (GMT, plon);
+ gmt_M_free (GMT, plat);
+ return 0;
+ }
}
}
k = plot_geo_polygon (GMT, plon, plat, n, first, comment); /* Plot filled polygon [no outline] */
@@ -3325,7 +3331,7 @@ GMT_LOCAL void plot_gcircle_sub (struct GMT_CTRL *GMT, double lon0, double lat0,
gmtlib_get_point_from_r_az (GMT, C->lon[0], C->lat[0], C->r, azimuth+180.0, &C->lon[1], &C->lat[1]);
if (C->longway) C->lon[1] += 180.0, C->lat[1] = -C->lat[1]; /* Undo adjustment */
gmt_geo_to_cart (GMT, C->lat[1], C->lon[1], C->A, true); /* Get A */
- double_swap (C->lon[0], C->lon[1]); double_swap (C->lat[0], C->lat[1]); /* Now A is first and B is second */
+ gmt_M_double_swap (C->lon[0], C->lon[1]); gmt_M_double_swap (C->lat[0], C->lat[1]); /* Now A is first and B is second */
break;
case 3: /* Was given coordinates of B instead of azimuth and length; can never be longway */
C->lon[0] = lon0; C->lat[0] = lat0;
@@ -3735,7 +3741,7 @@ GMT_LOCAL unsigned int plot_geo_vector_smallcircle (struct GMT_CTRL *GMT, double
GMT_LOCAL unsigned int plot_geo_vector_greatcircle (struct GMT_CTRL *GMT, double lon0, double lat0, double azimuth, double length, struct GMT_PEN *ppen, struct GMT_SYMBOL *S) {
/* Draws a great-circle vector with our without heads, etc. There are some complications to consider:
* When there are no heads it is simple. If +n is on we may shrink the line thickness.
- * With heads tehre are these cases:
+ * With heads there are these cases:
* Head length is longer than 90% of the vector length. We then skip the head and return 1
* +n<norm> is in effect. We shrink vector pen and head length. Still, the shrunk head
* may be longer than 90% of the vector length. We then shrink head (not pen) further and return 2
@@ -4056,7 +4062,7 @@ void gmt_xy_axis (struct GMT_CTRL *GMT, double x0, double y0, double length, dou
is_interval = (T->type == 'i' || T->type == 'I'); /* Interval or tick mark annotation? */
nx = gmtlib_coordinate_array (GMT, val0, val1, &A->item[k], &knots, &label_c); /* Get all the annotation tick knots */
- do_annot = (nx && k < GMT_TICK_UPPER && annotate && !gmt_M_axis_is_geo (GMT, axis) && T->unit != 'r'); /* Cannot annotate a Gregorian week */
+ do_annot = (nx && k < GMT_TICK_UPPER && annotate && !gmt_M_axis_is_geo_strict (GMT, axis) && T->unit != 'r'); /* Cannot annotate a Gregorian week */
do_tick = !((T->unit == 'K' || T->unit == 'k') && T->interval > 1 && fmod (T->interval, 7.0) > 0.0); /* Do we want tick marks? */
nx1 = (nx > 0 && is_interval) ? nx - 1 : nx;
/* First plot all the tick marks */
@@ -4135,7 +4141,7 @@ void gmt_xy_axis (struct GMT_CTRL *GMT, double x0, double y0, double length, dou
/* Finally do axis label */
- if (A->label[0] && annotate && !gmt_M_axis_is_geo (GMT, axis)) {
+ if (A->label[0] && annotate && !gmt_M_axis_is_geo_strict (GMT, axis)) {
if (!MM_set) PSL_command (PSL, "/MM {%s%sM} def\n", neg ? "neg " : "", (axis != GMT_X) ? "exch " : "");
form = gmt_setfont (GMT, &GMT->current.setting.font_label);
PSL_command (PSL, "/PSL_LH ");
@@ -4172,7 +4178,7 @@ void gmt_plot_line (struct GMT_CTRL *GMT, double *x, double *y, unsigned int *pe
if (n < 2) return;
- plot_NaN_pen_up (x, y, pen, n); /* Ensure we dont have NaNs in the coordinates */
+ plot_NaN_pen_up (x, y, pen, n); /* Ensure we don't have NaNs in the coordinates */
i = 0;
while (i < (n-1) && pen[i+1] == PSL_MOVE) i++; /* Skip repeating pen == PSL_MOVE in beginning */
@@ -4262,7 +4268,7 @@ void gmt_linearx_grid (struct GMT_CTRL *GMT, struct PSL_CTRL *PSL, double w, dou
yn = n;
}
nx = gmtlib_linear_array (GMT, w, e, dval, GMT->current.map.frame.axis[GMT_X].phase, &x);
- if (idup && !gmt_M_360_range(x[0],x[nx-1])) idup = 0; /* Probably due to phase we dont need to remove any duplicate */
+ if (idup && !gmt_M_360_range(x[0],x[nx-1])) idup = 0; /* Probably due to phase we don't need to remove any duplicate */
for (i = 0; i < nx - idup; i++) {
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "Draw %s = %g from %g to %g\n", type, x[i], ys, yn);
plot_map_lonline (GMT, PSL, x[i], ys, yn);
@@ -4314,7 +4320,7 @@ void gmt_map_basemap (struct GMT_CTRL *GMT) {
gmt_vertical_axis (GMT, GMT->current.plot.mode_3D);
- if (GMT->current.proj.got_azimuths) uint_swap (GMT->current.map.frame.side[E_SIDE], GMT->current.map.frame.side[W_SIDE]); /* Temporary swap to trick justify machinery */
+ if (GMT->current.proj.got_azimuths) gmt_M_uint_swap (GMT->current.map.frame.side[E_SIDE], GMT->current.map.frame.side[W_SIDE]); /* Temporary swap to trick justify machinery */
if (GMT->current.setting.map_frame_type & GMT_IS_INSIDE) {
gmt_map_clip_on (GMT, GMT->session.no_rgb, 3); /* Must clip to ensure things are inside */
@@ -4328,7 +4334,7 @@ void gmt_map_basemap (struct GMT_CTRL *GMT) {
plot_map_annotate (GMT, PSL, w, e, s, n);
- if (GMT->current.proj.got_azimuths) uint_swap (GMT->current.map.frame.side[E_SIDE], GMT->current.map.frame.side[W_SIDE]); /* Undo swap */
+ if (GMT->current.proj.got_azimuths) gmt_M_uint_swap (GMT->current.map.frame.side[E_SIDE], GMT->current.map.frame.side[W_SIDE]); /* Undo swap */
plot_map_boundary (GMT, PSL, w, e, s, n);
if (clip_on) gmt_map_clip_off (GMT);
@@ -4654,12 +4660,12 @@ int gmt_draw_map_scale (struct GMT_CTRL *GMT, struct GMT_MAP_SCALE *ms) {
if (ms->do_label) {
/* We estimate the width of the label similarly; if no label given then we use the name_widths from above rather than strlen */
l_width = bar_tick_len + (ms->label[0] ? strlen (ms->label) : name_width[unit]) * GMT_LET_WIDTH * GMT->current.setting.font_label.size * GMT->session.u2u[GMT_PT][GMT_INCH];
- /* When label is placed to left|rigth it sticks up by l_shift and we must ensure dim[YHI] is at least that large */
+ /* When label is placed to left|right it sticks up by l_shift and we must ensure dim[YHI] is at least that large */
l_height = GMT_LET_HEIGHT * GMT->current.setting.font_label.size / PSL_POINTS_PER_INCH; /* Approximate height of label */
l_shift = l_height - scale_height; /* Adjust for the shift in y-coordinate */
}
- if (ms->alignment == 'l' && l_width > dim[XLO]) dim[XLO] = l_width; /* Extend rectangle on the left to accomodate the label */
- else if (ms->alignment == 'r' && l_width > dim[XHI]) dim[XHI] = l_width; /* Extend rectangle on the right to accomodate the label */
+ if (ms->alignment == 'l' && l_width > dim[XLO]) dim[XLO] = l_width; /* Extend rectangle on the left to accommodate the label */
+ else if (ms->alignment == 'r' && l_width > dim[XHI]) dim[XHI] = l_width; /* Extend rectangle on the right to accommodate the label */
/* Estimate approximate distance from anchor point down to base of annotations */
dim[YLO] = dist_to_annot + GMT_LET_HEIGHT * GMT->current.setting.font_annot[GMT_PRIMARY].size / PSL_POINTS_PER_INCH;
dim[YHI] = 0.0; /* Normally nothing above the scale bar */
@@ -5540,7 +5546,7 @@ void gmt_plotend (struct GMT_CTRL *GMT) {
unsigned int i;
struct PSL_CTRL *PSL= GMT->PSL;
PSL_endlayer (GMT->PSL);
- if (GMT->common.t.active) PSL_command (PSL, "1 /Normal PSL_transp\n"); /* Reset transparency to fully opague, if required */
+ if (GMT->common.t.active) PSL_command (PSL, "1 /Normal PSL_transp\n"); /* Reset transparency to fully opaque, if required */
/* Check expected change of clip level to achieved one. Update overall clip level. Check for pending clips. */
@@ -5592,8 +5598,8 @@ void gmt_geo_line (struct GMT_CTRL *GMT, double *lon, double *lat, uint64_t n) {
}
uint64_t gmt_geo_polarcap_segment (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S, double **lon, double **lat) {
- /* Special treatment for polar caps since they must add int parts of possibly curved periodic boundaries
- * from the pole up to the intersection with the cap perimeter. We handle this case separately here.
+ /* Special treatment for polar caps since they must add in parts of possibly curved periodic boundaries
+ * from the pole up or down to the intersection with the cap perimeter. We handle this case separately here.
* This is in response to issue # 852. P. Wessel */
uint64_t k0, perim_n, n_new, m, n = S->n_rows, k;
double start_lon, stop_lon, yc = 0.0, dx, pole_lat = 90.0 * S->pole;
@@ -5621,12 +5627,13 @@ uint64_t gmt_geo_polarcap_segment (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT
if (S->data[GMT_X][k] >= 180.0) S->data[GMT_X][k] -= 360.0;
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "First longitude = %g. Last longitude = %g\n", S->data[GMT_X][0], S->data[GMT_X][n-1]);
for (k = 1, k0 = 0; k0 == 0 && k < n; k++) { /* Determine where the perimeter crossing with the west boundary occurs */
- if (k && (GMT->common.R.wesn[XLO]-S->data[GMT_X][k]) >= 0.0 && (GMT->common.R.wesn[XLO]-S->data[GMT_X][k-1]) <= 0.0) k0 = k;
+ if ((GMT->common.R.wesn[XLO]-S->data[GMT_X][k]) >= 0.0 && (GMT->common.R.wesn[XLO]-S->data[GMT_X][k-1]) <= 0.0) k0 = k;
}
/* Determine the latitude of that crossing */
if (k0) { /* Occurred somewhere along the perimeter between points k0 and k0-1 */
+ double x_dist = S->data[GMT_X][k0-1] - GMT->common.R.wesn[XLO];
gmt_M_set_delta_lon (S->data[GMT_X][k0-1], S->data[GMT_X][k0], dx); /* Handles the 360 jump cases */
- yc = S->data[GMT_Y][k0-1] - (S->data[GMT_Y][k0] - S->data[GMT_Y][k0-1]) * (S->data[GMT_X][k0-1] - GMT->common.R.wesn[XLO]) / dx;
+ yc = S->data[GMT_Y][k0-1] - (S->data[GMT_Y][k0] - S->data[GMT_Y][k0-1]) * x_dist / dx;
}
else /* Very first point is at the right longitude */
yc = S->data[GMT_Y][k0];
@@ -5644,8 +5651,10 @@ uint64_t gmt_geo_polarcap_segment (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT
plon = gmt_M_memory (GMT, NULL, n_new, double);
plat = gmt_M_memory (GMT, NULL, n_new, double);
/* Start off with the path from the pole to the crossing */
- gmt_M_memcpy (plon, x_perim, perim_n, double);
- gmt_M_memcpy (plat, y_perim, perim_n, double);
+ if (perim_n) {
+ gmt_M_memcpy (plon, x_perim, perim_n, double);
+ gmt_M_memcpy (plat, y_perim, perim_n, double);
+ }
/* Now walk from k0 to the end of polygon, wrapping around if needed */
m = perim_n; /* Index of next output point */
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "Add perimeter data from k0->n [%d->%d], then 0->k0 [%d]\n", k0, n, k0);
@@ -5659,14 +5668,18 @@ uint64_t gmt_geo_polarcap_segment (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT
}
/* Then add the opposite path to the pole, swithing the longitude to stop_lon */
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "Add path from %g/%g to %g/%g [%d points]\n", stop_lon, yc, stop_lon, pole_lat, perim_n);
- for (k = perim_n-1; k > 0; k--, m++) {
- plon[m] = stop_lon;
- plat[m] = y_perim[k];
+ if (perim_n) {
+ for (k = perim_n-1; k > 0; k--, m++) {
+ plon[m] = stop_lon;
+ plat[m] = y_perim[k];
+ }
}
/* Finally add the duplicate pole at the end of polygon so it is closed */
plon[m] = stop_lon;
plat[m++] = pole_lat;
- gmt_M_free (GMT, x_perim); gmt_M_free (GMT, y_perim); /* No longer needed */
+ if (perim_n) {
+ gmt_M_free (GMT, x_perim); gmt_M_free (GMT, y_perim); /* No longer needed */
+ }
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "New path has %d points, we allocated %d points\n", m, n_new);
#if 0
fp = fopen ("shit.txt", "w");
@@ -5823,6 +5836,7 @@ void gmt_geo_wedge (struct GMT_CTRL *GMT, double xlon, double xlat, double radiu
*/
int N, k, kk, n_path;
+ uint64_t n_new;
double d_az, px, py, qx, qy, L, plat, plon, qlon, qlat, az, rot_start, E[3], P[3], Q[3], R[3][3];
struct GMT_DATASEGMENT *S = NULL;
@@ -5873,9 +5887,12 @@ void gmt_geo_wedge (struct GMT_CTRL *GMT, double xlon, double xlat, double radiu
/* Close polygon */
S->data[GMT_X][kk] = S->data[GMT_X][0]; S->data[GMT_Y][kk] = S->data[GMT_Y][0];
}
- S->n_rows = gmt_fix_up_path (GMT, &S->data[GMT_X], &S->data[GMT_Y], S->n_rows, 0.0, 0);
- gmt_set_seg_minmax (GMT, S); /* Set min/max */
- if (mode == 3) gmt_set_seg_polar (GMT, S);
+ if ((n_new = gmt_fix_up_path (GMT, &S->data[GMT_X], &S->data[GMT_Y], S->n_rows, 0.0, 0)) == 0) {
+ gmt_free_segment (GMT, &S);
+ return;
+ }
+ S->n_rows = n_new;
+ gmt_set_seg_minmax (GMT, (mode == 3) ? GMT_IS_POLY : GMT_IS_LINE, S); /* Update min/max */
gmt_geo_polygons (GMT, S);
diff --git a/src/gmt_plot.h b/src/gmt_plot.h
index f0be7f9..357a3c5 100644
--- a/src/gmt_plot.h
+++ b/src/gmt_plot.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_plot.h 16756 2016-07-09 20:07:18Z pwessel $
+ * $Id: gmt_plot.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_private.h b/src/gmt_private.h
index 47c5b14..516c5d6 100644
--- a/src/gmt_private.h
+++ b/src/gmt_private.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_private.h 16828 2016-07-18 02:06:25Z pwessel $
+ * $Id: gmt_private.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -54,7 +54,7 @@ enum GMT_enum_pars {GMTAPI_TYPE = 0, /* ipar[0] = data type (GMTAPI_{BYTE|SHORT|
GMTAPI_NDIM, /* ipar[1] = dimensionality of data (1, 2, or 3) (GMT grids = 2 yet stored internally as 1D) */
GMTAPI_NROW, /* ipar[2] = number_of_rows (or length of 1-D array) */
GMTAPI_NCOL, /* ipar[3] = number_of_columns (1 for 1-D array) */
- GMTAPI_KIND, /* ipar[4] = arrangment of rows/col (0 = rows (C), 1 = columns (Fortran)) */
+ GMTAPI_KIND, /* ipar[4] = arrangement of rows/col (0 = rows (C), 1 = columns (Fortran)) */
GMTAPI_DIML, /* ipar[5] = length of dimension for row (C) or column (Fortran) */
GMTAPI_FREE, /* ipar[6] = 1 to free array after use (IN) or before filling with output (OUT), 0 to leave alone */
GMTAPI_NODE}; /* ipar[7] = 1 for pixel registration, 0 for node */
@@ -125,7 +125,7 @@ struct GMTAPI_CTRL {
unsigned int pad; /* Session default for number of rows/cols padding for grids [2] */
unsigned int mode; /* 1 if called via external API (MATLAB, Python) [0] */
enum GMT_enum_fmt shape; /* GMT_IS_COL_FORMAT (1) if column-major (MATLAB, Fortran), GMT_IS_ROW_FORMAT (0) if row-major (Python, C/C++) [0] */
- unsigned int leave_grid_scaled; /* 1 if we dont want to unpack a grid after we packed it for writing [0] */
+ unsigned int leave_grid_scaled; /* 1 if we don't want to unpack a grid after we packed it for writing [0] */
unsigned int n_cores; /* Number of available cores on this system */
unsigned int verbose; /* Used until GMT is set up */
bool registered[2]; /* true if at least one source/destination has been registered (in and out) */
diff --git a/src/gmt_proj.c b/src/gmt_proj.c
index d1c7532..e58662b 100644
--- a/src/gmt_proj.c
+++ b/src/gmt_proj.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_proj.c 16821 2016-07-16 20:08:53Z pwessel $
+ * $Id: gmt_proj.c 17528 2017-02-05 08:02:49Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -81,7 +81,7 @@
#define GMT_PROJ_IS_ZERO(x) (fabs (x) < GMT_PROJ_CONV_LIMIT)
GMT_LOCAL double proj_robinson_spline (struct GMT_CTRL *GMT, double xp, double *x, double *y, double *c) {
- /* Compute the interpolated values from the Robinson coefficients */
+ /* Returns the interpolated value y(xp) from the Robinson coefficients */
int j = 0, j1;
double yp, a, b, h, ih, dx;
@@ -718,6 +718,56 @@ void gmt_icyleqdist (struct GMT_CTRL *GMT, double *lon, double *lat, double x, d
/* -JJ MILLER CYLINDRICAL PROJECTION */
+//#define CHRISTMAS
+/* Turning on Christmas makes the Miller projection a triangular projection
+ * that projects 90 degrees of longitude and latitudes 45-90 into a 45-degree
+ * triangle. Doing all for quadrants results in a square map with radial
+ * meridians and lots of distortion along the boundaries. This was used to
+ * build a 3-D cube of the world with this triangle projection being used to
+ * map the top (N polar to 34N) and bottom (S pole to 45S) sides, with the
+ * remaining 4 sides just being -JQ maps. I left it here since I may want
+ * to mess with this in the future. P. Wessel, Dec. 2016.
+ */
+#ifdef CHRISTMAS
+/* Bypass Miller projection entirely and introduce a triangle projection */
+void gmt_vmiller (struct GMT_CTRL *GMT, double lon0, double slat) {
+ /* Set up a Cylindrical equidistant transformation */
+ GMT->current.proj.north_pole = (slat > 0.0);
+ proj_check_R_J (GMT, &lon0);
+ GMT->current.proj.central_meridian = lon0;
+ GMT->current.proj.j_x = 0.25 * D2R * GMT->current.proj.EQ_RAD;
+ GMT->current.proj.j_y = 0.25 * D2R * GMT->current.proj.EQ_RAD;
+ GMT->current.proj.j_ix = 1.0 / GMT->current.proj.j_x;
+ GMT->current.proj.j_iy = 1.0 / GMT->current.proj.j_y;
+}
+
+void gmt_miller (struct GMT_CTRL *GMT, double lon, double lat, double *x, double *y) {
+ /* Convert lon/lat to Cylindrical equidistant x/y */
+
+ gmt_M_wind_lon (GMT, lon) /* Remove central meridian and place lon in -180/+180 range */
+ if (lat > 0.0) {
+ *x = (0.5 + lon * (90.0 - lat) / 4050.0) * GMT->current.proj.j_x;
+ *y = ((lat-45.0) / 90.0) * GMT->current.proj.j_y;
+ }
+ else {
+ *x = (0.5 - lon * (90.0 + lat) / 4050.0) * GMT->current.proj.j_x;
+ *y = -((lat+45) / 90.0) * GMT->current.proj.j_y;
+ }
+}
+
+void gmt_imiller (struct GMT_CTRL *GMT, double *lon, double *lat, double x, double y) {
+ /* Convert Cylindrical equal-area x/y to lon/lat */
+
+ if (GMT->current.proj.north_pole) {
+ *lat = 45.0 + 90.0 * y * GMT->current.proj.j_iy;
+ *lon = (4050.0 * (x * GMT->current.proj.j_ix - 0.5)) / (90.0 - *lat) + GMT->current.proj.central_meridian;
+ }
+ else {
+ *lat = -(45.0 + 90.0 * y * GMT->current.proj.j_iy);
+ *lon = -(4050.0 * (x * GMT->current.proj.j_ix - 0.5)) / (90.0 + *lat) + GMT->current.proj.central_meridian;
+ }
+}
+#else
void gmt_vmiller (struct GMT_CTRL *GMT, double lon0) {
/* Set up a Miller Cylindrical transformation */
@@ -743,6 +793,7 @@ void gmt_imiller (struct GMT_CTRL *GMT, double *lon, double *lat, double x, doub
*lon = x * GMT->current.proj.j_ix + GMT->current.proj.central_meridian;
*lat = 2.5 * atand (exp (y * GMT->current.proj.j_iy)) - 112.5;
}
+#endif
/* -JCyl_stere CYLINDRICAL STEREOGRAPHIC PROJECTION */
@@ -2428,14 +2479,16 @@ void gmt_vrobinson (struct GMT_CTRL *GMT, double lon0) {
GMT->current.proj.n_phi[17] = 85; GMT->current.proj.n_X[17] = 0.5722; GMT->current.proj.n_Y[17] = 0.9761;
GMT->current.proj.n_phi[18] = 90; GMT->current.proj.n_X[18] = 0.5322; GMT->current.proj.n_Y[18] = 1.0000;
if (GMT->current.setting.interpolant == GMT_SPLINE_CUBIC) { /* Natural cubic spline */
- err_flag = gmtlib_cspline (GMT, GMT->current.proj.n_phi, GMT->current.proj.n_X, GMT_N_ROBINSON, GMT->current.proj.n_x_coeff);
- err_flag += gmtlib_cspline (GMT, GMT->current.proj.n_phi, GMT->current.proj.n_Y, GMT_N_ROBINSON, GMT->current.proj.n_y_coeff);
- err_flag += gmtlib_cspline (GMT, GMT->current.proj.n_Y, GMT->current.proj.n_phi, GMT_N_ROBINSON, GMT->current.proj.n_iy_coeff);
+ err_flag = gmtlib_cspline (GMT, GMT->current.proj.n_phi, GMT->current.proj.n_X, GMT_N_ROBINSON, GMT->current.proj.n_x_coeff);
+ err_flag += gmtlib_cspline (GMT, GMT->current.proj.n_phi, GMT->current.proj.n_Y, GMT_N_ROBINSON, GMT->current.proj.n_y_coeff);
+ err_flag += gmtlib_cspline (GMT, GMT->current.proj.n_Y, GMT->current.proj.n_X, GMT_N_ROBINSON, GMT->current.proj.n_yx_coeff);
+ err_flag += gmtlib_cspline (GMT, GMT->current.proj.n_Y, GMT->current.proj.n_phi, GMT_N_ROBINSON, GMT->current.proj.n_iy_coeff);
}
else { /* Akimas spline */
- err_flag = gmtlib_akima (GMT, GMT->current.proj.n_phi, GMT->current.proj.n_X, GMT_N_ROBINSON, GMT->current.proj.n_x_coeff);
- err_flag += gmtlib_akima (GMT, GMT->current.proj.n_phi, GMT->current.proj.n_Y, GMT_N_ROBINSON, GMT->current.proj.n_y_coeff);
- err_flag += gmtlib_akima (GMT, GMT->current.proj.n_Y, GMT->current.proj.n_phi, GMT_N_ROBINSON, GMT->current.proj.n_iy_coeff);
+ err_flag = gmtlib_akima (GMT, GMT->current.proj.n_phi, GMT->current.proj.n_X, GMT_N_ROBINSON, GMT->current.proj.n_x_coeff);
+ err_flag += gmtlib_akima (GMT, GMT->current.proj.n_phi, GMT->current.proj.n_Y, GMT_N_ROBINSON, GMT->current.proj.n_y_coeff);
+ err_flag += gmtlib_akima (GMT, GMT->current.proj.n_Y, GMT->current.proj.n_X, GMT_N_ROBINSON, GMT->current.proj.n_yx_coeff);
+ err_flag += gmtlib_akima (GMT, GMT->current.proj.n_Y, GMT->current.proj.n_phi, GMT_N_ROBINSON, GMT->current.proj.n_iy_coeff);
}
if (err_flag) GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Interpolation failed in gmt_vrobinson?\n");
}
@@ -2475,6 +2528,29 @@ double gmt_left_robinson (struct GMT_CTRL *GMT, double y) {
y -= GMT->current.proj.origin[GMT_Y];
y *= GMT->current.proj.i_scale[GMT_Y];
Y = fabs (y * GMT->current.proj.n_i_cy);
+ X = proj_robinson_spline (GMT, Y, GMT->current.proj.n_Y, GMT->current.proj.n_X, GMT->current.proj.n_yx_coeff);
+ x = GMT->current.proj.n_cx * X * (GMT->common.R.wesn[XLO] - GMT->current.proj.central_meridian);
+ return (x * GMT->current.proj.scale[GMT_X] + GMT->current.proj.origin[GMT_X]);
+}
+
+double gmt_right_robinson (struct GMT_CTRL *GMT, double y) {
+ double x, X, Y;
+
+ y -= GMT->current.proj.origin[GMT_Y];
+ y *= GMT->current.proj.i_scale[GMT_Y];
+ Y = fabs (y * GMT->current.proj.n_i_cy);
+ X = proj_robinson_spline (GMT, Y, GMT->current.proj.n_Y, GMT->current.proj.n_X, GMT->current.proj.n_yx_coeff);
+ x = GMT->current.proj.n_cx * X * (GMT->common.R.wesn[XHI] - GMT->current.proj.central_meridian);
+ return (x * GMT->current.proj.scale[GMT_X] + GMT->current.proj.origin[GMT_X]);
+}
+
+#if 0
+double gmt_left_robinson (struct GMT_CTRL *GMT, double y) {
+ double x, X, Y;
+
+ y -= GMT->current.proj.origin[GMT_Y];
+ y *= GMT->current.proj.i_scale[GMT_Y];
+ Y = fabs (y * GMT->current.proj.n_i_cy);
if (gmt_intpol (GMT, GMT->current.proj.n_Y, GMT->current.proj.n_X, GMT_N_ROBINSON, 1, &Y, &X, GMT->current.setting.interpolant)) {
gmt_message (GMT, "GMT Internal error in gmt_left_robinson!\n");
GMT_exit (GMT, GMT_PROJECTION_ERROR); return GMT->session.d_NaN;
@@ -2498,6 +2574,7 @@ double gmt_right_robinson (struct GMT_CTRL *GMT, double y) {
x = GMT->current.proj.n_cx * X * (GMT->common.R.wesn[XHI] - GMT->current.proj.central_meridian);
return (x * GMT->current.proj.scale[GMT_X] + GMT->current.proj.origin[GMT_X]);
}
+#endif
/* -JI SINUSOIDAL EQUAL AREA PROJECTION */
diff --git a/src/gmt_project.h b/src/gmt_project.h
index f5c4d92..b6f9317 100644
--- a/src/gmt_project.h
+++ b/src/gmt_project.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_project.h 17154 2016-10-01 00:23:46Z pwessel $
+ * $Id: gmt_project.h 17528 2017-02-05 08:02:49Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -50,7 +50,9 @@ EXTERN_MSC double gmtmap_lat_swap_quick (struct GMT_CTRL *GMT, double lat, doubl
/*! Macros returns true if the two coordinates are lon/lat; way should be GMT_IN or GMT_OUT */
#define gmt_M_x_is_lon(C,way) (C->current.io.col_type[way][GMT_X] == GMT_IS_LON)
+#define gmt_M_y_is_lon(C,way) (C->current.io.col_type[way][GMT_Y] == GMT_IS_LON)
#define gmt_M_y_is_lat(C,way) (C->current.io.col_type[way][GMT_Y] == GMT_IS_LAT)
+#define gmt_M_x_is_lat(C,way) (C->current.io.col_type[way][GMT_Y] == GMT_IS_LAT)
#define gmt_M_is_geographic(C,way) (gmt_M_x_is_lon(C,way) && gmt_M_y_is_lat(C,way))
#define GMT_N_PROJECTIONS 29 /* Total number of projections in GMT */
@@ -142,10 +144,12 @@ enum gmt_enum_units {GMT_IS_METER = 0,
/* Return 0 for Flat Earth, 1 for Great-circles, 2 for geodesics, and 3 for loxodromes */
#define gmt_M_sph_mode(C) (gmt_M_is_flatearth (C) ? GMT_FLATEARTH : (gmt_M_is_spherical (C) ? GMT_GREATCIRCLE : (C->current.map.loxodrome ? GMT_LOXODROME : GMT_GEODESIC)))
-//#define gmt_M_360_range(w,e) (doubleAlmostEqual (fabs((e) - (w)), 360.0)) /* PW: Reconsider this later perhaps but for now too tight */
+//#define gmt_M_360_range(w,e) (doubleAlmostEqual (fabs((e) - (w)), 360.0)) /* PW: Reconsider this later perhaps but for now too tight [see issue #954] */
#define gmt_M_180_range(s,n) (doubleAlmostEqual (fabs((n) - (s)), 180.0))
#define gmt_M_360_range(w,e) (gmt_M_is_zero (fabs ((e) - (w)) - 360.0))
#define gmt_M_is_pole(y) (doubleAlmostEqual (fabs(y), 90.0))
+#define gmt_M_is_Npole(y) (gmt_M_is_zero(y-90.0))
+#define gmt_M_is_Spole(y) (gmt_M_is_zero(y+90.0))
#define gmt_M_is_zero(x) (fabs (x) < GMT_CONV8_LIMIT)
#ifndef D2R
@@ -340,7 +344,7 @@ struct GMT_PROJ {
double n_cx, n_cy; /* = = 0.8487R, 1.3523R */
double n_i_cy;
double n_phi[GMT_N_ROBINSON], n_X[GMT_N_ROBINSON], n_Y[GMT_N_ROBINSON];
- double n_x_coeff[3*GMT_N_ROBINSON], n_y_coeff[3*GMT_N_ROBINSON], n_iy_coeff[3*GMT_N_ROBINSON];
+ double n_x_coeff[3*GMT_N_ROBINSON], n_y_coeff[3*GMT_N_ROBINSON], n_yx_coeff[3*GMT_N_ROBINSON], n_iy_coeff[3*GMT_N_ROBINSON];
/* Eckert IV Projection */
diff --git a/src/gmt_prototypes.h b/src/gmt_prototypes.h
index c31c4e7..3a90aed 100644
--- a/src/gmt_prototypes.h
+++ b/src/gmt_prototypes.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_prototypes.h 17158 2016-10-03 07:03:48Z pwessel $
+ * $Id: gmt_prototypes.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -62,7 +62,7 @@ EXTERN_MSC bool gmt_get_time_system (struct GMT_CTRL *GMT, char *name, struct GM
EXTERN_MSC int gmt_hash_lookup (struct GMT_CTRL *GMT, const char *key, struct GMT_HASH *hashnode, unsigned int n, unsigned int n_hash);
EXTERN_MSC void gmt_syntax (struct GMT_CTRL *GMT, char option);
EXTERN_MSC void gmt_cont_syntax (struct GMT_CTRL *GMT, unsigned int indent, unsigned int kind);
-EXTERN_MSC void gmt_refpoint_syntax (struct GMT_CTRL *GMT, char option, char *string, unsigned int kind, unsigned int part);
+EXTERN_MSC void gmt_refpoint_syntax (struct GMT_CTRL *GMT, char *option, char *string, unsigned int kind, unsigned int part);
EXTERN_MSC void gmt_mapscale_syntax (struct GMT_CTRL *GMT, char option, char *string);
EXTERN_MSC void gmt_maprose_syntax (struct GMT_CTRL *GMT, char option, char *string);
EXTERN_MSC void gmt_mapinsert_syntax (struct GMT_CTRL *GMT, char option, char *string);
@@ -233,7 +233,7 @@ EXTERN_MSC struct GMT_VECTOR * gmt_create_vector (struct GMT_CTRL *GMT, uint64_t
EXTERN_MSC void gmt_free_vector (struct GMT_CTRL *GMT, struct GMT_VECTOR **V, bool free_vector);
EXTERN_MSC int gmt_load_aspatial_string (struct GMT_CTRL *GMT, struct GMT_OGR *G, uint64_t col, char out[GMT_BUFSIZ]);
EXTERN_MSC double gmt_get_aspatial_value (struct GMT_CTRL *GMT, int col, struct GMT_DATASEGMENT *S);
-EXTERN_MSC void gmt_set_seg_minmax (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S);
+EXTERN_MSC void gmt_set_seg_minmax (struct GMT_CTRL *GMT, unsigned int geometry, struct GMT_DATASEGMENT *S);
EXTERN_MSC void gmt_set_seg_polar (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S);
EXTERN_MSC void gmt_skip_xy_duplicates (struct GMT_CTRL *GMT, bool mode);
EXTERN_MSC void gmt_duplicate_ogr_seg (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S_to, struct GMT_DATASEGMENT *S_from);
@@ -275,6 +275,7 @@ EXTERN_MSC bool gmt_x_is_outside (struct GMT_CTRL *GMT, double *x, double left,
EXTERN_MSC void gmt_set_xy_domain (struct GMT_CTRL *GMT, double wesn_extended[], struct GMT_GRID_HEADER *h);
EXTERN_MSC int gmt_BC_init (struct GMT_CTRL *GMT, struct GMT_GRID_HEADER *h);
EXTERN_MSC int gmt_grd_BC_set (struct GMT_CTRL *GMT, struct GMT_GRID *G, unsigned int direction);
+EXTERN_MSC unsigned int gmt_parse_inv_cpt (struct GMT_CTRL *GMT, char *arg);
EXTERN_MSC struct GMT_PALETTE * gmt_truncate_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double z_low, double z_high);
EXTERN_MSC void gmt_free_int_selection (struct GMT_CTRL *GMT, struct GMT_INT_SELECTION **S);
EXTERN_MSC struct GMT_INT_SELECTION * gmt_set_int_selection (struct GMT_CTRL *GMT, char *item);
@@ -296,7 +297,7 @@ EXTERN_MSC bool gmt_x_out_of_bounds (struct GMT_CTRL *GMT, int *i, struct GMT_GR
EXTERN_MSC bool gmt_row_col_out_of_bounds (struct GMT_CTRL *GMT, double *in, struct GMT_GRID_HEADER *h, unsigned int *row, unsigned int *col);
EXTERN_MSC int gmt_list_cpt (struct GMT_CTRL *GMT, char option);
EXTERN_MSC void gmt_scale_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double scale);
-EXTERN_MSC void gmt_stretch_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double z_low, double z_high, unsigned int continuous);
+EXTERN_MSC void gmt_stretch_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double z_low, double z_high);
EXTERN_MSC struct GMT_PALETTE * gmt_sample_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *Pin, double z[], int nz, bool continuous, bool reverse, bool log_mode, bool no_inter);
EXTERN_MSC void gmt_invert_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P);
EXTERN_MSC void gmt_cpt_transparency (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double transparency, unsigned int mode);
@@ -408,7 +409,7 @@ EXTERN_MSC int gmt_shore_level_at_point (struct GMT_CTRL *GMT, struct GMT_SHORE
EXTERN_MSC int gmt_chol_dcmp (struct GMT_CTRL *GMT, double *a, double *d, double *cond, int nr, int n);
EXTERN_MSC void gmt_chol_recover (struct GMT_CTRL *GMT, double *a, double *d, int nr, int n, int nerr, bool donly);
EXTERN_MSC void gmt_chol_solv (struct GMT_CTRL *GMT, double *a, double *x, double *y, int nr, int n);
-EXTERN_MSC void gmt_set_tbl_minmax (struct GMT_CTRL *GMT, struct GMT_DATATABLE *T);
+EXTERN_MSC void gmt_set_tbl_minmax (struct GMT_CTRL *GMT, unsigned int geometry, struct GMT_DATATABLE *T);
EXTERN_MSC void gmt_matrix_vect_mult (struct GMT_CTRL *GMT, unsigned int dim, double a[3][3], double b[3], double c[3]);
EXTERN_MSC void gmt_make_rot_matrix (struct GMT_CTRL *GMT, double lonp, double latp, double w, double R[3][3]);
EXTERN_MSC void gmt_make_rot_matrix2 (struct GMT_CTRL *GMT, double E[3], double w, double R[3][3]);
diff --git a/src/gmt_psl.h b/src/gmt_psl.h
index 63831a7..e7811e3 100644
--- a/src/gmt_psl.h
+++ b/src/gmt_psl.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_psl.h 16760 2016-07-09 21:51:49Z pwessel $
+ * $Id: gmt_psl.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -40,7 +40,7 @@
* parsed by the default machinery and stored in the corresponding
* GMT->setting.ps_* parameters, e.g., PS_PAGE_COLOR is parsed and stored
* as GMT->setting.ps_page_color. All of these are used as arguments to
- * PSL_beginsession, PSL_set_defaults, and PSL_beginplot which sets teh
+ * PSL_beginsession, PSL_set_defaults, and PSL_beginplot which sets the
* internal PSL variables.
* A few of these parameters can also be modified via the GMT command
* line options: -P -U -X -Y -c. These options simply change the values as
diff --git a/src/gmt_regexp.c b/src/gmt_regexp.c
index 8c0d680..6d2647c 100644
--- a/src/gmt_regexp.c
+++ b/src/gmt_regexp.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_regexp.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmt_regexp.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -109,7 +109,7 @@ int gmtlib_regexp_match (struct GMT_CTRL *GMT, const char *subject, const char *
return (0); /* Match failed */
}
- return (1); /* Match succeded */
+ return (1); /* Match succeeded */
#elif defined HAVE_POSIX_ERE
@@ -134,7 +134,7 @@ int gmtlib_regexp_match (struct GMT_CTRL *GMT, const char *subject, const char *
status = regexec(&re, subject, 0U, NULL, 0);
regfree(&re); /* Release memory used for the compiled pattern */
if ( status == 0 )
- return (1); /* Match succeded */
+ return (1); /* Match succeeded */
else if ( status != REG_NOMATCH ) {
/* this is when errors have been encountered */
regerror(status, &re, err_msg, MAX_ERR_LENGTH);
diff --git a/src/gmt_resources.h b/src/gmt_resources.h
index 77aa179..e2f169f 100644
--- a/src/gmt_resources.h
+++ b/src/gmt_resources.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_resources.h 17018 2016-08-28 23:21:12Z pwessel $
+ * $Id: gmt_resources.h 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 2012-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 2012-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -18,7 +18,7 @@
/*
* gmt_resources.h contains the definitions for the six GMT resources
* GMT_DATASET, GMT_GRID, GMT_IMAGE, GMT_PALETTE, GMT_POSTSCRIPT, GMT_TEXTSET
- * as well as the two auxilliary resources GMT_MATRIX and GMT_VECTOR,
+ * as well as the two auxiliary resources GMT_MATRIX and GMT_VECTOR,
* as well as all named enums.
*
* Author: Paul Wessel
@@ -97,7 +97,7 @@ enum GMT_enum_family {
GMT_IS_DATASET = 0, /* Entity is a data table */
GMT_IS_GRID, /* Entity is a grid */
GMT_IS_IMAGE, /* Entity is a 1- or 3-layer unsigned char image */
- GMT_IS_PALETTE, /* Entity is a color pallete table */
+ GMT_IS_PALETTE, /* Entity is a color palette table */
GMT_IS_POSTSCRIPT, /* Entity is a PostScript content struct */
GMT_IS_TEXTSET, /* Entity is a text table */
GMT_IS_MATRIX, /* Entity is user matrix */
@@ -161,14 +161,16 @@ enum GMT_enum_ioset {
GMT_IO_UNREG = 16384}; /* Tell GMT_End_IO to unregister all accessed resources. */
enum GMT_enum_read {
- GMT_READ_DOUBLE = 0, /* Read ASCII data record and return double array */
+ GMT_READ_DATA = 0, /* Read ASCII data record and return double array */
+ GMT_READ_DOUBLE = 0, /* Read ASCII data record and return double array [obsolete, replaced by GMT_READ_DATA for clarity] */
GMT_READ_NORMAL = 0, /* Normal read mode [Default] */
GMT_READ_TEXT = 1, /* Read ASCII data record and return text string */
GMT_READ_MIXED = 2, /* Read ASCII data record and return double array but tolerate conversion errors */
GMT_READ_FILEBREAK = 4}; /* Add to mode to indicate we want to know when each file end is reached [continuous] */
enum GMT_enum_write {
- GMT_WRITE_DOUBLE = 0, /* Write double array to output */
+ GMT_WRITE_DATA = 0, /* Write double array to output */
+ GMT_WRITE_DOUBLE = 0, /* Write double array to output [obsolete, replaced by GMT_WRITE_DATA for clarity] */
GMT_WRITE_TEXT = 1, /* Write ASCII current record to output */
GMT_WRITE_SEGMENT_HEADER = 2, /* Write segment header record to output */
GMT_WRITE_TABLE_HEADER = 3, /* Write current record as table header to output */
@@ -194,12 +196,13 @@ enum GMT_enum_alloc {
GMT_ALLOC_INTERNALLY = 1, /* Allocated by GMT: We may reallocate as needed and free when no longer needed */
GMT_ALLOC_NORMAL = 0, /* Normal allocation of new dataset based on shape of input dataset */
GMT_ALLOC_VERTICAL = 4, /* Allocate a single table for data set to hold all input tables by vertical concatenation */
- GMT_ALLOC_HORIZONTAL = 8}; /* Alocate a single table for data set to hold all input tables by horizontal (paste) concatenations */
+ GMT_ALLOC_HORIZONTAL = 8}; /* Allocate a single table for data set to hold all input tables by horizontal (paste) concatenations */
enum GMT_enum_duplicate {
GMT_DUPLICATE_NONE = 0, /* Duplicate data set structure but no allocate© of data records|grid|image */
GMT_DUPLICATE_ALLOC, /* Duplicate data set structure and allocate space for data records|grid|image, but no copy */
- GMT_DUPLICATE_DATA}; /* Duplicate data set structure, allocate space for data records|grid|image, and copy */
+ GMT_DUPLICATE_DATA, /* Duplicate data set structure, allocate space for data records|grid|image, and copy */
+ GMT_DUPLICATE_RESET = 4}; /* During duplicate, reset copy to normal system grid pad if original is different */
/* Various directions and modes to call the FFT */
enum GMT_enum_FFT {
@@ -221,7 +224,7 @@ enum GMT_enum_verbose {GMT_MSG_QUIET = 0, /* No messages whatsoever */
GMT_MSG_TICTOC, /* To print a tic-toc elapsed time message */
GMT_MSG_COMPAT, /* Compatibility warnings */
GMT_MSG_VERBOSE, /* Verbose level */
- GMT_MSG_LONG_VERBOSE, /* Longer verbose */
+ GMT_MSG_LONG_VERBOSE, /* Longer verbose, -Vl in some programs */
GMT_MSG_DEBUG}; /* Debug messages for developers mostly */
/*============================================================ */
@@ -250,6 +253,7 @@ enum GMT_enum_dimindex {
};
enum GMT_enum_gridio {
+ GMT_GRID_IS_CARTESIAN = 0U, /* Grid is not geographic but Cartesian */
GMT_GRID_IS_REAL = 0U, /* Read|write a normal real-valued grid */
GMT_GRID_ALL = 0U, /* Read|write both grid header and the entire grid (no subset) */
GMT_GRID_HEADER_ONLY = 1U, /* Just read|write the grid header */
@@ -260,7 +264,8 @@ enum GMT_enum_gridio {
GMT_GRID_NO_HEADER = 16U, /* Write a native grid without the leading grid header */
GMT_GRID_ROW_BY_ROW = 32U, /* Read|write the grid array one row at the time sequentially */
GMT_GRID_ROW_BY_ROW_MANUAL = 64U, /* Read|write the grid array one row at the time in any order */
- GMT_GRID_XY = 128U}; /* Allocate and initialize x,y vectors */
+ GMT_GRID_XY = 128U, /* Allocate and initialize x,y vectors */
+ GMT_GRID_IS_GEO = 256U}; /* Grid is a geographic grid, not Cartesian */
/* These lengths (except GMT_GRID_VARNAME_LEN80) must NOT be changed as they are part of grd definition */
enum GMT_enum_grdlen {
@@ -352,8 +357,8 @@ struct GMT_GRID_HEADER {
size_t z_chunksize[2]; /* chunk size (lat,lon) */
unsigned int z_shuffle; /* if shuffle filter is turned on */
unsigned int z_deflate_level; /* if deflate filter is in use */
- unsigned int z_scale_autoadust; /* if z_scale_factor should be auto-detected */
- unsigned int z_offset_autoadust; /* if z_add_offset should be auto-detected */
+ unsigned int z_scale_autoadjust; /* if z_scale_factor should be auto-detected */
+ unsigned int z_offset_autoadjust;/* if z_add_offset should be auto-detected */
/* xy_*[] is separate settings for GMT_IN and GMT_OUT */
unsigned int xy_adjust[2]; /* 1 if +u<unit> was parsed and scale set, 3 if xy has been adjusted, 0 otherwise */
unsigned int xy_mode[2]; /* 1 if +U<unit> was parsed, 0 otherwise */
@@ -630,7 +635,7 @@ struct GMT_PALETTE { /* Holds all pen, color, and fill-related parameters */
/* Variables we document for the API: */
unsigned int n_headers; /* Number of CPT header records (0 if no header) */
unsigned int n_colors; /* Number of colors in CPT lookup table */
- unsigned int mode; /* Flags controling use of BFN colors */
+ unsigned int mode; /* Flags controlling use of BFN colors */
struct GMT_LUT *data; /* CPT lookup table read by gmtlib_read_cpt */
struct GMT_BFN bfn[3]; /* Structures with back/fore/nan colors */
char **header; /* Array with all CPT header records, if any) */ /* Content not counted by sizeof (struct) */
diff --git a/src/gmt_sharedlibs.c b/src/gmt_sharedlibs.c
index 2678ece..f4b5b86 100644
--- a/src/gmt_sharedlibs.c
+++ b/src/gmt_sharedlibs.c
@@ -1,6 +1,6 @@
-/* $Id: gmt_sharedlibs.c 17004 2016-08-24 18:04:44Z jluis $
+/* $Id: gmt_sharedlibs.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2012-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 2012-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*/
@@ -44,7 +44,7 @@ void *dlsym (void *handle, const char *name) {
}
char *dlerror (void) {
- /* Reports last error occured */
+ /* Reports last error occurred */
int len, error_code;
static char errstr[GMT_LEN128];
diff --git a/src/gmt_sharedlibs.h b/src/gmt_sharedlibs.h
index 8c16774..3f79608 100644
--- a/src/gmt_sharedlibs.h
+++ b/src/gmt_sharedlibs.h
@@ -1,6 +1,6 @@
-/* $Id: gmt_sharedlibs.h 16871 2016-07-27 20:48:42Z pwessel $
+/* $Id: gmt_sharedlibs.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2012-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 2012-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*/
diff --git a/src/gmt_shell_functions.sh b/src/gmt_shell_functions.sh
index 6835d90..b179897 100755
--- a/src/gmt_shell_functions.sh
+++ b/src/gmt_shell_functions.sh
@@ -1,9 +1,9 @@
#!/bin/bash
-# $Id: gmt_shell_functions.sh 15178 2015-11-06 10:45:03Z fwobbe $
+# $Id: gmt_shell_functions.sh 17326 2016-11-08 20:28:56Z pwessel $
#
# These functions can be used from any sh/bash script by specifying
# . gmt_shell_functions.sh
-# in your script. Placing it in .bashrc makes the functions avaiable
+# in your script. Placing it in .bashrc makes the functions available
# on the command line as well. See documentation for usage.
#
#----GMT SHELL FUNCTIONS--------------------
diff --git a/src/gmt_shore.c b/src/gmt_shore.c
index 52390f8..0a4c433 100644
--- a/src/gmt_shore.c
+++ b/src/gmt_shore.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_shore.c 16849 2016-07-22 18:45:29Z pwessel $
+ * $Id: gmt_shore.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -114,7 +114,7 @@ GMT_LOCAL int shore_get_position (int side, short int x, short int y) {
GMT_LOCAL int shore_get_next_entry (struct GMT_SHORE *c, int dir, int side, int id) {
/* Finds the next entry point on the given side that is further away
* in the <dir> direction than previous point. It then removes the info
- * regarding the new entry from the GSHHS_SIDE structure so it wont be
+ * regarding the new entry from the GSHHS_SIDE structure so it won't be
* used twice. Because we have added the 4 corners with pos = 65535 we
* know that if there are no segments on a side the procedure will find
* the corner as the last item, always. This is for CCW; when dir = -1
@@ -198,7 +198,7 @@ GMT_LOCAL void shore_path_shift2 (double *lon, unsigned int n, double west, doub
}
GMT_LOCAL void shore_prepare_sides (struct GMT_CTRL *GMT, struct GMT_SHORE *c, int dir) {
- /* Initializes the GSHHS_SIDE stuctures for each side, then adds corners and all entering segments */
+ /* Initializes the GSHHS_SIDE structures for each side, then adds corners and all entering segments */
int s, i, n[4];
/* Set corner coordinates */
@@ -230,7 +230,7 @@ GMT_LOCAL void shore_prepare_sides (struct GMT_CTRL *GMT, struct GMT_SHORE *c, i
n[i]++;
}
- /* We then sort the array of GSHHS_SIDE stucts on their distance from the start of the side */
+ /* We then sort the array of GSHHS_SIDE structs on their distance from the start of the side */
for (i = 0; i < 4; i++) { /* sort on position */
if (dir == 1)
qsort (c->side[i], (size_t)c->nside[i], sizeof (struct GSHHS_SIDE), shore_asc_sort);
@@ -787,7 +787,7 @@ int gmt_get_shore_bin (struct GMT_CTRL *GMT, unsigned int b, struct GMT_SHORE *c
if (c->two_Antarcticas) { /* Can apply any -A+ag|i check based on Antarctica source. Note if -A+as was used we may have already skipped this bin but it depends on resolution chosen */
if (seg_info_ANT[i]) level = ANT_LEVEL_ICE; /* Replace the 1 with 5 so Ant polygons now have levels 5 (ice) or 6 (ground) */
if (level == ANT_LEVEL_ICE || level == ANT_LEVEL_GROUND) { /* Need more specific checking */
- if (c->ant_mode == GSHHS_ANTARCTICA_SKIP) continue; /* Dont want anything to do with Antarctica */
+ if (c->ant_mode == GSHHS_ANTARCTICA_SKIP) continue; /* Don't want anything to do with Antarctica */
else if (level == ANT_LEVEL_GROUND && c->ant_mode == GSHHS_ANTARCTICA_ICE) continue; /* Don't use the Grounding line */
else if (level == ANT_LEVEL_ICE && c->ant_mode == GSHHS_ANTARCTICA_GROUND && seg_ID[i] == GSHHS_ANTARCTICA_ICE_ID) continue; /* Use grounding line so skip ice-shelf Antractica continent */
level = 1; /* Reset either shelf-ice or grounding line polygon level to land */
@@ -1347,7 +1347,7 @@ struct GMT_DATASET * gmt_get_gshhg_lines (struct GMT_CTRL *GMT, double wesn[], c
D->n_segments += D->table[tbl]->n_segments; /* Sum up total number of segments across the data set */
D->n_records += D->table[tbl]->n_records; /* Sum up total number of records across the data set */
GMT->current.io.col_type[GMT_IN][GMT_X] = GMT_IS_FLOAT; /* Avoid longitude adjustments: longitudes are guaranteed to be correct; rounding errors only messes things up */
- gmt_set_tbl_minmax (GMT, D->table[tbl++]); /* Determine min/max extent for all segments and the table */
+ gmt_set_tbl_minmax (GMT, GMT_IS_LINE, D->table[tbl++]); /* Determine min/max extent for all segments and the table */
GMT->current.io.col_type[GMT_IN][GMT_X] = GMT_IS_LON; /* Reset X column to be longitudes */
}
gmt_free_shore (GMT, &c); /* Done with this GSHHS bin */
diff --git a/src/gmt_shore.h b/src/gmt_shore.h
index 26de363..f984e44 100644
--- a/src/gmt_shore.h
+++ b/src/gmt_shore.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_shore.h 15810 2016-03-05 00:33:55Z pwessel $
+ * $Id: gmt_shore.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_sph.c b/src/gmt_sph.c
index 7d74d98..f373e5f 100644
--- a/src/gmt_sph.c
+++ b/src/gmt_sph.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_sph.c 16951 2016-08-19 05:18:40Z pwessel $
+ * $Id: gmt_sph.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2008-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 2008-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -64,7 +64,7 @@ int gmt_stripack_lists (struct GMT_CTRL *GMT, uint64_t n_in, double *x, double *
* lend, points to the "first" vertex in the Voronoi polygon around a particular node.
* lptr: given a vertex, returns the next vertex in the Voronoi polygon.
*
- * NOTE: All indeces returned are C (0->) adjusted from FORTRAN (1->).
+ * NOTE: All indices returned are C (0->) adjusted from FORTRAN (1->).
*/
uint64_t kk;
@@ -165,7 +165,7 @@ int gmt_stripack_lists (struct GMT_CTRL *GMT, uint64_t n_in, double *x, double *
GMT_exit (GMT, GMT_RUNTIME_ERROR); return GMT_RUNTIME_ERROR;
}
- /* Adjust Fortran to GMT indeces */
+ /* Adjust Fortran to GMT indices */
n_alloc = 6 * (n - 2);
for (kk = 0; kk < n_alloc; kk++) T->V.listc[kk]--;
for (kk = 0; kk < n_alloc; kk++) T->V.lptr[kk]--;
@@ -176,7 +176,7 @@ int gmt_stripack_lists (struct GMT_CTRL *GMT, uint64_t n_in, double *x, double *
gmt_M_free (GMT, lptr);
}
- /* Adjust Fortran to GMT indeces */
+ /* Adjust Fortran to GMT indices */
for (kk = 0; kk < TRI_NROW*T->D.n; kk++) T->D.tri[kk]--;
gmt_M_free (GMT, list);
diff --git a/src/gmt_sph.h b/src/gmt_sph.h
index 14cf144..d83c347 100644
--- a/src/gmt_sph.h
+++ b/src/gmt_sph.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_sph.h 15787 2016-02-27 22:17:33Z pwessel $
+ * $Id: gmt_sph.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2008-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 2008-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_stat.c b/src/gmt_stat.c
index a1242fa..634724d 100644
--- a/src/gmt_stat.c
+++ b/src/gmt_stat.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_stat.c 16783 2016-07-12 02:23:25Z pwessel $
+ * $Id: gmt_stat.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -292,7 +292,7 @@ GMT_LOCAL int gmtstat_inc_beta (struct GMT_CTRL *GMT, double a, double b, double
/* Here there is disagreement on the range of x which
converges efficiently. Abramowitz and Stegun
say to use x < (a - 1) / (a + b - 2). Editions
- of Numerical Recipes thru mid 1987 say
+ of Numerical Recipes through mid 1987 say
x < ( (a + 1) / (a + b + 1), but the code has
x < ( (a + 1) / (a + b + 2). Editions printed
late 1987 and after say x < ( (a + 1) / (a + b + 2)
@@ -2047,7 +2047,7 @@ double gmt_extreme (struct GMT_CTRL *GMT, double x[], uint64_t n, double x_defau
* kind: -1 means only consider negative values.
* kind: 0 means consider all values.
* kind: +1 means only consider positive values.
- * way: -1 means look for mimimum.
+ * way: -1 means look for minimum.
* way: +1 means look for maximum.
* If kind is non-zero we assign x_default is no values are found.
* If kind == 0 we expect x_default to be set so that x[0] will reset x_select.
diff --git a/src/gmt_supplements_module.c b/src/gmt_supplements_module.c
index b9b5c74..96db702 100644
--- a/src/gmt_supplements_module.c
+++ b/src/gmt_supplements_module.c
@@ -1,6 +1,6 @@
-/* $Id: gmt_supplements_module.c 17074 2016-09-05 01:21:49Z jluis $
+/* $Id: gmt_supplements_module.c 17580 2017-02-23 06:35:24Z pwessel $
*
- * Copyright (c) 2012-2016
+ * Copyright (c) 2012-2017
* by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*/
@@ -47,10 +47,10 @@ static struct Gmt_moduleinfo g_supplements_module[] = {
{"pscoupe", "meca", "Plot cross-sections of focal mechanisms", "<T{,>X}"},
{"psmeca", "meca", "Plot focal mechanisms on maps", "<T{,>X}"},
{"pspolar", "meca", "Plot polarities on the inferior focal half-sphere on maps", "<T{,>X}"},
- {"pssac", "meca", "Plot seismograms in SAC format on maps", "<DI,CCi,T-i,>XO,RG-"},
+ {"pssac", "meca", "Plot seismograms in SAC format on maps", ">XO,RG-"},
{"psvelo", "meca", "Plot velocity vectors, crosses, and wedges on maps", "<T{,>X}"},
{"mgd77convert", "mgd77", "Convert MGD77 data to other file formats", ""},
- {"mgd77info", "mgd77", "Extract information about MGD77 files", ">T}"},
+ {"mgd77info", "mgd77", "Extract information about MGD77 files", ""},
{"mgd77list", "mgd77", "Extract data from MGD77 files", ">?}"},
{"mgd77magref", "mgd77", "Evaluate the IGRF or CM4 magnetic field models", "<D{,>D}"},
{"mgd77manage", "mgd77", "Manage the content of MGD77+ files", ""},
@@ -67,7 +67,7 @@ static struct Gmt_moduleinfo g_supplements_module[] = {
{"grdredpol", "potential", "Compute the Continuous Reduction To the Pole, AKA differential RTP", "<G{,EG(,GG},ZG)"},
{"grdseamount", "potential", "Compute synthetic seamount (Gaussian, parabolic, cone or disc, circular or elliptical) bathymetry", "<T{,GG},MT),TD("},
{"talwani2d", "potential", "Compute geopotential anomalies over 2-D bodies by the method of Talwani", "<D{,ND(,>D}"},
- {"talwani3d", "potential", "Compute geopotential anomalies over 3-D bodies by the method of Talwani", "<D{,ND(,ZG(,GG),G-<,>D}"},
+ {"talwani3d", "potential", "Compute geopotential anomalies over 3-D bodies by the method of Talwani", "<D{,ND(,ZG(,G?},GDN"},
{"pssegyz", "segy", "Plot a SEGY file on a map in 3-D", ">X}"},
{"pssegy", "segy", "Plot a SEGY file on a map", ">X}"},
{"segy2grd", "segy", "Converting SEGY data to a GMT grid", "GG}"},
diff --git a/src/gmt_supplements_module.h b/src/gmt_supplements_module.h
index ef04f40..4fce5db 100644
--- a/src/gmt_supplements_module.h
+++ b/src/gmt_supplements_module.h
@@ -1,6 +1,6 @@
/* $Id$
*
- * Copyright (c) 2012-2016
+ * Copyright (c) 2012-2017
* by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*/
diff --git a/src/gmt_support.c b/src/gmt_support.c
index bf5d761..0e89b0a 100644
--- a/src/gmt_support.c
+++ b/src/gmt_support.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_support.c 17217 2016-10-18 22:48:09Z pwessel $
+ * $Id: gmt_support.c 17571 2017-02-22 17:37:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -1508,7 +1508,7 @@ GMT_LOCAL void support_contlabel_fixpath (struct GMT_CTRL *GMT, double **xin, do
if (G->n_label == 0) return; /* No labels, no need to insert points */
- /* Sort lables based on distance along contour if more than 1 */
+ /* Sort labels based on distance along contour if more than 1 */
if (G->n_label > 1) qsort (G->L, G->n_label, sizeof (struct GMT_LABEL *), support_sort_label_struct);
np = *n + G->n_label; /* Length of extended path that includes inserted label coordinates */
@@ -1922,9 +1922,9 @@ GMT_LOCAL uint64_t support_smooth_contour (struct GMT_CTRL *GMT, double **x_in,
j = i + 1;
while (j < n_out && !flag[j]) j++;
x0 = x_tmp[i]; x1 = x_tmp[j];
- if (x0 > x1) double_swap (x0, x1);
+ if (x0 > x1) gmt_M_double_swap (x0, x1);
y0 = y_tmp[i]; y1 = y_tmp[j];
- if (y0 > y1) double_swap (y0, y1);
+ if (y0 > y1) gmt_M_double_swap (y0, y1);
for (k = i + 1; k < j; k++) {
if (x_tmp[k] < x0)
x_tmp[k] = x0 + 1.0e-10;
@@ -2051,8 +2051,8 @@ GMT_LOCAL void support_orient_contour (struct GMT_GRID *G, double *x, double *y,
if (reverse) { /* Must reverse order of contour */
for (i = 0, j = n-1; i < n/2; i++, j--) {
- double_swap (x[i], x[j]);
- double_swap (y[i], y[j]);
+ gmt_M_double_swap (x[i], x[j]);
+ gmt_M_double_swap (y[i], y[j]);
}
}
}
@@ -2065,7 +2065,7 @@ GMT_LOCAL bool support_label_is_OK (struct GMT_CTRL *GMT, struct GMT_LABEL *L, c
char format[GMT_LEN256] = {""};
struct GMT_CONTOUR_LINE *S = NULL;
- if (G->isolate) { /* Must determine if the proposed label is withing radius distance of any other label already accepted */
+ if (G->isolate) { /* Must determine if the proposed label is within radius distance of any other label already accepted */
for (seg = 0; seg < G->n_segments; seg++) { /* Previously processed labels */
S = G->segment[seg]; /* Pointer to current segment */
for (k = 0; k < S->n_labels; k++) if (hypot (L->x - S->L[k].x, L->y - S->L[k].y) < G->label_isolation) return (false);
@@ -2185,7 +2185,7 @@ GMT_LOCAL void support_hold_contour_sub (struct GMT_CTRL *GMT, double **xxx, dou
value_dist = gmt_M_memory (GMT, NULL, nn, double); /* May be km ,degrees or whatever */
radii = gmt_M_memory (GMT, NULL, nn, double); /* Radius of curvature, in inches */
- /* We will calculate the radii of curvature at all points. By default we dont care and
+ /* We will calculate the radii of curvature at all points. By default we don't care and
* will place labels at whatever distance we end up with. However, if the user has asked
* for a minimum limit on the radius of curvature [Default 0] we do not want to place labels
* at those sections where the curvature is large. Since labels are placed according to
@@ -2687,7 +2687,7 @@ GMT_LOCAL int support_inonout_sphpol_count (double plon, double plat, const stru
* 3) lon lies between lon1 and lon2 and crosses the segment
* 4) none of the above
* Since we want to obtain either ONE or ZERO intersections per segment we will skip to next
- * point if case (2) occurs: this avoids counting a crossing twice for consequtive segments.
+ * point if case (2) occurs: this avoids counting a crossing twice for consecutive segments.
*/
if (gmt_same_longitude (plon, P->data[GMT_X][i]) && GMT_SAME_LATITUDE (plat, P->data[GMT_Y][i])) return (1); /* Point is on the perimeter */
in = i + 1; /* Next point index */
@@ -3313,7 +3313,11 @@ GMT_LOCAL int support_getscale_old (struct GMT_CTRL *GMT, char option, char *tex
snprintf (string, GMT_LEN256, "x%s/%s", txt_a, txt_b);
else /* Set up ancher in geographical coordinates */
snprintf (string, GMT_LEN256, "g%s/%s", txt_a, txt_b);
- if ((ms->refpoint = gmt_get_refpoint (GMT, string)) == NULL) return (1); /* Failed basic parsing */
+ if ((ms->refpoint = gmt_get_refpoint (GMT, text)) == NULL) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error: Scale reference point was not accepted\n");
+ gmt_refpoint_syntax (GMT, "L", NULL, GMT_ANCHOR_MAPSCALE, 3);
+ return (1); /* Failed basic parsing */
+ }
error += gmt_verify_expectations (GMT, GMT_IS_LAT, gmt_scanf (GMT, txt_sy, GMT_IS_LAT, &ms->origin[GMT_Y]), txt_sy);
if (fabs (ms->origin[GMT_Y]) > 90.0) {
@@ -3457,7 +3461,7 @@ GMT_LOCAL int support_getrose_old (struct GMT_CTRL *GMT, char option, char *text
error++;
}
if (k == 3) ms->a_int[0] = ms->a_int[1], ms->f_int[0] = ms->f_int[1], ms->g_int[0] = ms->g_int[1];
- text[plus-1] = '\0'; /* Break string so sscanf wont get confused later */
+ text[plus-1] = '\0'; /* Break string so sscanf won't get confused later */
}
if (colon > 0) { /* Get labels in string :w,e,s,n: */
for (k = colon; text[k] && text[k] != ':'; k++); /* Look for terminating colon */
@@ -3482,7 +3486,7 @@ GMT_LOCAL int support_getrose_old (struct GMT_CTRL *GMT, char option, char *text
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Labels must be given in format :w,e,s,n:\n", option);
error++;
}
- text[colon-1] = '\0'; /* Break string so sscanf wont get confused later */
+ text[colon-1] = '\0'; /* Break string so sscanf won't get confused later */
}
/* -?[f][x]<x0>/<y0>/<size>[/<kind>][:label:] OR -L[m][x]<x0>/<y0>/<size>[/<dec>/<declabel>][:label:][+gint[/mint]] */
@@ -3518,7 +3522,11 @@ GMT_LOCAL int support_getrose_old (struct GMT_CTRL *GMT, char option, char *text
snprintf (string, GMT_LEN256, "x%s/%s", txt_a, txt_b);
else /* Set up ancher in geographical coordinates */
snprintf (string, GMT_LEN256, "g%s/%s", txt_a, txt_b);
- if ((ms->refpoint = gmt_get_refpoint (GMT, string)) == NULL) return (1); /* Failed basic parsing */
+ if ((ms->refpoint = gmt_get_refpoint (GMT, text)) == NULL) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error: Map rose reference point was not accepted\n");
+ gmt_refpoint_syntax (GMT, "Td|m", NULL, GMT_ANCHOR_MAPROSE, 3);
+ return (1); /* Failed basic parsing */
+ }
ms->justify = PSL_MC; /* Center it is */
ms->size = gmt_M_to_inch (GMT, txt_c);
if (ms->size <= 0.0) {
@@ -3574,9 +3582,9 @@ GMT_LOCAL bool support_x_overlap (double *xa, double *xb, uint64_t *xa_start, ui
if (geo) { /* More complicated, and may change both the start/stop indices and the array longitudes */
int k;
double dx = xa[*xa_stop] - xa[*xa_start];
- if (dx > 180.0) {xa[*xa_start] += 360.0; uint64_swap(*xa_start, *xa_stop);} /* Deal with 360 and swap start and stop indices */
+ if (dx > 180.0) {xa[*xa_start] += 360.0; gmt_M_uint64_swap(*xa_start, *xa_stop);} /* Deal with 360 and swap start and stop indices */
dx = xb[*xb_stop] - xb[*xb_start];
- if (dx > 180.0) {xb[*xb_start] += 360.0; uint64_swap(*xb_start, *xb_stop);} /* Deal with 360 and swap start and stop indices */
+ if (dx > 180.0) {xb[*xb_start] += 360.0; gmt_M_uint64_swap(*xb_start, *xb_stop);} /* Deal with 360 and swap start and stop indices */
/* Here we have fixed a 360 jump and reassign what is start and stop. We must now look for overlaps
* by considering the segments may be off by -360, 0, or +360 degrees in longitude */
@@ -3624,10 +3632,10 @@ GMT_LOCAL int support_polar_adjust (struct GMT_CTRL *GMT, int side, double angle
top = 10;
bottom = 2;
}
- if (GMT->current.proj.projection == GMT_POLAR && GMT->current.proj.got_azimuths) int_swap (left, right); /* Because with azimuths we get confused... */
+ if (GMT->current.proj.projection == GMT_POLAR && GMT->current.proj.got_azimuths) gmt_M_int_swap (left, right); /* Because with azimuths we get confused... */
if (GMT->current.proj.projection == GMT_POLAR && GMT->current.proj.got_elevations) {
- int_swap (top, bottom); /* Because with elevations we get confused... */
- int_swap (left, right);
+ gmt_M_int_swap (top, bottom); /* Because with elevations we get confused... */
+ gmt_M_int_swap (left, right);
low = 2 - low;
}
if (side%2) { /* W and E border */
@@ -3820,7 +3828,7 @@ GMT_LOCAL int support_init_custom_symbol (struct GMT_CTRL *GMT, char *in_name, s
head->PS_BB[0] = atof (c1); head->PS_BB[2] = atof (c2);
head->PS_BB[1] = atof (c3); head->PS_BB[3] = atof (c4);
got_BB[bb] = true;
- if (bb == 0) got_BB[1] = true; /* If we find Highres BB then we dont need to look for lowres BB */
+ if (bb == 0) got_BB[1] = true; /* If we find Highres BB then we don't need to look for lowres BB */
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "Custom EPS symbol %s has width %g and height %g inches [%s]\n",
name, (head->PS_BB[1] - head->PS_BB[0]) / 72, (head->PS_BB[3] - head->PS_BB[2]) / 72, &BB_string[bb][2]);
}
@@ -5423,7 +5431,7 @@ void gmtlib_enforce_rgb_triplets (struct GMT_CTRL *GMT, char *text, unsigned int
while ((p = strstr (text, "@;"))) { /* Found a @; sequence */
i = (unsigned int)(p - text) + 2; /* Position of first character after @; */
for (j = last; j < i; j++, k++) buffer[k] = text[j]; /* Copy everything from last stop up to the color specification */
- text[i-1] = 'X'; /* Wipe the ; so that @; wont be found a 2nd time */
+ text[i-1] = 'X'; /* Wipe the ; so that @; won't be found a 2nd time */
if (text[i] != ';') { /* Color info now follows */
n = i;
n_slash = 0;
@@ -6723,9 +6731,10 @@ struct GMT_PALETTE *gmt_get_cpt (struct GMT_CTRL *GMT, char *file, enum GMT_enum
a CPT for quick/dirty work provided mode == GMT_CPT_OPTIONAL and hence zmin/zmax are set to the desired data range */
struct GMT_PALETTE *P = NULL;
+ unsigned int continuous = (file && strchr(file,','));
if (mode == GMT_CPT_REQUIRED) { /* The calling function requires the CPT to be present; GMT_Read_Data will work or fail accordingly */
- P = GMT_Read_Data (GMT->parent, GMT_IS_PALETTE, GMT_IS_FILE, GMT_IS_NONE, GMT_READ_NORMAL, NULL, file, NULL);
+ P = GMT_Read_Data (GMT->parent, GMT_IS_PALETTE, GMT_IS_FILE, GMT_IS_NONE, GMT_READ_NORMAL|continuous, NULL, file, NULL);
return (P);
}
@@ -6740,7 +6749,7 @@ struct GMT_PALETTE *gmt_get_cpt (struct GMT_CTRL *GMT, char *file, enum GMT_enum
if (gmt_M_file_is_memory (file) || (file && file[0] && !access (file, R_OK))) { /* A CPT was given and exists or is memory location */
P = GMT_Read_Data (GMT->parent, GMT_IS_PALETTE, GMT_IS_FILE, GMT_IS_NONE, GMT_READ_NORMAL, NULL, file, NULL);
}
- else { /* Take master cpt and stretch to fit data range */
+ else { /* Take master cpt and stretch to fit data range using continuous colors */
char *master = NULL;
double noise;
@@ -6753,7 +6762,7 @@ struct GMT_PALETTE *gmt_get_cpt (struct GMT_CTRL *GMT, char *file, enum GMT_enum
return (NULL);
}
master = (file && file[0]) ? file : "rainbow"; /* Set master CPT prefix */
- P = GMT_Read_Data (GMT->parent, GMT_IS_PALETTE, GMT_IS_FILE, GMT_IS_NONE, GMT_READ_NORMAL, NULL, master, NULL);
+ P = GMT_Read_Data (GMT->parent, GMT_IS_PALETTE, GMT_IS_FILE, GMT_IS_NONE, GMT_READ_NORMAL|GMT_CPT_CONTINUOUS, NULL, master, NULL);
if (!P) return (P); /* Error reading file. Return right away to avoid a segv in next line */
if (P->has_range) /* Only stretch CPTs that have no default range*/
zmin = zmax = 0.0;
@@ -6762,7 +6771,7 @@ struct GMT_PALETTE *gmt_get_cpt (struct GMT_CTRL *GMT, char *file, enum GMT_enum
noise = (zmax - zmin) * GMT_CONV8_LIMIT;
zmin -= noise; zmax += noise;
}
- gmt_stretch_cpt (GMT, P, zmin, zmax, 1);
+ gmt_stretch_cpt (GMT, P, zmin, zmax);
}
return (P);
}
@@ -6784,23 +6793,33 @@ void gmt_cpt_transparency (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double t
}
/*! . */
-void gmt_stretch_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double z_low, double z_high, unsigned int continuous) {
+unsigned int gmt_parse_inv_cpt (struct GMT_CTRL *GMT, char *arg) {
+ unsigned int mode = 0;
+ /* Sets the mode for the -I option in makecpt and grd2cpt */
+ if (!arg || arg[0] == 0) /* Default is -Ic */
+ mode |= GMT_CPT_C_REVERSE;
+ else { /* Got argument(s). Only combinations c, z, cz, or zc allowed */
+ size_t k;
+ for (k = 0; k < strlen (arg); k++) {
+ switch (arg[k]) {
+ case 'c': mode |= GMT_CPT_C_REVERSE; break; /* Invert c-range */
+ case 'z': mode |= GMT_CPT_Z_REVERSE; break; /* Invert z-range */
+ default:
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "gmt_parse_inv_cpt: Unrecognized mode %c passed!\n", arg[k]);
+ return UINT_MAX;
+ break;
+ }
+ }
+ }
+ return (mode);
+}
+
+/*! . */
+void gmt_stretch_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double z_low, double z_high) {
/* Replace CPT z-values with new ones linearly scaled from z_low to z_high. If these are
* zero then we substitute the CPT's default range instead. */
- unsigned int i, k;
int is, ks = 0;
double z_min, z_start, scale;
- bool set_z_only = (P->mode & GMT_CPT_TEMPORARY); /* No interpolation needed, just set the new z-values */
- if (continuous && set_z_only) { /* Must switch from discrete to continuous cpt */
- for (i = 1; i < P->n_colors; i++) {
- for (k = 0; k < 4; k++) P->data[i-1].rgb_high[k] = P->data[i].rgb_low[k];
- }
- P->n_colors--; /* We loose one slice going to continuous */
- P->is_continuous = 1;
- P->mode -= GMT_CPT_TEMPORARY; /* Served its purpose */
- if (P->cpt_flags & GMT_CPT_TEMPORARY) P->cpt_flags -= GMT_CPT_TEMPORARY;
- gmtlib_init_cpt (GMT, P); /* Recalculate delta rgb's */
- }
if (z_low == z_high) { /* Range information not given, rely on CPT RANGE setting */
if (P->has_range == 0) {
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "gmt_stretch_cpt: Passed z_low == z_high but CPT has no explicit range. No changes made\n");
@@ -6829,23 +6848,51 @@ void gmt_stretch_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double z_low,
}
}
+/*! . */
+GMT_LOCAL int support_lutsort (const void *p1, const void *p2) {
+ /* Sorts color LUT into ASCENDING order! */
+ if (((struct GMT_LUT *)p1)->z_low < ((struct GMT_LUT *)p2)->z_low) return (-1);
+ if (((struct GMT_LUT *)p1)->z_low > ((struct GMT_LUT *)p2)->z_low) return(+1);
+ return (0); /* Should never happen */
+}
+
+GMT_LOCAL void gmt_M_LUT_swap (struct GMT_LUT *slice) {
+ /* Exchanges the low and high color values for one slice */
+ unsigned int k;
+ for (k = 0; k < 4; k++) {
+ gmt_M_double_swap (slice->rgb_low[k], slice->rgb_high[k]);
+ gmt_M_double_swap (slice->hsv_low[k], slice->hsv_high[k]);
+ slice->rgb_diff[k] = -slice->rgb_diff[k];
+ slice->hsv_diff[k] = -slice->hsv_diff[k];
+ }
+}
+
+/*! . */
void gmt_scale_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P, double scale) {
/* Scale all z-related variables in the CPT by scale */
unsigned int i;
+ bool flip = (scale < 0.0); /* More work to do if a negative scale is given */
gmt_M_unused(GMT);
for (i = 0; i < P->n_colors; i++) {
P->data[i].z_low *= scale;
P->data[i].z_high *= scale;
- P->data[i].i_dz /= scale;
+ P->data[i].i_dz /= fabs (scale);
+ if (flip) {
+ gmt_M_double_swap (P->data[i].z_low, P->data[i].z_high);
+ gmt_M_LUT_swap (&(P->data[i]));
+ }
}
if (P->has_hinge) P->hinge *= scale;
- if (P->has_range) {
+ if (P->has_range) { /* Update the range min/max */
P->minmax[0] *= scale;
P->minmax[1] *= scale;
+ if (flip) gmt_M_double_swap (P->minmax[0], P->minmax[1]);
}
+ if (flip) /* Must also reverse the order of slices */
+ qsort (P->data, P->n_colors, sizeof (struct GMT_LUT), support_lutsort);
}
-#define Fill_swap(x, y) {struct GMT_FILL *F_tmp; F_tmp = x, x = y, y = F_tmp;}
+#define gmt_M_fill_swap(x, y) {struct GMT_FILL *F_tmp; F_tmp = x, x = y, y = F_tmp;}
/*! . */
void gmt_invert_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P) {
unsigned int i, j, k;
@@ -6853,10 +6900,10 @@ void gmt_invert_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P) {
/* Reverse the order of the colors, leaving the z arrangement intact */
for (i = 0, j = P->n_colors-1; i < P->n_colors; i++, j--) {
for (k = 0; k < 4; k++) {
- double_swap (P->data[i].rgb_low[k], P->data[j].rgb_high[k]);
- double_swap (P->data[i].hsv_low[k], P->data[j].hsv_high[k]);
+ gmt_M_double_swap (P->data[i].rgb_low[k], P->data[j].rgb_high[k]);
+ gmt_M_double_swap (P->data[i].hsv_low[k], P->data[j].hsv_high[k]);
}
- if (i < j) Fill_swap (P->data[i].fill, P->data[j].fill);
+ if (i < j) gmt_M_fill_swap (P->data[i].fill, P->data[j].fill);
}
for (i = 0; i < P->n_colors; i++) { /* Update the difference arrrays */
@@ -6867,10 +6914,10 @@ void gmt_invert_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P) {
}
/* Swap the B&F settings */
for (k = 0; k < 4; k++) {
- double_swap (P->bfn[GMT_BGD].rgb[k], P->bfn[GMT_FGD].rgb[k]);
- double_swap (P->bfn[GMT_BGD].hsv[k], P->bfn[GMT_FGD].hsv[k]);
+ gmt_M_double_swap (P->bfn[GMT_BGD].rgb[k], P->bfn[GMT_FGD].rgb[k]);
+ gmt_M_double_swap (P->bfn[GMT_BGD].hsv[k], P->bfn[GMT_FGD].hsv[k]);
}
- Fill_swap (P->bfn[GMT_BGD].fill, P->bfn[GMT_FGD].fill);
+ gmt_M_fill_swap (P->bfn[GMT_BGD].fill, P->bfn[GMT_FGD].fill);
}
/*! . */
@@ -6891,18 +6938,6 @@ struct GMT_PALETTE *gmt_sample_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *Pi
struct GMT_LUT *lut = NULL;
struct GMT_PALETTE *P = NULL;
- set_z_only = (Pin->mode & GMT_CPT_TEMPORARY); /* No interpolation needed, just set the new z-values */
- if (continuous && set_z_only) { /* Must switch from discrete to continuous cpt */
- for (i = 1; i < Pin->n_colors; i++) {
- for (k = 0; k < 4; k++) Pin->data[i-1].rgb_high[k] = Pin->data[i].rgb_low[k];
- }
- Pin->n_colors--; /* We loose one slice going to continuous */
- Pin->is_continuous = 1;
- Pin->mode -= GMT_CPT_TEMPORARY; /* Served its purpose */
- if (Pin->cpt_flags & GMT_CPT_TEMPORARY) Pin->cpt_flags -= GMT_CPT_TEMPORARY;
- gmtlib_init_cpt (GMT, Pin); /* Recalculate delta rgb's */
- }
-
i += gmt_M_check_condition (GMT, !Pin->is_continuous && continuous, "Warning: Making a continuous cpt from a discrete cpt may give unexpected results!\n");
if (nz_in < 0) { /* Called from grd2cpt which wants equal area colors */
@@ -7293,6 +7328,30 @@ struct GMT_PALETTE * gmt_truncate_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE
if (gmt_M_is_dnan (z_low) && gmt_M_is_dnan (z_high)) return (P); /* No change */
+ /* If this CPT has a natural range then its z-values are either 0 to 1 or -1 to +1. We must first
+ * expand it to its natural z-range before we can truncate since z_low/z_high are in user units */
+
+ if (P->has_range) {
+ gmt_stretch_cpt (GMT, P, 0.0, 0.0); /* Stretch to its natural range first */
+ P->has_range = 0;
+ }
+
+ if ((!gmt_M_is_dnan (z_low) && z_low > P->data[last].z_high) || (!gmt_M_is_dnan (z_high) && z_high < P->data[0].z_low)) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "gmt_truncate_cpt error: z_low/z_high [%g/%g] is completely outside range of this CPT [%g/%g]!\n",
+ z_low, z_high, P->data[0].z_low, P->data[last].z_high);
+ return NULL;
+ }
+ if (!gmt_M_is_dnan (z_low) && z_low < P->data[0].z_low) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "gmt_truncate_cpt error: z_low = %g less than lowest z (%g)\n",
+ z_low, P->data[0].z_low, P->data[0].z_low);
+ return NULL;
+ }
+ if (!gmt_M_is_dnan (z_high) && z_high > P->data[last].z_high) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "gmt_truncate_cpt: z_high = %g larger than highest z (%g)\n",
+ z_high, P->data[last].z_high, P->data[last].z_high);
+ return NULL;
+ }
+ /* OK, here we can sanely do things */
if (!gmt_M_is_dnan (z_low)) { /* Find first slice fully or partially within range */
while (first < P->n_colors && P->data[first].z_high <= z_low) first++;
if (z_low > P->data[first].z_low) /* Must truncate this slice */
@@ -7710,7 +7769,7 @@ void gmtlib_inplace_transpose (float *A, unsigned int n_rows, unsigned int n_col
t = A[i];
do {
next = (i * n_rows) % size;
- float_swap (A[next], t);
+ gmt_M_float_swap (A[next], t);
support_set_bit (mark, i, bits);
i = next;
}
@@ -7960,6 +8019,7 @@ int gmt_contlabel_specs (struct GMT_CTRL *GMT, char *txt, struct GMT_CONTOUR *G)
case '7':
case '8':
case '9':
+ case '-': /* Assume it can be a negative contour */
break;
default:
@@ -8290,7 +8350,7 @@ struct GMT_DATASET *gmt_make_profiles (struct GMT_CTRL *GMT, char option, char *
enum GMT_profmode p_mode;
uint64_t dim[4] = {1, 1, 0, 0};
int n, error = 0;
- double L, az = 0.0, length = 0.0, r = 0.0;
+ double L, az = 0.0, length = 0.0, r = 0.0, orig_step = step;
size_t n_alloc = GMT_SMALL_CHUNK, len;
char p[GMT_BUFSIZ] = {""}, txt_a[GMT_LEN256] = {""}, txt_b[GMT_LEN256] = {""}, txt_c[GMT_LEN256] = {""}, txt_d[GMT_LEN256] = {""};
char modifiers[GMT_BUFSIZ] = {""}, p2[GMT_BUFSIZ] = {""};
@@ -8323,7 +8383,10 @@ struct GMT_DATASET *gmt_make_profiles (struct GMT_CTRL *GMT, char option, char *
case 'd': /* Already processed up front to set n_cols*/ break;
case 'n': np = atoi (&p2[1]); p_mode |= GMT_GOT_NP; break;
case 'o': az = atof (&p2[1]); p_mode |= GMT_GOT_ORIENT; break;
- case 'i': step = fabs (atof (&p2[1])); p_mode |= GMT_GOT_INC; break;
+ case 'i': step = fabs (atof (&p2[1]));
+ if (step > 2.0*orig_step)
+ GMT_Report (GMT->parent, GMT_MSG_VERBOSE, "Warning: Output sampling interval in d exceeds grid interval and may lead to aliasing.\n");
+ p_mode |= GMT_GOT_INC; break;
case 'l': length = fabs (atof (&p2[1])); p_mode |= GMT_GOT_LENGTH; break;
case 'r': r = fabs (atof (&p2[1])); p_mode |= GMT_GOT_RADIUS; break;
default: error++; break;
@@ -8557,7 +8620,7 @@ int gmt_decorate_prep (struct GMT_CTRL *GMT, struct GMT_DECORATE *G, double xyz[
}
/* Got here if data are OK */
- if (GMT->current.setting.io_lonlat_toggle[GMT_IN]) double_swap (xy[GMT_X], xy[GMT_Y]); /* Got lat/lon instead of lon/lat */
+ if (GMT->current.setting.io_lonlat_toggle[GMT_IN]) gmt_M_double_swap (xy[GMT_X], xy[GMT_Y]); /* Got lat/lon instead of lon/lat */
gmt_map_outside (GMT, xy[GMT_X], xy[GMT_Y]);
if (abs (GMT->current.map.this_x_status) > 1 || abs (GMT->current.map.this_y_status) > 1) continue; /* Outside map region */
gmt_geo_to_xy (GMT, xy[GMT_X], xy[GMT_Y], &G->f_xy[GMT_X][k], &G->f_xy[GMT_Y][k]); /* Project -> xy inches */
@@ -8657,7 +8720,7 @@ int gmt_contlabel_prep (struct GMT_CTRL *GMT, struct GMT_CONTOUR *G, double xyz[
error++;
return (error);
}
- n_col = (G->label_type == GMT_LABEL_IS_FFILE) ? 3 : 2; /* Required number of input colums */
+ n_col = (G->label_type == GMT_LABEL_IS_FFILE) ? 3 : 2; /* Required number of input columns */
G->f_xy[GMT_X] = gmt_M_memory (GMT, NULL, T->n_records, double);
G->f_xy[GMT_Y] = gmt_M_memory (GMT, NULL, T->n_records, double);
if (n_col == 3) G->f_label = gmt_M_memory (GMT, NULL, T->n_records, char *);
@@ -8686,7 +8749,7 @@ int gmt_contlabel_prep (struct GMT_CTRL *GMT, struct GMT_CONTOUR *G, double xyz[
}
/* Got here if data are OK */
- if (GMT->current.setting.io_lonlat_toggle[GMT_IN]) double_swap (xy[GMT_X], xy[GMT_Y]); /* Got lat/lon instead of lon/lat */
+ if (GMT->current.setting.io_lonlat_toggle[GMT_IN]) gmt_M_double_swap (xy[GMT_X], xy[GMT_Y]); /* Got lat/lon instead of lon/lat */
gmt_map_outside (GMT, xy[GMT_X], xy[GMT_Y]);
if (abs (GMT->current.map.this_x_status) > 1 || abs (GMT->current.map.this_y_status) > 1) continue; /* Outside map region */
gmt_geo_to_xy (GMT, xy[GMT_X], xy[GMT_Y], &G->f_xy[GMT_X][k], &G->f_xy[GMT_Y][k]); /* Project -> xy inches */
@@ -9328,7 +9391,7 @@ unsigned int gmt_inonout (struct GMT_CTRL *GMT, double x, double y, const struct
* based on the work by Dave Watson. You may also link with the triangle.o
* module from Jonathan Shewchuk, Berkeley U. by passing the compiler
* directive -DTRIANGLE_D. The latter is much faster and also has options
- * for Voronoi construction (which Watson's funciton does not have).
+ * for Voronoi construction (which Watson's function does not have).
*/
/*! . */
@@ -10537,38 +10600,62 @@ int gmt_getinsert (struct GMT_CTRL *GMT, char option, char *in_text, struct GMT_
unsigned int last;
char *q[2] = {NULL, NULL};
size_t len;
- if ((B->refpoint = gmt_get_refpoint (GMT, text)) == NULL) return (1); /* Failed basic parsing */
+ if ((B->refpoint = gmt_get_refpoint (GMT, text)) == NULL) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error: Map insert reference point was not accepted\n");
+ gmt_refpoint_syntax (GMT, "D", NULL, GMT_ANCHOR_INSERT, 1);
+ return (1); /* Failed basic parsing */
+ }
if (gmt_validate_modifiers (GMT, B->refpoint->args, option, "josw")) return (1);
/* Reference point args are +w<width>[u][/<height>[u]][+j<justify>][+o<dx>[/<dy>]][+s<file>]. */
/* Required modifier +w */
if (gmt_get_modifier (B->refpoint->args, 'w', string)) {
- n = sscanf (string, "%[^/]/%s", txt_a, txt_b);
- /* First deal with insert dimensions and horizontal vs vertical */
- /* Handle either <unit><width>/<height> or <width>[<unit>]/<height>[<unit>] */
- q[GMT_X] = txt_a; q[GMT_Y] = txt_b;
- last = (n == 1) ? GMT_X : GMT_Y;
- for (k = GMT_X; k <= last; k++) {
- len = strlen (q[k]) - 1;
- if (strchr (GMT_LEN_UNITS2, q[k][len])) { /* Got dimensions in these units */
- B->unit = q[k][len];
- q[k][len] = 0;
+ if (string[0] == '\0') { /* Got nutin' */
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: No dimensions given to +w modifier\n", option);
+ error++;
+ }
+ else { /* Gave some arguments */
+ n = sscanf (string, "%[^/]/%s", txt_a, txt_b);
+ /* First deal with insert dimensions and horizontal vs vertical */
+ /* Handle either <unit><width>/<height> or <width>[<unit>]/<height>[<unit>] */
+ q[GMT_X] = txt_a; q[GMT_Y] = txt_b;
+ last = (n == 1) ? GMT_X : GMT_Y;
+ for (k = GMT_X; k <= last; k++) {
+ len = strlen (q[k]) - 1;
+ if (strchr (GMT_LEN_UNITS2, q[k][len])) { /* Got dimensions in these units */
+ B->unit = q[k][len];
+ q[k][len] = 0;
+ }
+ B->dim[k] = (B->unit) ? atof (q[k]) : gmt_M_to_inch (GMT, q[k]);
}
- B->dim[k] = (B->unit) ? atof (q[k]) : gmt_M_to_inch (GMT, q[k]);
+ if (last == GMT_X) B->dim[GMT_Y] = B->dim[GMT_X];
}
- if (last == GMT_X) B->dim[GMT_Y] = B->dim[GMT_X];
}
/* Optional modifiers +j, +o, +s */
- if (gmt_get_modifier (B->refpoint->args, 'j', string))
- B->justify = gmt_just_decode (GMT, string, PSL_NO_DEF);
+ if (gmt_get_modifier (B->refpoint->args, 'j', string)) { /* Got justification of item w.r.t. reference point */
+ if (string[0] == '\0') { /* Got nutin' */
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: No justification argument given to +j modifier\n", option);
+ error++;
+ }
+ else
+ B->justify = gmt_just_decode (GMT, string, PSL_BL);
+ }
else /* With -Dj or -DJ, set default to reference justify point, else BL */
B->justify = gmt_M_just_default (GMT, B->refpoint, PSL_BL);
- if (gmt_get_modifier (B->refpoint->args, 'o', string)) {
- if ((n = gmt_get_pair (GMT, string, GMT_PAIR_DIM_DUP, B->off)) < 0) error++;
+ if (gmt_get_modifier (B->refpoint->args, 'o', string)) { /* Got offsets from reference point */
+ if ((n = gmt_get_pair (GMT, string, GMT_PAIR_DIM_DUP, B->off)) < 0) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Failed to parse offset arguments for +o modifier\n", option);
+ error++;
+ }
}
if (gmt_get_modifier (B->refpoint->args, 's', string)) {
- B->file = strdup (string);
+ if (string[0] == '\0') { /* Got nutin' */
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: No filename given to +s modifier\n", option);
+ error++;
+ }
+ else
+ B->file = strdup (string);
}
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "Map insert attributes: justify = %d, dx = %g dy = %g\n", B->justify, B->off[GMT_X], B->off[GMT_Y]);
}
@@ -10645,7 +10732,11 @@ int gmt_getscale (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_
ms->measure = 'k'; /* Default distance unit is km */
ms->alignment = 't'; /* Default label placement is on top */
- if ((ms->refpoint = gmt_get_refpoint (GMT, text)) == NULL) return (1); /* Failed basic parsing */
+ if ((ms->refpoint = gmt_get_refpoint (GMT, text)) == NULL) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error: Scale reference point was not accepted\n");
+ gmt_refpoint_syntax (GMT, "L", NULL, GMT_ANCHOR_MAPSCALE, 3);
+ return (1); /* Failed basic parsing */
+ }
/* refpoint->args are now +c[/<slon>]/<slat>+w<length>[e|f|M|n|k|u][+a<align>][+f][+j<just>][+l<label>][+o<dx>[/<dy>]][+u]. */
@@ -10653,19 +10744,29 @@ int gmt_getscale (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_
/* Required modifiers +c, +w */
if (gmt_get_modifier (ms->refpoint->args, 'c', string)) {
- if (strchr (string, '/')) { /* Got both lon and lat for scale */
- if ((n = gmt_get_pair (GMT, string, GMT_PAIR_COORD, ms->origin)) < 2) error++;
- if (fabs (ms->origin[GMT_X]) > 360.0) {
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Scale longitude is out of range\n", option);
+ if (string[0] == '\0') { /* Got nutin' */
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: No scale [<longitude>/]<latitude> argument given to +c modifier\n", option);
+ error++;
+ }
+ else if (strchr (string, '/')) { /* Got both lon and lat for scale */
+ if ((n = gmt_get_pair (GMT, string, GMT_PAIR_COORD, ms->origin)) < 2) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Failed to parse scale <longitude>/<latitude> for +c modifier\n", option);
+ error++;
+ }
+ else if (fabs (ms->origin[GMT_X]) > 360.0) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Scale longitude is out of range for +c modifier\n", option);
error++;
}
}
else { /* Just got latitude scale */
- error += gmt_verify_expectations (GMT, GMT_IS_LAT, gmt_scanf (GMT, string, GMT_IS_LON, &(ms->origin[GMT_Y])), string);
+ if (gmt_verify_expectations (GMT, GMT_IS_LAT, gmt_scanf (GMT, string, GMT_IS_LON, &(ms->origin[GMT_Y])), string)) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Failed to parse scale latitude for +c modifier\n", option);
+ error++;
+ }
ms->origin[GMT_X] = GMT->session.d_NaN; /* Must be set after gmt_map_setup is called */
}
if (fabs (ms->origin[GMT_Y]) > 90.0) {
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Scale latitude is out of range\n", option);
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Scale latitude is out of range for +c modifier\n", option);
error++;
}
}
@@ -10674,8 +10775,11 @@ int gmt_getscale (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_
error++;
}
if (gmt_get_modifier (ms->refpoint->args, 'w', string)) { /* Get bar length */
- n = (int)strlen (string) - 1;
- if (isalpha ((int)string[n])) { /* Letter at end of distance value */
+ if (string[0] == '\0') { /* Got nutin' */
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: No length argument given to +w modifier\n", option);
+ error++;
+ }
+ else if (isalpha ((int)string[n = (int)strlen (string) - 1])) { /* Letter at end of distance value */
ms->measure = string[n];
if (gmt_M_compat_check (GMT, 4) && ms->measure == 'm') {
GMT_Report (GMT->parent, GMT_MSG_COMPAT, "Warning: Distance unit m is deprecated; use M for statute miles\n");
@@ -10701,15 +10805,21 @@ int gmt_getscale (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_
/* Optional modifiers +a, +f, +j, +l, +o, +u */
if (gmt_get_modifier (ms->refpoint->args, 'a', string)) { /* Set alignment */
ms->alignment = string[0];
- if (!(ms->alignment == 'l' || ms->alignment == 'r' || ms->alignment == 't' || ms->alignment == 'b')) {
+ if (!strchr ("lrtb", ms->alignment)) {
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Valid label alignments (+a) are l|r|t|b\n", option);
error++;
}
}
if (gmt_get_modifier (ms->refpoint->args, 'f', NULL)) /* Do fancy label */
ms->fancy = true;
- if (gmt_get_modifier (ms->refpoint->args, 'j', string)) /* Got justification of item w.r.t. reference point */
- ms->justify = gmt_just_decode (GMT, string, PSL_MC);
+ if (gmt_get_modifier (ms->refpoint->args, 'j', string)) { /* Got justification of item w.r.t. reference point */
+ if (string[0] == '\0') { /* Got nutin' */
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: No justification argument given to +j modifier\n", option);
+ error++;
+ }
+ else
+ ms->justify = gmt_just_decode (GMT, string, PSL_MC);
+ }
else /* With -Dj or -DJ, set default to reference (mirrored) justify point, else MC */
ms->justify = gmt_M_just_default (GMT, ms->refpoint, PSL_MC);
if (gmt_get_modifier (ms->refpoint->args, 'l', string)) { /* Add label */
@@ -10717,7 +10827,10 @@ int gmt_getscale (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_
ms->do_label = true;
}
if (gmt_get_modifier (ms->refpoint->args, 'o', string)) { /* Got offsets from reference point */
- if ((n = gmt_get_pair (GMT, string, GMT_PAIR_DIM_DUP, ms->off)) < 0) error++;
+ if ((n = gmt_get_pair (GMT, string, GMT_PAIR_DIM_DUP, ms->off)) < 0) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Failed to parse offset arguments for +o modifier\n", option);
+ error++;
+ }
}
if (gmt_get_modifier (ms->refpoint->args, 'u', NULL)) /* Add units to annotations */
ms->unit = true;
@@ -10730,9 +10843,9 @@ int gmt_getscale (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_
/*! . */
int gmt_getrose (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_ROSE *ms) {
- unsigned int error = 0, k, pos, order[4] = {3,1,0,2};
+ unsigned int error = 0, k, order[4] = {3,1,0,2};
int n;
- char txt_a[GMT_LEN256] = {""}, string[GMT_LEN256] = {""}, p[GMT_LEN256] = {""};
+ char txt_a[GMT_LEN256] = {""}, string[GMT_LEN256] = {""};
struct GMT_MAP_PANEL *save_panel = ms->panel; /* In case it was set and we wipe it below with gmt_M_memset */
/* SYNTAX is -Td|m[g|j|n|x]<refpoint>+w<width>[+f[<kind>]][+i<pen>][+j<justify>][+l<w,e,s,n>][+m[<dec>[/<dlabel>]]][+o<dx>[/<dy>]][+p<pen>][+t<ints>]
@@ -10763,13 +10876,23 @@ int gmt_getrose (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_R
return (-1);
break;
}
- if ((ms->refpoint = gmt_get_refpoint (GMT, &text[1])) == NULL) return (1); /* Failed basic parsing */
+ if ((ms->refpoint = gmt_get_refpoint (GMT, &text[1])) == NULL) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error: Map rose reference point was not accepted\n");
+ gmt_refpoint_syntax (GMT, "Td|m", NULL, GMT_ANCHOR_MAPROSE, 3);
+ return (1); /* Failed basic parsing */
+ }
if (gmt_validate_modifiers (GMT, ms->refpoint->args, option, "dfijloptw")) return (1);
/* Get required +w modifier */
- if (gmt_get_modifier (ms->refpoint->args, 'w', string)) /* Get rose dimensions */
- ms->size = gmt_M_to_inch (GMT, string);
+ if (gmt_get_modifier (ms->refpoint->args, 'w', string)) { /* Get rose dimensions */
+ if (string[0] == '\0') { /* Got nutin' */
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: No width argument given to +w modifier\n", option);
+ error++;
+ }
+ else
+ ms->size = gmt_M_to_inch (GMT, string);
+ }
else {
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Rose dimension modifier +w<length>[unit] is required\n", option);
error++;
@@ -10807,8 +10930,14 @@ int gmt_getrose (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_R
if (string[0] && gmt_getpen (GMT, string, &ms->pen[GMT_ROSE_PRIMARY])) error++;
ms->draw_circle[GMT_ROSE_PRIMARY] = true;
}
- if (gmt_get_modifier (ms->refpoint->args, 'j', string))
- ms->justify = gmt_just_decode (GMT, string, PSL_NO_DEF);
+ if (gmt_get_modifier (ms->refpoint->args, 'j', string)) { /* Got justification of item w.r.t. reference point */
+ if (string[0] == '\0') { /* Got nutin' */
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: No justification argument given to +j modifier\n", option);
+ error++;
+ }
+ else
+ ms->justify = gmt_just_decode (GMT, string, PSL_MC);
+ }
else /* With -Dj or -DJ, set default to reference (mirriored) justify point, else MC */
ms->justify = gmt_M_just_default (GMT, ms->refpoint, PSL_MC);
if (gmt_get_modifier (ms->refpoint->args, 'l', string)) { /* Set labels +lw,e,s,n*/
@@ -10820,19 +10949,28 @@ int gmt_getrose (struct GMT_CTRL *GMT, char option, char *text, struct GMT_MAP_R
strcpy (ms->label[3], GMT->current.language.cardinal_name[2][0]);
}
else { /* Decode w,e,s,n strings */
- k = pos = 0;
- while (k < 4 && (gmt_strtok (string, ",", &pos, p))) { /* Get the four labels */
- if (strcmp (p, "-")) strncpy (ms->label[order[k]], p, GMT_LEN64-1);
+ size_t len;
+ unsigned int n_comma = 0;
+ char *tmp = string, *pp = NULL;
+ /* Check we got 3 commas */
+ for (len = strlen (string); len > 0; len--) if (string[len-1] == ',') n_comma++;
+ k = 0;
+ while (k < 4 && (pp = strsep (&tmp, ",")) != NULL) { /* Get the four labels */
+ if (pp[0] == '\0' || strcmp (pp, "-")) strncpy (ms->label[order[k]], pp, GMT_LEN64-1);
k++;
}
- if (k != 4) { /* Ran out of labels */
+ if (n_comma < 3 && k != 4) { /* Ran out of labels */
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: 4 Labels must be given via modifier +lw,e,s,n\n", option);
error++;
}
}
}
- if (gmt_get_modifier (ms->refpoint->args, 'o', string))
- if ((n = gmt_get_pair (GMT, string, GMT_PAIR_DIM_DUP, ms->off)) < 0) error++;
+ if (gmt_get_modifier (ms->refpoint->args, 'o', string)) { /* Got offsets from reference point */
+ if ((n = gmt_get_pair (GMT, string, GMT_PAIR_DIM_DUP, ms->off)) < 0) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -%c option: Failed to parse offset arguments for +o modifier\n", option);
+ error++;
+ }
+ }
if (gmt_get_modifier (ms->refpoint->args, 'p', string)) {
if (string[0] && gmt_getpen (GMT, string, &ms->pen[GMT_ROSE_SECONDARY])) error++;
ms->draw_circle[GMT_ROSE_SECONDARY] = true;
@@ -11244,7 +11382,7 @@ unsigned int gmt_verify_expectations (struct GMT_CTRL *GMT, unsigned int wanted,
/*! . */
void gmt_list_custom_symbols (struct GMT_CTRL *GMT) {
- /* Opens up GMT->init.custom_symbols.lis and dislays the list of custom symbols */
+ /* Opens up GMT->init.custom_symbols.lis and displays the list of custom symbols */
FILE *fp = NULL;
char list[GMT_LEN256] = {""}, buffer[GMT_BUFSIZ] = {""};
@@ -12325,6 +12463,7 @@ void gmtlib_free_custom_symbols (struct GMT_CTRL *GMT) {
bool gmt_polygon_is_open (struct GMT_CTRL *GMT, double x[], double y[], uint64_t n) {
/* Returns true if the first and last point is not identical */
if (n < 2) return false; /* A single point is by definition closed */
+ if (y == NULL) return true; /* A single vector is by definition open */
if (!doubleAlmostEqualZero (y[0], y[n-1]))
return true; /* y difference exceeds threshold: polygon is OPEN */
if (!doubleAlmostEqualZero (x[0], x[n-1])) { /* The x values exceeds threshold, check further if by 360 under geo */
@@ -12574,7 +12713,7 @@ struct GMT_DATASET * gmt_segmentize_data (struct GMT_CTRL *GMT, struct GMT_DATAS
* Thus, -F or -Fc or -Fcs or -Fs is the same as the input and is not allowed. However, if we use
* -Fcf or -Ff then we ignore segment headers WITHIN each file, except for the first header
* in each file. In other words, all points in a file will be considered continuous.
- * Finally, using -Fca or -Fa then all points in all fiels are considered continous and
+ * Finally, using -Fca or -Fa then all points in all fields are considered continuous and
* only the first segment header in the first file is considered.
* 2) -Fn: Network. For each group of points we connect each point with every other point.
* The modifiers a,f,s control what the "group" is. With s, we construct a separate
@@ -12883,7 +13022,7 @@ unsigned int gmtlib_split_line_at_dateline (struct GMT_CTRL *GMT, struct GMT_DAT
double r;
struct GMT_DATASEGMENT **L = NULL, *Sx = gmt_M_memory (GMT, NULL, 1, struct GMT_DATASEGMENT);
- for (k = 0; k < S->n_rows; k++) gmt_lon_range_adjust (GMT_IS_0_TO_P360_RANGE, &S->data[GMT_X][k]); /* First enforce 0 <= lon < 360 so we dont have to check again */
+ for (k = 0; k < S->n_rows; k++) gmt_lon_range_adjust (GMT_IS_0_TO_P360_RANGE, &S->data[GMT_X][k]); /* First enforce 0 <= lon < 360 so we don't have to check again */
gmt_alloc_datasegment (GMT, Sx, 2*S->n_rows, S->n_columns, true); /* Temp segment with twice the number of points as we will add crossings*/
for (k = row = n_split = 0; k < S->n_rows; k++) { /* Hunt for crossings */
@@ -13048,17 +13187,17 @@ int gmt_best_dim_choice (struct GMT_CTRL *GMT, unsigned int mode, unsigned int i
retval = 1;
}
else if (mode == 2) {
- struct GMT_FFT_SUGGESTION fft_sug[3];
+ struct GMT_FFT_SUGGESTION fft_sug[GMT_FFT_N_SUGGEST];
gmtlib_suggest_fft_dim (GMT, in_dim[GMT_X], in_dim[GMT_Y], fft_sug, false);
- if (fft_sug[1].totalbytes < fft_sug[0].totalbytes) {
+ if (fft_sug[GMT_FFT_ACCURATE].totalbytes < fft_sug[GMT_FFT_FAST].totalbytes) {
/* The most accurate solution needs same or less storage
* as the fastest solution; use the most accurate's dimensions */
- out_dim[GMT_X] = fft_sug[1].n_columns;
- out_dim[GMT_Y] = fft_sug[1].n_rows;
+ out_dim[GMT_X] = fft_sug[GMT_FFT_ACCURATE].n_columns;
+ out_dim[GMT_Y] = fft_sug[GMT_FFT_ACCURATE].n_rows;
}
else { /* Use the sizes of the fastest solution */
- out_dim[GMT_X] = fft_sug[0].n_columns;
- out_dim[GMT_Y] = fft_sug[0].n_rows;
+ out_dim[GMT_X] = fft_sug[GMT_FFT_FAST].n_columns;
+ out_dim[GMT_Y] = fft_sug[GMT_FFT_FAST].n_rows;
}
}
else {
@@ -13347,7 +13486,7 @@ struct GMT_REFPOINT * gmt_get_refpoint (struct GMT_CTRL *GMT, char *arg) {
justify = gmt_just_decode (GMT, txt_x, PSL_MC);
}
else { /* Must worry about leading + signs in the numbers that might confuse us w.r.t. modifiers */
- /* E.g., -Dg123.3/+19+jTL we dont want to trip up on +19 as modifier! */
+ /* E.g., -Dg123.3/+19+jTL we don't want to trip up on +19 as modifier! */
n = support_find_mod_syntax_start (arg, k);
if (arg[n]) { /* Separated via +modifiers (or nothing follows) */
int n2;
diff --git a/src/gmt_symbol.h b/src/gmt_symbol.h
index 9d9c8aa..4270a65 100644
--- a/src/gmt_symbol.h
+++ b/src/gmt_symbol.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_symbol.h 15810 2016-03-05 00:33:55Z pwessel $
+ * $Id: gmt_symbol.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_synopsis.h b/src/gmt_synopsis.h
index 89ce675..87da59b 100644
--- a/src/gmt_synopsis.h
+++ b/src/gmt_synopsis.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_synopsis.h 16544 2016-06-14 00:15:52Z pwessel $
+ * $Id: gmt_synopsis.h 17525 2017-02-03 12:14:48Z jluis $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -71,7 +71,7 @@
#define GMT_OFFSET "[+o<dx>[/<dy>]]"
#define GMT_TROSE_DIR GMT_XYANCHOR "+w<width>[+f[<level>]]" GMT_JUSTIFY "[+l<w,e,s,n>]" GMT_OFFSET
#define GMT_TROSE_MAG GMT_XYANCHOR "+w<width>[+d[<dec>[/<dlabel>]]][+i<pen>]" GMT_JUSTIFY "[+l<w,e,s,n>][+p<pen>][+t<ints>]" GMT_OFFSET
-#define GMT_SCALE GMT_XYANCHOR "+c[<slon>/]<slat>+w<length>[e|f|M|n|k|u][+a<align>][+f][+l[<label>]]" GMT_OFFSET "[+u]"
+#define GMT_SCALE GMT_XYANCHOR "+c[<slon>/]<slat>+w<length>[e|f|M|n|k|u][+a<align>][+f]" GMT_JUSTIFY "[+l[<label>]]" GMT_OFFSET "[+u]"
#define GMT_INSERT_A GMT_XYANCHOR "+w<width>[<unit>][/<height>[<unit>]]" GMT_JUSTIFY GMT_OFFSET "[+s<file>]"
#define GMT_INSERT_B "[<unit>]<xmin>/<xmax>/<ymin>/<ymax>[r][+s<file>]"
@@ -98,7 +98,7 @@
#define GMT_J_OPT "-J<args>"
#define GMT_R2_OPT "-R[<unit>]<xmin>/<xmax>/<ymin>/<ymax>[r]"
#define GMT_R3_OPT "-R[<unit>]<xmin>/<xmax>/<ymin>/<ymax>[/<zmin>/<zmax>][r]"
-#define GMT_U_OPT "-U[<just>/<dx>/<dy>/][c|<label>]"
+#define GMT_U_OPT "-U[[<just>]/<dx>/<dy>/][c|<label>]"
#define GMT_V_OPT "-V[<level>]"
#define GMT_X_OPT "-X[a|c|r]<xshift>[<unit>]"
#define GMT_Y_OPT "-Y[a|c|r]<yshift>[<unit>]"
@@ -115,11 +115,11 @@
#define GMT_p_OPT "-p[x|y|z]<azim>/<elev>[/<zlevel>][+w<lon0>/<lat0>[/<z0>][+v<x0>/<y0>]"
#define GMT_r_OPT "-r"
#define GMT_s_OPT "-s[<cols>][a|r]"
-#define GMT_t_OPT "-t<+a|[-]n>"
+#define GMT_t_OPT "-t<transp>"
#define GMT_colon_OPT "-:[i|o]"
/*! Macro for tools that need to specify FFT information (prepend option flag, e.g., -N and put GMT_FFT_OPT inside [] ) */
-#define GMT_FFT_OPT "[f|q|s|<n_columns>/<n_rows>][+a|d|l][+e|m|n][+t<width>][+w<suffix>][+z[p]]"
+#define GMT_FFT_OPT "[f|s|<n_columns>/<n_rows>][+a|d|l][+e|m|n][+t<width>][+v][+w<suffix>][+z[p]]"
#endif /* GMT_SYNOPSIS_H */
diff --git a/src/gmt_texture.h b/src/gmt_texture.h
index ec21bcc..2e29cde 100644
--- a/src/gmt_texture.h
+++ b/src/gmt_texture.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_texture.h 16618 2016-06-23 03:18:12Z pwessel $
+ * $Id: gmt_texture.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_time.h b/src/gmt_time.h
index c12d464..639a9e2 100644
--- a/src/gmt_time.h
+++ b/src/gmt_time.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_time.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: gmt_time.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmt_types.h b/src/gmt_types.h
index 5a8d653..e79ae83 100644
--- a/src/gmt_types.h
+++ b/src/gmt_types.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_types.h 16884 2016-08-06 23:38:05Z pwessel $
+ * $Id: gmt_types.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -125,7 +125,7 @@ struct GMT_MAP { /* Holds all map-related parameters */
int prev_y_status;
int corner; /* Tells us which corner 1-4 or -1 if not a corner */
bool coastline; /* true if we are currently plotting the coastline data in pscoast */
- bool on_border_is_outside; /* true if a point exactly on the map border shoud be considered outside the map */
+ bool on_border_is_outside; /* true if a point exactly on the map border should be considered outside the map */
bool is_world; /* true if map has 360 degrees of longitude range */
bool is_world_tm; /* true if GMT_TM map is global? */
bool lon_wrap; /* true when longitude wrapping over 360 degrees is allowed */
@@ -166,11 +166,11 @@ struct GMT_GCAL { /* (proleptic) Gregorian calendar */
int year; /* signed; negative and 0 allowed */
unsigned int month; /* Always between 1 and 12 */
unsigned int day_m; /* Day of month; always in 1 - 31 */
- unsigned int day_y; /* Day of year; 1 thru 366 */
- unsigned int day_w; /* Day of week; 0 (Sun) thru 6 (Sat) */
+ unsigned int day_y; /* Day of year; 1 through 366 */
+ unsigned int day_w; /* Day of week; 0 (Sun) through 6 (Sat) */
int iso_y; /* ISO year; not necessarily == year */
unsigned int iso_w; /* ISO week of iso_y; must be in 1 -- 53 */
- unsigned int iso_d; /* ISO day of iso_w; uses 1 (Mon) thru 7 (Sun) */
+ unsigned int iso_d; /* ISO day of iso_w; uses 1 (Mon) through 7 (Sun) */
unsigned int hour; /* 00 through 23 */
unsigned int min; /* 00 through 59 */
double sec; /* 00 through 59.xxxx; leap not yet handled */
@@ -321,7 +321,7 @@ struct GMT_SESSION {
};
struct GMT_CTRL {
- /* Master structure for a GMT invokation. All internal settings for GMT is accessed here */
+ /* Master structure for a GMT invocation. All internal settings for GMT is accessed here */
struct GMT_SESSION session; /* Structure with all values that do not change throughout a session */
struct GMT_INIT init; /* Structure with all values that do not change in a GMT_func call */
struct GMT_COMMON common; /* Structure with all the common GMT command settings (-R -J ..) */
diff --git a/src/gmt_url.c b/src/gmt_url.c
index 6e8a20e..8e02650 100644
--- a/src/gmt_url.c
+++ b/src/gmt_url.c
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------
- * $Id: gmt_url.c 15327 2015-12-08 02:18:08Z pwessel $
+ * $Id: gmt_url.c 17326 2016-11-08 20:28:56Z pwessel $
*
* Code was downloaded from http://curl.haxx.se/libcurl/c/fopen.html
* via curl https://raw.githubusercontent.com/bagder/curl/master/docs/examples/fopen.c > gmt_url.c
@@ -21,7 +21,7 @@
* instead of (only) local files. Local files (ie those that can be directly
* fopened) will drop back to using the underlying clib implementations
*
- * See the main() function at the bottom that shows an app that retrives from a
+ * See the main() function at the bottom that shows an app that retrieves from a
* specified url using fgets() and fread() and saves as two output files.
*
* Copyright (c) 2003 Simtec Electronics
@@ -119,7 +119,7 @@ static size_t write_callback(char *buffer,
size=rembuff;
}
else {
- /* realloc suceeded increase buffer size*/
+ /* realloc succeeded increase buffer size*/
url->buffer_len+=size - rembuff;
url->buffer=newbuff;
}
@@ -142,7 +142,7 @@ static int fill_buffer(URL_FILE *file, size_t want)
CURLMcode mc; /* curl_multi_fdset() return code */
/* only attempt to fill buffer if transactions still running and buffer
- * doesnt exceed required size already
+ * doesn't exceed required size already
*/
if((!file->still_running) || (file->buffer_pos > want))
return 0;
@@ -242,7 +242,7 @@ static int use_buffer(URL_FILE *file,int want)
URL_FILE *url_fopen(const char *url,const char *operation)
{
/* this code could check for URLs or types in the 'url' and
- basicly use the real fopen() for standard files */
+ basically use the real fopen() for standard files */
URL_FILE *file;
(void)operation;
@@ -358,7 +358,7 @@ size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
fill_buffer(file,want);
- /* check if theres data in the buffer - if not fill_buffer()
+ /* check if there's data in the buffer - if not fill_buffer()
* either errored or EOF */
if(!file->buffer_pos)
return 0;
@@ -397,7 +397,7 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
case CFTYPE_CURL:
fill_buffer(file,want);
- /* check if theres data in the buffer - if not fill either errored or
+ /* check if there's data in the buffer - if not fill either errored or
* EOF */
if(!file->buffer_pos)
return NULL;
@@ -417,7 +417,7 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
/* xfer data to caller */
memcpy(ptr, file->buffer, want);
- ptr[want]=0;/* allways null terminate */
+ ptr[want]=0;/* always null terminate */
use_buffer(file,want);
@@ -475,7 +475,7 @@ int url_fgetc(ByteIOContext *s)
}
#if 0
-/* Small main program to retrive from a url using fgets and fread saving the
+/* Small main program to retrieve from a url using fgets and fread saving the
* output to two test files (note the fgets method will corrupt binary files if
* they contain 0 chars */
int main(int argc, char *argv[])
diff --git a/src/gmt_vector.c b/src/gmt_vector.c
index f557c86..68a8e38 100644
--- a/src/gmt_vector.c
+++ b/src/gmt_vector.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmt_vector.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: gmt_vector.c 17528 2017-02-05 08:02:49Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -41,7 +41,7 @@ GMT_LOCAL void vector_switchrows (double *a, double *b, unsigned int n1, unsigne
memcpy(a+n*n1, a+n*n2, sizeof(double)*n);
memcpy(a+n*n2, oa, sizeof(double)*n);
- double_swap (b[n1], b[n2]);
+ gmt_M_double_swap (b[n1], b[n2]);
gmt_M_str_free (oa);
}
@@ -1372,7 +1372,7 @@ uint64_t gmt_fix_up_path (struct GMT_CTRL *GMT, double **a_lon, double **a_lat,
uint64_t i, j, n_new, n_step = 0;
double a[3], b[3], x[3], *lon = NULL, *lat = NULL;
double c, d, fraction, theta, minlon, maxlon;
- double dlon, lon_i;
+ double dlon, lon_i, boost, f_lat_a, f_lat_b;
if (!gmt_M_is_geographic (GMT, GMT_IN)) return (vector_fix_up_path_cartonly (GMT, a_lon, a_lat, n, mode)); /* Stair case only */
@@ -1391,14 +1391,26 @@ uint64_t gmt_fix_up_path (struct GMT_CTRL *GMT, double **a_lon, double **a_lat,
if (step <= 0.0) step = GMT->current.map.path_step; /* Based on GMT->current.setting.map_line_step converted to degrees */
if (step <= 0.0) step = 0.1; /* Safety valve when no -J and step not set. */
- /* Must be careful with connecting longitudes along a parallel since often the
+ /* 1) Must be careful with connecting longitudes along a parallel since often the
* longitudes might be of different sign. E.g., first may be +115 and the second is -165.
* Naive math would find a jump of -280 degrees but really it is just 80. The test below
- * tries to handle these artificial jumps. */
-
+ * tries to handle these artificial jumps.
+ * 2) When very close to a pole the distance between two input points can be very small
+ * and hence the number of steps n_step will be small. This can lead to large jumps in
+ * longitude that can later confuse us as to when we cross a periodic boundary.
+ * We try to mitigate that by scaling up the number of steps by a boost factor that is 1
+ * away from poles and from |lat| = 75 increases to 100 very close to the pole. */
+
+ f_lat_a = fabs (lat[0]);
for (i = 1; i < n; i++) {
+ f_lat_b = fabs (lat[i]);
gmt_geo_to_cart (GMT, lat[i], lon[i], b, true); /* End point of current arc */
+ boost = (MIN(f_lat_a, f_lat_b) > 75.0) ? 100.0 : 1.0; /* Enforce closer sampling close to poles */
+ if (MIN(f_lat_a, f_lat_b) > 75.0) /* Enforce closer sampling close to poles */
+ boost = 1.0 + 10.0 * (MAX(f_lat_a, f_lat_b) - 75.0); /* Crude way to get a boost from 1 at 80 to ~101 at the pole */
+ else
+ boost = 1.0;
if (mode == GMT_STAIRS_Y) { /* First follow meridian, then parallel */
dlon = lon[i]-lon[i-1]; /* Beware of jumps due to sign differences */
@@ -1451,10 +1463,19 @@ uint64_t gmt_fix_up_path (struct GMT_CTRL *GMT, double **a_lon, double **a_lat,
}
/* Follow great circle */
- else if ((theta = d_acosd (gmt_dot3v (GMT, a, b))) == 180.0) /* trouble, no unique great circle */
- GMT_Report (GMT->parent, GMT_MSG_VERBOSE, "Warning: Two points in input list are antipodal - no resampling taken place!\n");
+ else if ((theta = d_acosd (gmt_dot3v (GMT, a, b))) == 180.0) { /* trouble, no unique great circle */
+ if (gmt_M_is_spherical (GMT) || ((lat[i] + lat[i-1]) == 0.0)) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Two points in input list are antipodal - great circle resampling is not unique!\n");
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Fix input data or use project -A to generate athe desired great circle by providing an azimuth.\n");
+ }
+ else {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error: Two points in input list are antipodal - great circle resampling is not unique!\n");
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "There are two possible geodesics but GMT does not currently calculate geodesics.\n");
+ }
+ return 0;
+ }
- else if ((n_step = lrint (theta / step)) > 1) { /* Must insert (n_step - 1) points, i.e. create n_step intervals */
+ else if ((n_step = lrint (boost * theta / step)) > 1) { /* Must insert (n_step - 1) points, i.e. create n_step intervals */
fraction = 1.0 / (double)n_step;
minlon = MIN (lon[i-1], lon[i]);
maxlon = MAX (lon[i-1], lon[i]);
@@ -1479,6 +1500,7 @@ uint64_t gmt_fix_up_path (struct GMT_CTRL *GMT, double **a_lon, double **a_lat,
GMT->hidden.mem_coord[GMT_X][n_new] = lon[i]; GMT->hidden.mem_coord[GMT_Y][n_new] = lat[i];
n_new++;
gmt_M_cpy3v (a, b);
+ f_lat_a = f_lat_b;
}
/* Destroy old allocated memory and put the new one in place */
diff --git a/src/gmt_version.h.in b/src/gmt_version.h.in
index ff7e367..c84ea2c 100644
--- a/src/gmt_version.h.in
+++ b/src/gmt_version.h.in
@@ -1,7 +1,7 @@
/*
- * $Id: gmt_version.h.in 16330 2016-04-24 19:41:30Z jluis $
+ * $Id: gmt_version.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
*
* See LICENSE.TXT file for copying and redistribution conditions.
diff --git a/src/gmtconnect.c b/src/gmtconnect.c
index 61ebf54..8fb2092 100644
--- a/src/gmtconnect.c
+++ b/src/gmtconnect.c
@@ -1,7 +1,7 @@
/*
- * $Id: gmtconnect.c 16996 2016-08-24 00:20:46Z jluis $
+ * $Id: gmtconnect.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -443,7 +443,7 @@ int GMT_gmtconnect (void *V_API, int mode, void *args) {
segment[id].group = tbl; /* Remember which input table this segment came from */
segment[id].pos = seg; /* Remember which input segment in this table it came from */
segment[id].n = np; /* Number of points in this segment */
- /* Record start and end coordinates for this segment and initialze buddy structure to having no nearest neighbor segment yet */
+ /* Record start and end coordinates for this segment and initialize buddy structure to having no nearest neighbor segment yet */
segment[id].x_end[END_A] = S->data[GMT_X][0];
segment[id].y_end[END_A] = S->data[GMT_Y][0];
segment[id].x_end[END_B] = S->data[GMT_X][np-1];
@@ -687,7 +687,7 @@ int GMT_gmtconnect (void *V_API, int mode, void *args) {
b_alloc <<= 1;
buffer = gmt_M_memory (GMT, buffer, b_alloc, char);
}
- strcat (buffer, text); /* Append this connnection */
+ strcat (buffer, text); /* Append this connection */
if (id2 == start_id) /* Ended up at the starting polygon so it is now a closed polygon */
done = closed = true;
if (id2 == id || n_steps_pass_1 > ns) { /* Not good... [NOT SURE WHAT THIS MEANS BUT SEEMS LIKE A CRAZY SAFETY VALVE AND SHOULD NEVER HAPPEN] */
diff --git a/src/gmtconvert.c b/src/gmtconvert.c
index c2bd351..896474e 100644
--- a/src/gmtconvert.c
+++ b/src/gmtconvert.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtconvert.c 16973 2016-08-19 22:29:14Z remko $
+ * $Id: gmtconvert.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -532,7 +532,7 @@ int GMT_gmtconvert (void *V_API, int mode, void *args) {
for (seg = 0; seg < D[GMT_OUT]->table[tbl]->n_segments; seg++) { /* For each segment in the tables */
for (row1 = 0, row2 = D[GMT_OUT]->table[tbl]->segment[seg]->n_rows - 1; row1 < D[GMT_OUT]->table[tbl]->segment[seg]->n_rows/2; row1++, row2--) {
for (col = 0; col < D[GMT_OUT]->table[tbl]->segment[seg]->n_columns; col++)
- double_swap (D[GMT_OUT]->table[tbl]->segment[seg]->data[col][row1], D[GMT_OUT]->table[tbl]->segment[seg]->data[col][row2]);
+ gmt_M_double_swap (D[GMT_OUT]->table[tbl]->segment[seg]->data[col][row1], D[GMT_OUT]->table[tbl]->segment[seg]->data[col][row2]);
}
}
}
diff --git a/src/gmtdefaults.c b/src/gmtdefaults.c
index 7bb97d1..ecce4da 100644
--- a/src/gmtdefaults.c
+++ b/src/gmtdefaults.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtdefaults.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmtdefaults.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmtget.c b/src/gmtget.c
index e08271f..6f5e3cf 100644
--- a/src/gmtget.c
+++ b/src/gmtget.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtget.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmtget.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmtinfo.c b/src/gmtinfo.c
index 0d77af1..4de59fe 100644
--- a/src/gmtinfo.c
+++ b/src/gmtinfo.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtinfo.c 17124 2016-09-22 21:35:10Z jluis $
+ * $Id: gmtinfo.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -300,7 +300,7 @@ int GMT_gmtinfo (void *V_API, int mode, void *args) {
unsigned int fixed_phase[2] = {1, 1}, min_cols, o_mode, save_range;
uint64_t col, ncol = 0, n = 0;
- char file[GMT_BUFSIZ] = {""}, chosen[GMT_BUFSIZ] = {""}, record[GMT_BUFSIZ] = {""}, buffer[GMT_BUFSIZ] = {""}, delimeter[2] = {""};
+ char file[GMT_BUFSIZ] = {""}, chosen[GMT_BUFSIZ] = {""}, record[GMT_BUFSIZ] = {""}, buffer[GMT_BUFSIZ] = {""}, delimiter[2] = {""};
double *xyzmin = NULL, *xyzmax = NULL, *in = NULL, *dchosen = NULL, phase[2] = {0.0, 0.0}, this_phase, off;
double west = 0.0, east = 0.0, south = 0.0, north = 0.0, low, high, value, e_min = DBL_MAX, e_max = -DBL_MAX;
@@ -332,8 +332,8 @@ int GMT_gmtinfo (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_VERBOSE, "Processing input table data\n");
give_r_string = (Ctrl->I.active && !Ctrl->C.active);
- delimeter[0] = (Ctrl->C.active) ? '\t' : '/';
- delimeter[1] = '\0';
+ delimiter[0] = (Ctrl->C.active) ? '\t' : '/';
+ delimiter[1] = '\0';
off = (GMT->common.r.active) ? 0.5 : 0.0;
brackets = !Ctrl->C.active;
@@ -368,6 +368,9 @@ int GMT_gmtinfo (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, o_mode, GMT_OUT, GMT_HEADER_OFF) != GMT_NOERROR) {
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if (Ctrl->C.active) { /* Must set output column types since each input col will produce two output cols. */
gmt_M_memcpy (col_type, GMT->current.io.col_type[GMT_OUT], GMT_MAX_COLUMNS, int); /* Save previous output col types */
@@ -379,7 +382,7 @@ int GMT_gmtinfo (void *V_API, int mode, void *args) {
first_data_record = true;
done = false;
while (!done) { /* Keep returning records until we reach EOF of last file */
- in = GMT_Get_Record (API, GMT_READ_DOUBLE | GMT_READ_FILEBREAK, NULL);
+ in = GMT_Get_Record (API, GMT_READ_DATA | GMT_READ_FILEBREAK, NULL);
do_report = false;
if (gmt_M_rec_is_error (GMT)) Return (GMT_RUNTIME_ERROR);
@@ -390,7 +393,7 @@ int GMT_gmtinfo (void *V_API, int mode, void *args) {
if (gmt_M_rec_is_segment_header (GMT) && GMT->current.io.seg_no == 0) continue; /* Very first segment header means there is no prior segment to report on yet */
if (gmt_M_rec_is_eof (GMT)) { /* We are done after this since we hit EOF */
done = true;
- GMT->current.io.seg_no++; /* Must manually increment since we are not reading any futher */
+ GMT->current.io.seg_no++; /* Must manually increment since we are not reading any further */
}
if (n == 0) continue; /* This segment, table, or data set had no data records, skip */
@@ -440,7 +443,7 @@ int GMT_gmtinfo (void *V_API, int mode, void *args) {
}
}
if (gmt_M_is_geographic (GMT, GMT_IN)) {
- if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Must make sure we dont get outside valid bounds */
+ if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Must make sure we don't get outside valid bounds */
if (south < -90.0) {
south = -90.0;
GMT_Report (API, GMT_MSG_VERBOSE, "Warning: Using -I caused south to become < -90. Reset to -90.\n");
@@ -561,7 +564,7 @@ int GMT_gmtinfo (void *V_API, int mode, void *args) {
if (brackets) strcat (record, "<");
gmt_ascii_format_col (GMT, buffer, low, GMT_OUT, col);
strcat (record, buffer);
- strcat (record, delimeter);
+ strcat (record, delimiter);
gmt_ascii_format_col (GMT, buffer, high, GMT_OUT, col);
strcat (record, buffer);
if (brackets) strcat (record, ">");
@@ -571,7 +574,7 @@ int GMT_gmtinfo (void *V_API, int mode, void *args) {
}
if (do_report) {
if (Ctrl->C.active) { /* Plain data record */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, GMT->current.io.curr_rec); /* Write data record to output destination */
+ GMT_Put_Record (API, GMT_WRITE_DATA, GMT->current.io.curr_rec); /* Write data record to output destination */
}
else {
GMT_Put_Record (API, GMT_WRITE_TEXT, record); /* Write text record to output destination */
diff --git a/src/gmtlogo.c b/src/gmtlogo.c
index 0b73b19..bb49bb9 100644
--- a/src/gmtlogo.c
+++ b/src/gmtlogo.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtlogo.c 17222 2016-10-19 03:00:55Z pwessel $
+ * $Id: gmtlogo.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -84,8 +84,8 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
if (level == GMT_SYNOPSIS) return (GMT_MODULE_SYNOPSIS);
GMT_Message (API, GMT_TIME_NONE, "\tOPTIONS:\n");
- gmt_refpoint_syntax (API->GMT, 'D', "Specify position of the GMT logo [0/0].", GMT_ANCHOR_LOGO, 1);
- gmt_refpoint_syntax (API->GMT, 'D', NULL, GMT_ANCHOR_LOGO, 2);
+ gmt_refpoint_syntax (API->GMT, "D", "Specify position of the GMT logo [0/0].", GMT_ANCHOR_LOGO, 1);
+ gmt_refpoint_syntax (API->GMT, "D", NULL, GMT_ANCHOR_LOGO, 2);
GMT_Message (API, GMT_TIME_NONE, "\t Use +w<width> to set the width of the GMT logo.\n");
gmt_mappanel_syntax (API->GMT, 'F', "Specify a rectangular panel behind the GMT logo", 0);
GMT_Option (API, "J-Z,K,O,P,R");
@@ -169,8 +169,8 @@ int GMT_gmtlogo (void *V_API, int mode, void *args) {
struct GMT_FONT F;
struct GMTLOGO_CTRL *Ctrl = NULL; /* Control structure specific to program */
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMT_OPTION *options = NULL;
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
diff --git a/src/gmtmath.c b/src/gmtmath.c
index 8f28b0f..709c46c 100644
--- a/src/gmtmath.c
+++ b/src/gmtmath.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtmath.c 17146 2016-09-30 01:43:51Z pwessel $
+ * $Id: gmtmath.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -132,7 +132,7 @@ struct GMTMATH_INFO {
bool irregular; /* true if t_inc varies */
bool roots_found; /* true if roots have been solved for */
bool local; /* Per segment operation (true) or global operation (false) */
- bool notime; /* No time-array avaible for operators who depend on that */
+ bool notime; /* No time-array available for operators who depend on that */
unsigned int n_roots; /* Number of roots found */
unsigned int fit_mode; /* Used for {LSQ|SVD}FIT */
unsigned int w_mode; /* Used for weighted fit */
@@ -393,7 +393,7 @@ GMT_LOCAL int solve_LS_system (struct GMT_CTRL *GMT, struct GMTMATH_INFO *info,
D = GMT_Duplicate_Data (GMT->parent, GMT_IS_DATASET, GMT_DUPLICATE_ALLOC, S->D); /* Same table length as S->D, but with up to n_cols columns (lon, lat, dist, g1, g2, ...) */
S->D->dim[GMT_COL] = k; /* Reset the original columns */
if (D->table[0]->n_segments > 1) gmt_set_segmentheader (GMT, GMT_OUT, true); /* More than one segment triggers -mo */
- load_column (D, 0, info->T, COL_T); /* Place the time-column in first ouput column */
+ load_column (D, 0, info->T, COL_T); /* Place the time-column in first output column */
for (seg = k = 0; seg < info->T->n_segments; seg++) {
for (row = 0; row < T->segment[seg]->n_rows; row++, k++) {
D->table[0]->segment[seg]->data[1][row] = T->segment[seg]->data[rhs][row];
@@ -1317,7 +1317,7 @@ GMT_LOCAL int table_COL (struct GMT_CTRL *GMT, struct GMTMATH_INFO *info, struct
if (gmt_assign_ptrs (GMT, last, S, &T, &T_prev) == UINT_MAX) return -1; /* Set up pointers and prev; exit if running out of stack */
- if (!S[last]->constant || S[last]->factor < 0.0 || (k = urint (S[last]->factor) >= info->n_col)) {
+ if (!S[last]->constant || S[last]->factor < 0.0 || ((k = urint (S[last]->factor)) >= info->n_col)) {
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Error, argument to COL must be a constant column number (0 <= k < n_col)!\n");
return -1;
}
@@ -1830,8 +1830,8 @@ GMT_LOCAL int table_EXCH (struct GMT_CTRL *GMT, struct GMTMATH_INFO *info, struc
prev = last - 1;
D = S[last]->D;
S[last]->D = S[prev]->D; S[prev]->D = D;
- bool_swap (S[last]->constant, S[prev]->constant);
- double_swap (S[last]->factor, S[prev]->factor);
+ gmt_M_bool_swap (S[last]->constant, S[prev]->constant);
+ gmt_M_double_swap (S[last]->factor, S[prev]->factor);
return 0;
}
@@ -1908,7 +1908,7 @@ GMT_LOCAL int table_FLIPUD (struct GMT_CTRL *GMT, struct GMTMATH_INFO *info, str
gmt_M_unused(GMT);
/* Reverse the order of points in a column */
if (S[last]->constant) return 0;
- for (s = 0; s < info->T->n_segments; s++) for (row = 0, k = info->T->segment[s]->n_rows-1; row < info->T->segment[s]->n_rows/2; row++, k--) double_swap (T->segment[s]->data[col][row], T->segment[s]->data[col][k]);
+ for (s = 0; s < info->T->n_segments; s++) for (row = 0, k = info->T->segment[s]->n_rows-1; row < info->T->segment[s]->n_rows/2; row++, k--) gmt_M_double_swap (T->segment[s]->data[col][row], T->segment[s]->data[col][k]);
return 0;
}
@@ -5064,7 +5064,7 @@ int GMT_gmtmath (void *V_API, int mode, void *args) {
for (seg = n_records = 0; seg < info.T->n_segments; seg++) { /* Create normalized times and possibly reverse time (-I) */
off = 0.5 * (info.T->segment[seg]->data[COL_T][info.T->segment[seg]->n_rows-1] + info.T->segment[seg]->data[COL_T][0]);
scale = 2.0 / (info.T->segment[seg]->data[COL_T][info.T->segment[seg]->n_rows-1] - info.T->segment[seg]->data[COL_T][0]);
- if (Ctrl->I.active) for (row = 0; row < info.T->segment[seg]->n_rows/2; row++) double_swap (info.T->segment[seg]->data[COL_T][row], info.T->segment[seg]->data[COL_T][info.T->segment[seg]->n_rows-1-row]); /* Reverse time series */
+ if (Ctrl->I.active) for (row = 0; row < info.T->segment[seg]->n_rows/2; row++) gmt_M_double_swap (info.T->segment[seg]->data[COL_T][row], info.T->segment[seg]->data[COL_T][info.T->segment[seg]->n_rows-1-row]); /* Reverse time series */
for (row = 0; row < info.T->segment[seg]->n_rows; row++) {
info.T->segment[seg]->data[COL_TN][row] = (info.T->segment[seg]->data[COL_T][row] - off) * scale;
info.T->segment[seg]->data[COL_TJ][row] = (unsigned int)((Ctrl->I.active) ? info.T->segment[seg]->n_rows - row - 1 : row);
@@ -5074,14 +5074,14 @@ int GMT_gmtmath (void *V_API, int mode, void *args) {
info.t_min = Ctrl->T.min; info.t_max = Ctrl->T.max; info.t_inc = Ctrl->T.inc;
info.n_col = n_columns; info.local = Ctrl->L.active;
info.notime = Ctrl->T.notime;
- gmt_set_tbl_minmax (GMT, info.T);
+ gmt_set_tbl_minmax (GMT, GMT_IS_POINT, info.T);
if (Ctrl->A.active) { /* Set up A * x = b, with the table holding the extended matrix [ A | [w | ] b ], with w the optional weights */
if (!stack[0]->D)
stack[0]->D = gmt_alloc_dataset (GMT, Template, 0, n_columns, GMT_ALLOC_NORMAL);
load_column (stack[0]->D, n_columns-1, rhs, 1); /* Always put the r.h.s of the Ax = b equation in the last column of the item on the stack */
if (!Ctrl->A.null) load_column (stack[0]->D, Ctrl->N.tcol, rhs, 0); /* Optionally, put the t vector in the time column of the item on the stack */
- gmt_set_tbl_minmax (GMT, stack[0]->D->table[0]);
+ gmt_set_tbl_minmax (GMT, stack[0]->D->geometry, stack[0]->D->table[0]);
nstack = 1;
info.fit_mode = Ctrl->A.e_mode;
info.w_mode = Ctrl->A.w_mode;
@@ -5186,7 +5186,7 @@ int GMT_gmtmath (void *V_API, int mode, void *args) {
if (!stack[nstack]->D)
stack[nstack]->D = gmt_alloc_dataset (GMT, Template, 0, n_columns, GMT_ALLOC_NORMAL);
for (j = 0; j < n_columns; j++) if (no_C || !Ctrl->C.cols[j]) load_column (stack[nstack]->D, j, recall[k]->stored.D->table[0], j);
- gmt_set_tbl_minmax (GMT, stack[nstack]->D->table[0]);
+ gmt_set_tbl_minmax (GMT, stack[nstack]->D->geometry, stack[nstack]->D->table[0]);
}
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) GMT_Message (API, GMT_TIME_NONE, "@%s ", recall[k]->label);
nstack++;
@@ -5219,7 +5219,7 @@ int GMT_gmtmath (void *V_API, int mode, void *args) {
stack[nstack]->D = gmt_alloc_dataset (GMT, Template, 0, n_columns, GMT_ALLOC_NORMAL);
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) GMT_Message (API, GMT_TIME_NONE, "T ");
for (j = 0; j < n_columns; j++) if (no_C || !Ctrl->C.cols[j]) load_column (stack[nstack]->D, j, info.T, COL_T);
- gmt_set_tbl_minmax (GMT, stack[nstack]->D->table[0]);
+ gmt_set_tbl_minmax (GMT, stack[nstack]->D->geometry, stack[nstack]->D->table[0]);
}
else if (op == GMTMATH_ARG_IS_t_MATRIX) { /* Need to set up matrix of normalized t-values */
if (Ctrl->T.notime) {
@@ -5230,14 +5230,14 @@ int GMT_gmtmath (void *V_API, int mode, void *args) {
stack[nstack]->D = gmt_alloc_dataset (GMT, Template, 0, n_columns, GMT_ALLOC_NORMAL);
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) GMT_Message (API, GMT_TIME_NONE, "TNORM ");
for (j = 0; j < n_columns; j++) if (no_C || !Ctrl->C.cols[j]) load_column (stack[nstack]->D, j, info.T, COL_TN);
- gmt_set_tbl_minmax (GMT, stack[nstack]->D->table[0]);
+ gmt_set_tbl_minmax (GMT, stack[nstack]->D->geometry, stack[nstack]->D->table[0]);
}
else if (op == GMTMATH_ARG_IS_J_MATRIX) { /* Need to set up matrix of row numbers */
if (!stack[nstack]->D)
stack[nstack]->D = gmt_alloc_dataset (GMT, Template, 0, n_columns, GMT_ALLOC_NORMAL);
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) GMT_Message (API, GMT_TIME_NONE, "TROW ");
for (j = 0; j < n_columns; j++) if (no_C || !Ctrl->C.cols[j]) load_column (stack[nstack]->D, j, info.T, COL_TJ);
- gmt_set_tbl_minmax (GMT, stack[nstack]->D->table[0]);
+ gmt_set_tbl_minmax (GMT, stack[nstack]->D->geometry, stack[nstack]->D->table[0]);
}
else if (op == GMTMATH_ARG_IS_FILE) { /* Filename given */
struct GMT_DATASET *F = NULL;
@@ -5258,7 +5258,7 @@ int GMT_gmtmath (void *V_API, int mode, void *args) {
T_in = F->table[0]; /* Only one table since only a single file */
}
for (j = 0; j < n_columns; j++) if (no_C || !Ctrl->C.cols[j]) load_column (stack[nstack]->D, j, T_in, j);
- gmt_set_tbl_minmax (GMT, stack[nstack]->D->table[0]);
+ gmt_set_tbl_minmax (GMT, stack[nstack]->D->geometry, stack[nstack]->D->table[0]);
if (!same_size (stack[nstack]->D, Template)) {
GMT_Report (API, GMT_MSG_NORMAL, "tables not of same size!\n");
Return (GMT_RUNTIME_ERROR);
@@ -5345,7 +5345,7 @@ int GMT_gmtmath (void *V_API, int mode, void *args) {
else if (!Ctrl->C.cols[j])
load_const_column (stack[0]->D, j, stack[0]->factor);
}
- gmt_set_tbl_minmax (GMT, stack[0]->D->table[0]);
+ gmt_set_tbl_minmax (GMT, stack[0]->D->geometry, stack[0]->D->table[0]);
}
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) GMT_Message (API, GMT_TIME_NONE, "\n");
@@ -5376,7 +5376,7 @@ int GMT_gmtmath (void *V_API, int mode, void *args) {
}
if (place_t_col && Ctrl->N.tcol < R->n_columns) {
load_column (R, Ctrl->N.tcol, info.T, COL_T); /* Put T in the time column of the item on the stack if possible */
- gmt_set_tbl_minmax (GMT, R->table[0]);
+ gmt_set_tbl_minmax (GMT, R->geometry, R->table[0]);
}
if ((error = gmt_set_cols (GMT, GMT_OUT, R->n_columns)) != 0) Return (error); /* Since -bo might have been used */
if (Ctrl->S.active) { /* Only get one record per segment */
diff --git a/src/gmtmath.h.in b/src/gmtmath.h.in
index ce0320b..06bc37f 100644
--- a/src/gmtmath.h.in
+++ b/src/gmtmath.h.in
@@ -1,8 +1,8 @@
/*--------------------------------------------------------------------
*
- * $Id: gmtmath.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: gmtmath.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/gmtmath_explain.h.in b/src/gmtmath_explain.h.in
index 6d1868e..02b6235 100644
--- a/src/gmtmath_explain.h.in
+++ b/src/gmtmath_explain.h.in
@@ -1,8 +1,8 @@
/*--------------------------------------------------------------------
*
- * $Id: gmtmath_explain.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: gmtmath_explain.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/gmtmath_op.h.in b/src/gmtmath_op.h.in
index 7466a33..66760ad 100644
--- a/src/gmtmath_op.h.in
+++ b/src/gmtmath_op.h.in
@@ -1,8 +1,8 @@
/*--------------------------------------------------------------------
*
- * $Id: gmtmath_op.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: gmtmath_op.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/gmtread.c b/src/gmtread.c
index 479303a..43d9835 100644
--- a/src/gmtread.c
+++ b/src/gmtread.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtread.c 16802 2016-07-14 21:33:47Z pwessel $
+ * $Id: gmtread.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -36,11 +36,11 @@
/* Control structure for read */
struct GMTREAD_CTRL {
- struct IO { /* Need two args with filenames */
+ struct GMTREAD_IO { /* Need two args with filenames */
bool active[2];
char *file[2];
} IO;
- struct T { /* -T sets data type */
+ struct GMTREAD_T { /* -T sets data type */
bool active;
enum GMT_enum_family mode;
} T;
diff --git a/src/gmtregress.c b/src/gmtregress.c
index 565a71f..63dfb6b 100644
--- a/src/gmtregress.c
+++ b/src/gmtregress.c
@@ -1,7 +1,7 @@
/*
- * $Id: gmtregress.c 17121 2016-09-21 23:07:26Z jluis $
+ * $Id: gmtregress.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -755,7 +755,7 @@ GMT_LOCAL double regress1D (struct GMT_CTRL *GMT, double *x, double *y, double *
gmt_M_memset (par, GMTREGRESS_NPAR, double); /* Reset all regression parameters */
gmt_M_memset (tpar, GMTREGRESS_NPAR, double); /* Reset all test regression parameters */
if (regression != GMTREGRESS_XY) (void)gmt_demeaning (GMT, x, y, w, n, tpar, U, V, W, NULL, NULL); /* Do this once except for orthogonal */
- par[GMTREGRESS_MISFT] = DBL_MAX; /* Initally we have no fit */
+ par[GMTREGRESS_MISFT] = DBL_MAX; /* Initially we have no fit */
weighted = (regression == GMTREGRESS_X) ? (w && w[GMT_X]) : (w && w[GMT_Y]); /* true if weights were provided */
while (!done) { /* Keep iterating and zooming in on smaller angle-ranges until misfit is very small */
r_a = a_max - a_min; /* Range of angles */
@@ -831,7 +831,7 @@ GMT_LOCAL double LSxy_regress1D_york (struct GMT_CTRL *GMT, double *X, double *Y
/* Step 7: Calculate the corresponding intercept a (which is zero in U-V coordinates so we convert to X-Y) */
a = par[GMTREGRESS_YMEAN] - b * par[GMTREGRESS_XMEAN];
/* Step 8: Compute the adjusted points x (x,y) are the orthogonal projection of (X,Y) onto the regression line */
- eval_add (beta, par[GMTREGRESS_XMEAN], x, n); /* Compute x (we don't actually need y so we dont do that here) */
+ eval_add (beta, par[GMTREGRESS_XMEAN], x, n); /* Compute x (we don't actually need y so we don't do that here) */
/* Step 9: Compute u */
x_mean = eval_sumprod2 (W, x, n) / W_sum; /* Compute x_mean */
eval_add (x, -x_mean, u, n); /* Compute u */
@@ -950,7 +950,7 @@ GMT_LOCAL double *do_regression (struct GMT_CTRL *GMT, double *x_in, double *y_i
par[GMTREGRESS_ICEPT] = -par[GMTREGRESS_ICEPT] / par[GMTREGRESS_SLOPE];
par[GMTREGRESS_SLOPE] = 1.0 / par[GMTREGRESS_SLOPE];
par[GMTREGRESS_ANGLE] = atand (par[GMTREGRESS_SLOPE]);
- double_swap (par[GMTREGRESS_XMEAN], par[GMTREGRESS_YMEAN]);
+ gmt_M_double_swap (par[GMTREGRESS_XMEAN], par[GMTREGRESS_YMEAN]);
par[GMTREGRESS_SIGIC] = par[GMTREGRESS_SIGIC] / par[GMTREGRESS_SLOPE];
}
if (mode == 0) { /* Normal mode is to compute normalized residuals (aka z-scores) */
@@ -998,6 +998,8 @@ int GMT_gmtregress (void *V_API, int mode, void *args) {
int error = 0;
+ unsigned geometry = GMT_IS_NONE;
+
double *x = NULL, *U = NULL, *V = NULL, *W = NULL, *e = NULL, *w[3] = {NULL, NULL, NULL};
double t_scale = 0.0, par[GMTREGRESS_NPAR], out[9], *t = NULL;
@@ -1062,6 +1064,7 @@ int GMT_gmtregress (void *V_API, int mode, void *args) {
}
if (bad) Return (GMT_RUNTIME_ERROR);
if (Ctrl->T.n) t = gmt_M_memory (GMT, NULL, Ctrl->T.n, double); /* Allocate space for output x-values (unless when -T0 is given) */
+ geometry = GMT_IS_LINE;
}
/* Allocate memory and read in all the files; each file can have many records */
@@ -1084,6 +1087,9 @@ int GMT_gmtregress (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, geometry) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if ((error = gmt_set_cols (GMT, GMT_OUT, n_columns)) != 0) Return (error);
gmt_set_segmentheader (GMT, GMT_OUT, true); /* To write segment headers regardless of input */
@@ -1145,7 +1151,7 @@ int GMT_gmtregress (void *V_API, int mode, void *args) {
GMT_Put_Record (API, GMT_WRITE_SEGMENT_HEADER, buffer); /* Also include result in segment header */
for (row = 0; row < n_try; row++) { /* Write the saved results of the experiment */
for (k = 0; k < GMTREGRESS_NPAR_MAIN; k++) out[k] = Sa->data[k][row];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this record to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this record to output */
}
}
else { /* Here we are solving for the best regression */
@@ -1161,7 +1167,7 @@ int GMT_gmtregress (void *V_API, int mode, void *args) {
out[6] = par[GMTREGRESS_ICEPT];
out[7] = par[GMTREGRESS_SIGSL];
out[8] = par[GMTREGRESS_SIGIC];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this record to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this record to output */
}
else {
/* Make segment header with the findings for best regression */
@@ -1193,7 +1199,7 @@ int GMT_gmtregress (void *V_API, int mode, void *args) {
for (row = 0; row < n_t; row++) {
if (!Ctrl->T.active) outlier = (fabs (z_score[row]) > GMTREGRESS_ZSCORE_LIMIT); /* Gotta exceed this threshold to be a bad boy */
if (Ctrl->S.active) { /* Restrict the output records */
- if (Ctrl->S.mode == GMTREGRESS_OUTPUT_GOOD && outlier) continue; /* Dont want the outliers */
+ if (Ctrl->S.mode == GMTREGRESS_OUTPUT_GOOD && outlier) continue; /* Don't want the outliers */
if (Ctrl->S.mode == GMTREGRESS_OUTPUT_BAD && !outlier) continue; /* Only want the outliers */
}
for (col = 0; col < n_columns; col++) { /* Loop over the chosen output columns (-F) */
@@ -1221,7 +1227,7 @@ int GMT_gmtregress (void *V_API, int mode, void *args) {
break;
}
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this record to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this record to output */
}
}
gmt_M_free (GMT, z_score); /* Done with this array */
diff --git a/src/gmtselect.c b/src/gmtselect.c
index cf685a7..f0b4d84 100644
--- a/src/gmtselect.c
+++ b/src/gmtselect.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtselect.c 17207 2016-10-16 03:37:46Z pwessel $
+ * $Id: gmtselect.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -73,7 +73,7 @@ struct GMTSELECT_DATA { /* Used for temporary storage when sorting data on x coo
struct GMTSELECT_ZLIMIT { /* Used to hold info for each -Z option given */
unsigned int col; /* Column to test */
- bool equal; /* Just check if z == min withing 5 ULps */
+ bool equal; /* Just check if z == min within 5 ULps */
double min; /* Smallest z-value to pass through, for this column */
double max; /* Largest z-value to pass through, for this column */
};
@@ -93,7 +93,7 @@ struct GMTSELECT_CTRL { /* All control options for this program (except common a
} C;
struct GMTSELECT_D { /* -D<resolution> */
bool active;
- bool force; /* if true, select next highest level if current set is not avaialble */
+ bool force; /* if true, select next highest level if current set is not available */
char set; /* One of f, h, i, l, c */
} D;
struct GMTSELECT_E { /* -E<operators> , <op> = combination or f,n */
@@ -612,7 +612,7 @@ int GMT_gmtselect (void *V_API, int mode, void *args) {
shuffle = (GMT->current.setting.io_lonlat_toggle[GMT_IN] != GMT->current.setting.io_lonlat_toggle[GMT_OUT]); /* Must rewrite output record */
n_minimum = Ctrl->Z.max_col; /* Minimum number of columns in ASCII input */
- if (!GMT->common.R.active && Ctrl->N.active) { /* If we use coastline data or used -fg but didnt give -R we implicitly set -Rg */
+ if (!GMT->common.R.active && Ctrl->N.active) { /* If we use coastline data or used -fg but didn't give -R we implicitly set -Rg */
GMT->common.R.active = true;
GMT->common.R.wesn[XLO] = 0.0; GMT->common.R.wesn[XHI] = 360.0; GMT->common.R.wesn[YLO] = -90.0; GMT->common.R.wesn[YHI] = +90.0;
gmt_set_geographic (GMT, GMT_IN);
@@ -792,12 +792,15 @@ int GMT_gmtselect (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
/* Now we are ready to take on some input values */
just_copy_record = (gmt_is_ascii_record (GMT, options) && !shuffle && !GMT->common.s.active);
GMT->common.b.ncol[GMT_OUT] = UINT_MAX; /* Flag to have it reset to GMT->common.b.ncol[GMT_IN] when writing */
- r_mode = (just_copy_record) ? GMT_READ_MIXED : GMT_READ_DOUBLE;
+ r_mode = (just_copy_record) ? GMT_READ_MIXED : GMT_READ_DATA;
gmt_set_segmentheader (GMT, GMT_OUT, false); /* Since processing of -C|L|F files might have turned it on [should be determined below] */
do { /* Keep returning records until we reach EOF */
@@ -979,7 +982,7 @@ int GMT_gmtselect (void *V_API, int mode, void *args) {
GMT_Put_Record (API, GMT_WRITE_TEXT, NULL);
}
else
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, in);
+ GMT_Put_Record (API, GMT_WRITE_DATA, in);
n_pass++;
} while (true);
diff --git a/src/gmtset.c b/src/gmtset.c
index 9270182..389d798 100644
--- a/src/gmtset.c
+++ b/src/gmtset.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtset.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmtset.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gmtsimplify.c b/src/gmtsimplify.c
index 1e2e5ba..0e24137 100644
--- a/src/gmtsimplify.c
+++ b/src/gmtsimplify.c
@@ -1,7 +1,7 @@
/*
- * $Id: gmtsimplify.c 16697 2016-07-03 06:17:50Z pwessel $
+ * $Id: gmtsimplify.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -366,7 +366,7 @@ int GMT_gmtsimplify (void *V_API, int mode, void *args) {
for (tbl = 0; tbl < D[GMT_IN]->n_tables; tbl++) {
n_in_tbl = 0;
- D[GMT_OUT]->table[tbl]->segment = gmt_M_memory (GMT, NULL, D[GMT_IN]->table[tbl]->n_segments, struct GMT_DATASEGMENT *); /* Inital (and max) allocation of segments */
+ D[GMT_OUT]->table[tbl]->segment = gmt_M_memory (GMT, NULL, D[GMT_IN]->table[tbl]->n_segments, struct GMT_DATASEGMENT *); /* Initial (and max) allocation of segments */
for (seg_in = seg_out = 0; seg_in < D[GMT_IN]->table[tbl]->n_segments; seg_in++) {
S[GMT_IN] = D[GMT_IN]->table[tbl]->segment[seg_in];
/* If input segment is a closed polygon then the simplified segment must have at least 4 points, else 3 is enough */
diff --git a/src/gmtspatial.c b/src/gmtspatial.c
index 2a13882..1e71143 100644
--- a/src/gmtspatial.c
+++ b/src/gmtspatial.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
-* $Id: gmtspatial.c 16904 2016-08-13 22:21:14Z pwessel $
+* $Id: gmtspatial.c 17560 2017-02-17 22:05:42Z pwessel $
*
-* Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+* Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -265,7 +265,7 @@ GMT_LOCAL void write_record (struct GMT_CTRL *GMT, double **R, uint64_t n, uint6
uint64_t c;
double out[GMT_MAX_COLUMNS];
for (c = 0; c < n; c++) out[c] = R[c][p];
- GMT_Put_Record (GMT->parent, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (GMT->parent, GMT_WRITE_DATA, out);
}
GMT_LOCAL int is_duplicate (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S, struct GMT_DATASET *D, struct DUP *I, struct DUP_INFO **L) {
@@ -314,7 +314,7 @@ GMT_LOCAL int is_duplicate (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S, str
/* We first want to obtain the mean distance from one segment to all others. We do this by computing the
* nearest distance from each point along our segment S to the other segments and compute the average of
- * all those distances. Then we reverse teh search and continue to accumulate averages */
+ * all those distances. Then we reverse the search and continue to accumulate averages */
/* Process each point along the trace in S and find sum of nearest distances for each segment in table */
for (row = 0; row < S->n_rows; row++) {
@@ -429,7 +429,7 @@ GMT_LOCAL int is_duplicate (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *S, str
D->table[tbl]->segment[seg]->mode = 0; /* Remove this temporary flag */
Sp = D->table[tbl]->segment[seg]; /* This is S', one of the segments that is close to S */
- if (S->n_rows == Sp->n_rows) { /* Exacly the same number of data points; check for identical duplicate (possibly reversed) */
+ if (S->n_rows == Sp->n_rows) { /* Exactly the same number of data points; check for identical duplicate (possibly reversed) */
for (row = 0, d1 = d2 = 0.0; row < S->n_rows; row++) { /* Compare each point along the trace in S and Sp and S and Sp-reversed */
d1 += gmt_distance (GMT, S->data[GMT_X][row], S->data[GMT_Y][row], Sp->data[GMT_X][row], Sp->data[GMT_Y][row]);
d2 += gmt_distance (GMT, S->data[GMT_X][row], S->data[GMT_Y][row], Sp->data[GMT_X][S->n_rows-row-1], Sp->data[GMT_Y][S->n_rows-row-1]);
@@ -1105,6 +1105,10 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
gmt_M_free (GMT, NN_dist); gmt_M_free (GMT, NN_info);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, NN_dist); gmt_M_free (GMT, NN_info);
+ Return (API->error);
+ }
if (Ctrl->A.mode) { /* Need to combine close neighbors until minimum distance >= min_dist, then output revised dataset */
n = 0;
while (n < n_points && NN_dist[n].distance < Ctrl->A.min_dist) n++;
@@ -1177,7 +1181,7 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
out[col++] = NN_dist[k].distance;
out[col++] = (double)NN_dist[k].ID;
out[col++] = (double)NN_dist[k].neighbor;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write area or length to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write area or length to output */
}
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) {
d_bar /= n_points;
@@ -1219,6 +1223,9 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, geometry) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
for (tbl = 0; tbl < D->n_tables; tbl++) {
for (seg = 0; seg < D->table[tbl]->n_segments; seg++) {
S = D->table[tbl]->segment[seg];
@@ -1281,7 +1288,7 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
if (gmt_M_is_geographic (GMT, GMT_IN)) gmt_init_distaz (GMT, Ctrl->Q.unit, Ctrl->Q.dmode, GMT_MAP_DIST); /* Default is m using great-circle distances */
if (Ctrl->Q.header) { /* Add line length or polygon area stuff to segment header */
- qmode = Ctrl->Q.mode; /* Dont know if line or polygon but passing GMT_IS_POLY would close any open polygon, which we want with +p */
+ qmode = Ctrl->Q.mode; /* Don't know if line or polygon but passing GMT_IS_POLY would close any open polygon, which we want with +p */
GMT->current.io.multi_segments[GMT_OUT] = true; /* To ensure we can write headers */
}
else {
@@ -1309,6 +1316,9 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
}
for (tbl = 0; tbl < D->n_tables; tbl++) {
@@ -1358,12 +1368,12 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
}
if (poly && Ctrl->E.active && handedness != Ctrl->E.mode) { /* Must reverse line */
for (row_f = 0, row_l = Sout->n_rows - 1; row_f < Sout->n_rows/2; row_f++, row_l--) {
- for (col = 0; col < Sout->n_columns; col++) double_swap (Sout->data[col][row_f], Sout->data[col][row_l]);
+ for (col = 0; col < Sout->n_columns; col++) gmt_M_double_swap (Sout->data[col][row_f], Sout->data[col][row_l]);
}
handedness = Ctrl->E.mode;
}
if (!new_data) /* Just write centroid and area|length to output */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
if (Ctrl->Q.header || Ctrl->E.active) { /* Must write out a revised dataset */
@@ -1440,6 +1450,9 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, wtype, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, geometry) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
wrap = (gmt_M_is_geographic (GMT, GMT_IN) && GMT->common.R.active && gmt_M_360_range (GMT->common.R.wesn[XLO], GMT->common.R.wesn[XHI]));
sprintf (fmt, "%s%s%s%s%s%s%s%s%%s%s%%s\n", GMT->current.setting.format_float_out, GMT->current.setting.io_col_separator, GMT->current.setting.format_float_out, \
@@ -1497,7 +1510,7 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
GMT_Put_Record (API, GMT_WRITE_SEGMENT_HEADER, NULL);
first = false;
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
/* Always output crossover point */
if (first && GMT->current.io.multi_segments[GMT_OUT]) { /* Must find unique edges to output only once */
@@ -1510,7 +1523,7 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
}
for (col = 2; col < S2->n_columns; col++) out[col] = 0.0;
out[GMT_X] = xx[px]; out[GMT_Y] = yy[px];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
px++;
in = !in; /* Go from out to in or vice versa */
if (!in) first = true; /* Since we went outside */
@@ -1527,7 +1540,7 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
GMT_Put_Record (API, GMT_WRITE_SEGMENT_HEADER, NULL);
first = false;
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
go = false;
}
@@ -1564,7 +1577,7 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
}
for (row = 0; row < S2->n_rows; row++) {
for (col = 0; col < S2->n_columns; col++) out[col] = S2->data[col][row];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
}
}
@@ -1632,6 +1645,9 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
gmt_free_segment (GMT, &S2);
Return (API->error); /* Enables data output and sets access mode */
}
+ if (GMT_Set_Geometry (API, GMT_OUT, C->geometry) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
Info = gmt_M_memory (GMT, NULL, C->n_tables, struct DUP_INFO *);
for (tbl = 0; tbl < C->n_tables; tbl++) Info[tbl] = gmt_M_memory (GMT, NULL, C->table[tbl]->n_segments, struct DUP_INFO);
@@ -1765,11 +1781,17 @@ int GMT_gmtspatial (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_TEXTSET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
}
else { /* Regular data output */
if (GMT_Init_IO (API, GMT_IS_DATASET, GMT_IS_LINE, GMT_OUT, GMT_ADD_DEFAULT, 0, options) != GMT_NOERROR) { /* Registers default output destination, unless already set */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_LINE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
}
if (Ctrl->N.mode == 2) gmt_adjust_dataset (GMT, D, D->n_columns + 1); /* Add one more output column */
diff --git a/src/gmtswitch b/src/gmtswitch
index 9e9e796..22a85df 100755
--- a/src/gmtswitch
+++ b/src/gmtswitch
@@ -1,8 +1,8 @@
#!/bin/bash
#
-# $Id: gmtswitch 13979 2015-01-24 23:13:37Z pwessel $
+# $Id: gmtswitch 17450 2017-01-16 21:34:35Z pwessel $
#
-# Copyright (c) 1991-2015 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
@@ -76,7 +76,7 @@ home=`pwd`
if [ ! -f "$home/.gmtversions" ]; then # No .gmtversions exists yet, first do that part
cat << EOF >&2
-GMTSWITCH $Revision: 13979 $
+GMTSWITCH $Revision: 17450 $
gmtswitch helps you modify your environment to allow for the switching back and
forth between several GMT versions, in particular GMT 5 and previous GMT
@@ -127,7 +127,7 @@ If $home contains spaces places the the above within double quotes.
You will have to manually add the path to the GMT directory since
it is not considered an official release.
-After makeing these edits you must logout and back in again.
+After making these edits you must logout and back in again.
The next time you run gmtswitch you may do the switching.
EOF
exit
diff --git a/src/gmtswitch.bat b/src/gmtswitch.bat
index 46a12ae..77bd1de 100755
--- a/src/gmtswitch.bat
+++ b/src/gmtswitch.bat
@@ -1,8 +1,8 @@
@ECHO OFF
REM
-REM $Id: gmtswitch.bat 15757 2016-02-24 23:25:49Z pwessel $
+REM $Id: gmtswitch.bat 17449 2017-01-16 21:27:04Z pwessel $
REM
-REM Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+REM Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
REM See LICENSE.TXT file for copying and redistribution conditions.
REM
REM This program is free software; you can redistribute it and/or modify
diff --git a/src/gmtvector.c b/src/gmtvector.c
index 81d2d41..ade54ee 100644
--- a/src/gmtvector.c
+++ b/src/gmtvector.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
-* $Id: gmtvector.c 16555 2016-06-16 22:49:46Z pwessel $
+* $Id: gmtvector.c 17449 2017-01-16 21:27:04Z pwessel $
*
-* Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+* Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
diff --git a/src/gmtwhich.c b/src/gmtwhich.c
index 85cd389..5ab5b40 100644
--- a/src/gmtwhich.c
+++ b/src/gmtwhich.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtwhich.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmtwhich.c 17503 2017-01-30 23:14:43Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -156,6 +156,9 @@ int GMT_gmtwhich (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_TEXTSET, GMT_OUT, GMT_HEADER_OFF) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if (Ctrl->D.active && (getcwd (cwd, GMT_BUFSIZ) == NULL)) { /* Get full path, even for current dir */
GMT_Report (API, GMT_MSG_VERBOSE, "Unable to determine current working directory!\n");
diff --git a/src/gmtwrite.c b/src/gmtwrite.c
index 76b01e1..8c30af7 100644
--- a/src/gmtwrite.c
+++ b/src/gmtwrite.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtwrite.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmtwrite.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/grd2cpt.c b/src/grd2cpt.c
index 25aa0ed..d2baf01 100644
--- a/src/grd2cpt.c
+++ b/src/grd2cpt.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grd2cpt.c 16793 2016-07-13 23:30:30Z pwessel $
+ * $Id: grd2cpt.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -78,8 +78,9 @@ struct GRD2CPT_CTRL {
bool active;
double z_low, z_high;
} G;
- struct I { /* -I */
+ struct I { /* -I[z][c] */
bool active;
+ unsigned int mode;
} I;
struct L { /* -L<min_limit>/<max_limit> */
bool active;
@@ -135,8 +136,8 @@ GMT_LOCAL void Free_Ctrl (struct GMT_CTRL *GMT, struct GRD2CPT_CTRL *C) { /* Dea
GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
gmt_show_name_and_purpose (API, THIS_MODULE_LIB, THIS_MODULE_NAME, THIS_MODULE_PURPOSE);
if (level == GMT_MODULE_PURPOSE) return (GMT_NOERROR);
- GMT_Message (API, GMT_TIME_NONE, "usage: grd2cpt <grid> [-A[+]<transparency>] [-C<cpt>] [-D[i|o]] [-E[<nlevels>]] [-F[R|r|h|c][+c]]\n");
- GMT_Message (API, GMT_TIME_NONE, "\t[-G<zlo>/<zhi>] [-I] [-L<min_limit>/<max_limit>] [-M] [-N] [-Q[i|o]]\n\t[%s] [-S<z_start>/<z_stop>/<z_inc> or -S<n>]\n\t[-T<-|+|=|_>] [%s] [-Z]\n\n", GMT_Rgeo_OPT, GMT_V_OPT);
+ GMT_Message (API, GMT_TIME_NONE, "usage: grd2cpt <grid> [-A[+]<transparency>] [-C<cpt>] [-D[i]] [-E[<nlevels>]] [-F[R|r|h|c][+c]]\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t[-G<zlo>/<zhi>] [-I[c][z]] [-L<min_limit>/<max_limit>] [-M] [-N] [-Q[i|o]]\n\t[%s] [-S<z_start>/<z_stop>/<z_inc> or -S<n>]\n\t[-T<-|+|=|_>] [%s] [-W] [-Z]\n\n", GMT_Rgeo_OPT, GMT_V_OPT);
if (level == GMT_SYNOPSIS) return (GMT_MODULE_SYNOPSIS);
@@ -153,8 +154,10 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t r for r/g/b only, h for h-s-v, c for c/m/y/k) [Default uses the input model]\n");
GMT_Message (API, GMT_TIME_NONE, "\t Append +c to output a discrete CPT in categorical CPT format.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-G Truncate incoming CPT to be limited to the z-range <zlo>/<zhi>.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t To accept one if the incoming limits, set to other to NaN.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t-I Reverse the sense of the color table as well as back- and foreground color.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t To accept one of the incoming limits, set that limit to NaN.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-I Reverse sense of CPT in one or two ways:\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t -Ic Reverse sense of color table as well as back- and foreground color [Default].\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t -Iz Reverse sign of z-values in the color table (takes affect before -G, T are consulted).\n");
GMT_Message (API, GMT_TIME_NONE, "\t-L Limit the range of the data. Node values outside this range are set to NaN.\n");
GMT_Message (API, GMT_TIME_NONE, "\t [Default uses actual min,max of data].\n");
GMT_Message (API, GMT_TIME_NONE, "\t-M Use GMT defaults to set back-, foreground, and NaN colors [Default uses color table].\n");
@@ -251,8 +254,10 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct GRD2CPT_CTRL *Ctrl, struct GMT
n_errors += gmt_M_check_condition (GMT, gmt_M_is_dnan (Ctrl->G.z_low) && gmt_M_is_dnan (Ctrl->G.z_high),
"Syntax error -G option: Both of z_low/z_high cannot be NaN\n");
break;
- case 'I': /* Reverse scale */
+ case 'I': /* Invert table */
Ctrl->I.active = true;
+ if ((Ctrl->I.mode = gmt_parse_inv_cpt (GMT, opt->arg)) == UINT_MAX)
+ n_errors++;
break;
case 'L': /* Limit data range */
Ctrl->L.active = true;
@@ -405,11 +410,20 @@ int GMT_grd2cpt (void *V_API, int mode, void *args) {
if (!Ctrl->E.active) Ctrl->E.levels = (Ctrl->S.n_levels > 0) ? Ctrl->S.n_levels : GRD2CPT_N_LEVELS; /* Default number of levels */
if (Ctrl->M.active) cpt_flags |= GMT_CPT_NO_BNF; /* bit 0 controls if BFN is determined by parameters */
if (Ctrl->D.mode == 2) cpt_flags |= GMT_CPT_EXTEND_BNF; /* bit 1 controls if BF will be set to equal bottom/top rgb value */
+ if (Ctrl->Z.active) cpt_flags |= GMT_CPT_CONTINUOUS; /* Controls if final CPT should be continuous in case input is a list of colors */
if ((Pin = GMT_Read_Data (API, GMT_IS_PALETTE, GMT_IS_FILE, GMT_IS_NONE, cpt_flags, NULL, Ctrl->C.file, NULL)) == NULL) {
Return (API->error);
}
- if (Ctrl->G.active) Pin = gmt_truncate_cpt (GMT, Pin, Ctrl->G.z_low, Ctrl->G.z_high); /* Possibly truncate the CPT */
+ if (Ctrl->I.mode & GMT_CPT_Z_REVERSE) /* Must reverse the z-values before anything else */
+ gmt_scale_cpt (GMT, Pin, -1.0);
+
+ if (Ctrl->G.active) { /* Attempt truncation */
+ struct GMT_PALETTE *Ptrunc = gmt_truncate_cpt (GMT, Pin, Ctrl->G.z_low, Ctrl->G.z_high); /* Possibly truncate the CPT */
+ if (Ptrunc == NULL)
+ Return (EXIT_FAILURE);
+ Pin = Ptrunc;
+ }
GMT_Report (API, GMT_MSG_VERBOSE, "Processing input grid(s)\n");
@@ -502,9 +516,9 @@ int GMT_grd2cpt (void *V_API, int mode, void *args) {
if (Ctrl->E.active && Ctrl->E.levels == 0) { /* Use existing CPT structure, just linearly change z */
if ((Pout = GMT_Duplicate_Data (API, GMT_IS_PALETTE, GMT_DUPLICATE_ALLOC, Pin)) == NULL) return (API->error);
- gmt_stretch_cpt (GMT, Pout, Ctrl->L.min, Ctrl->L.max, Ctrl->Z.active);
- if (Ctrl->I.active)
- gmt_invert_cpt (GMT, Pout);
+ gmt_stretch_cpt (GMT, Pout, Ctrl->L.min, Ctrl->L.max);
+ if (Ctrl->I.mode & GMT_CPT_C_REVERSE)
+ gmt_invert_cpt (GMT, Pout); /* Also flip the colors */
cpt_flags = 0;
if (Ctrl->N.active) cpt_flags |= GMT_CPT_NO_BNF; /* bit 0 controls if BFN will be written out */
if (Ctrl->D.mode == 1) cpt_flags |= GMT_CPT_EXTEND_BNF; /* bit 1 controls if BF will be set to equal bottom/top rgb value */
diff --git a/src/grd2rgb.c b/src/grd2rgb.c
index 9bfff87..1535c8c 100644
--- a/src/grd2rgb.c
+++ b/src/grd2rgb.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grd2rgb.c 17008 2016-08-25 20:42:30Z pwessel $
+ * $Id: grd2rgb.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -209,7 +209,7 @@ GMT_LOCAL int guess_width (struct GMT_CTRL *GMT, char *file, unsigned int byte_p
if ((*raw_nx) * (*raw_ny) != n_pix) {
/* Let's make another attempt to find the right n_columns * n_rows combination. The idea is that we
- failed by a little, so we'll look arround the approximate solution by adding 1 to n_columns and
+ failed by a little, so we'll look around the approximate solution by adding 1 to n_columns and
subtracting 1 to n_rows. Then we revert (subtract 1 to n_columns and add 1 to n_rows). Next apply the
same test with an offset of 2, and so on until the offset is 10. */
GMT_Report (GMT->parent, GMT_MSG_VERBOSE, "Warning: first test based on FFT failed to guess image dimensions.\n\tI'll do now a second try\t");
@@ -394,7 +394,7 @@ int GMT_grd2rgb (void *V_API, int mode, void *args) {
struct GMT_GRID *Grid = NULL, *Out = NULL;
struct GMT_PALETTE *P = NULL;
struct GRD2RGB_CTRL *Ctrl = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL;
struct GMT_OPTION *options = NULL;
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
diff --git a/src/grd2sph.c.template b/src/grd2sph.c.template
index a9a58f2..15946c0 100644
--- a/src/grd2sph.c.template
+++ b/src/grd2sph.c.template
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grd2sph.c.template 16240 2016-04-16 01:10:03Z pwessel $
+ * $Id: grd2sph.c.template 17450 2017-01-16 21:34:35Z pwessel $
*
- * Copyright (c) 1991-2015 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/grd2xyz.c b/src/grd2xyz.c
index 5c40fbb..76fa26c 100644
--- a/src/grd2xyz.c
+++ b/src/grd2xyz.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grd2xyz.c 16725 2016-07-06 19:36:45Z pwessel $
+ * $Id: grd2xyz.c 17588 2017-02-23 23:35:14Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -273,6 +273,9 @@ int GMT_grd2xyz (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT != GMT_NOERROR)) { /* Sets output geometry */
+ Return (API->error);
+ }
out[3] = Ctrl->W.weight;
@@ -306,7 +309,7 @@ int GMT_grd2xyz (void *V_API, int mode, void *args) {
GMT->common.b.active[GMT_OUT] = io.binary; /* May have to set binary as well */
GMT->current.setting.io_lonlat_toggle[GMT_OUT] = false; /* Since no x,y involved here */
if (GMT->current.setting.io_nan_mode && GMT->current.io.io_nan_col[0] == GMT_Z)
- {rst = true; GMT->current.io.io_nan_col[0] = GMT_X;} /* Since we dont do xy here, only z */
+ {rst = true; GMT->current.io.io_nan_col[0] = GMT_X;} /* Since we don't do xy here, only z */
for (ij = 0; ij < io.n_expected; ij++) {
ij_gmt = io.get_gmt_ij (&io, G, ij); /* Get the corresponding grid node */
d_value = G->data[ij_gmt];
@@ -315,8 +318,8 @@ int GMT_grd2xyz (void *V_API, int mode, void *args) {
d_value = GMT->common.d.nan_proxy[GMT_OUT];
else if (gmt_z_input_is_nan_proxy (GMT, GMT_Z, d_value)) /* The inverse: Grid node is nan-proxy and -di was set, so change to NaN */
d_value = GMT->session.d_NaN;
- write_error = GMT_Put_Record (API, GMT_WRITE_DOUBLE, &d_value);
- if (write_error != 0) n_suppressed++; /* Bad value caught by -s[r] */
+ write_error = GMT_Put_Record (API, GMT_WRITE_DATA, &d_value);
+ if (write_error == GMT_NOTSET) n_suppressed++; /* Bad value caught by -s[r] */
}
GMT->current.io.output = save; /* Reset pointer */
GMT->common.b.active[GMT_OUT] = previous; /* Reset binary */
@@ -439,8 +442,8 @@ int GMT_grd2xyz (void *V_API, int mode, void *args) {
else if (gmt_z_input_is_nan_proxy (GMT, GMT_Z, out[GMT_Z]))
out[GMT_Z] = GMT->session.d_NaN;
}
- write_error = GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
- if (write_error != 0) n_suppressed++; /* Bad value caught by -s[r] */
+ write_error = GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
+ if (write_error == GMT_NOTSET) n_suppressed++; /* Bad value caught by -s[r] */
}
gmt_M_free (GMT, x);
gmt_M_free (GMT, y);
diff --git a/src/grdblend.c b/src/grdblend.c
index e567757..94f2b16 100644
--- a/src/grdblend.c
+++ b/src/grdblend.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdblend.c 16931 2016-08-18 21:40:44Z pwessel $
+ * $Id: grdblend.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/grdclip.c b/src/grdclip.c
index def49e2..e9c3f4e 100644
--- a/src/grdclip.c
+++ b/src/grdclip.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdclip.c 17193 2016-10-15 14:13:09Z jluis $
+ * $Id: grdclip.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/grdcontour.c b/src/grdcontour.c
index 21af579..41fbb26 100644
--- a/src/grdcontour.c
+++ b/src/grdcontour.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdcontour.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: grdcontour.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -314,12 +314,12 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct GRDCONTOUR_CTRL *Ctrl, struct
case 'A': /* Annotation control */
Ctrl->A.active = true;
if (gmt_contlabel_specs (GMT, opt->arg, &Ctrl->contour)) {
- GMT_Report (API, GMT_MSG_NORMAL, "Syntax error -A option: Expected\n\t-A[-|<aint>][+a<angle>|n|p[u|d]][+c<dx>[/<dy>]][+d][+e][+f<font>][+g<fill>][+j<just>][+l<label>][+n|N<dx>[/<dy>]][+o][+p<pen>][+r<min_rc>][+t[<file>]][+u<unit>][+v][+w<width>][+=<prefix>]\n");
+ GMT_Report (API, GMT_MSG_NORMAL, "Syntax error -A option: Expected\n\t-A[-|[+]<aint>][+a<angle>|n|p[u|d]][+c<dx>[/<dy>]][+d][+e][+f<font>][+g<fill>][+j<just>][+l<label>][+n|N<dx>[/<dy>]][+o][+p<pen>][+r<min_rc>][+t[<file>]][+u<unit>][+v][+w<width>][+=<prefix>]\n");
n_errors ++;
}
else if (opt->arg[0] == '-')
Ctrl->A.mode = 1; /* Turn off all labels */
- else if (opt->arg[0] == '+') {
+ else if (opt->arg[0] == '+' && (isdigit(opt->arg[1]) || opt->arg[1] == '.')) {
Ctrl->A.single_cont = atof (&opt->arg[1]);
Ctrl->contour.annot = true;
}
@@ -835,7 +835,7 @@ int GMT_grdcontour (void *V_API, int mode, void *args) {
struct GMT_PALETTE *P = NULL;
struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL;
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -932,7 +932,7 @@ int GMT_grdcontour (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_VERBOSE, "Subtracting %g and multiplying grid by %g\n", Ctrl->Z.offset, Ctrl->Z.scale);
G->header->z_min = (G->header->z_min - Ctrl->Z.offset) * Ctrl->Z.scale;
G->header->z_max = (G->header->z_max - Ctrl->Z.offset) * Ctrl->Z.scale;
- if (Ctrl->Z.scale < 0.0) double_swap (G->header->z_min, G->header->z_max);
+ if (Ctrl->Z.scale < 0.0) gmt_M_double_swap (G->header->z_min, G->header->z_max);
/* Since gmt_scale_and_offset_f applies z' = z * scale + offset we must adjust Z.offset first: */
Ctrl->Z.offset *= Ctrl->Z.scale;
gmt_scale_and_offset_f (GMT, G->data, G->header->size, Ctrl->Z.scale, -Ctrl->Z.offset);
diff --git a/src/grdconvert.c b/src/grdconvert.c
index b923185..482262d 100644
--- a/src/grdconvert.c
+++ b/src/grdconvert.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdconvert.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdconvert.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -194,7 +194,7 @@ int GMT_grdconvert (void *V_API, int mode, void *args) {
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) {
if (Ctrl->IO.file[0][0] == '=') strcpy (fname[0], "<stdin>");
if (Ctrl->IO.file[1][0] == '=') strcpy (fname[1], "<stdout>");
- GMT_Report (API, GMT_MSG_VERBOSE, "Translating file %s (format %s)\nto file %s (format %s)\n",
+ GMT_Report (API, GMT_MSG_VERBOSE, "Translating file %s (format %s) to file %s (format %s)\n",
fname[0], GMT->session.grdformat[type[0]], fname[1], GMT->session.grdformat[type[1]]);
if (hmode && GMT->session.grdformat[type[1]][0] != 'c' && GMT->session.grdformat[type[1]][0] != 'n')
GMT_Report (API, GMT_MSG_NORMAL, "No grd header will be written\n");
diff --git a/src/grdcut.c b/src/grdcut.c
index c12d138..b94a58c 100644
--- a/src/grdcut.c
+++ b/src/grdcut.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdcut.c 16798 2016-07-14 19:03:58Z pwessel $
+ * $Id: grdcut.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -517,13 +517,22 @@ int GMT_grdcut (void *V_API, int mode, void *args) {
if (outside[XHI]) pad[XHI] += urint ((wesn_requested[XHI] - G->header->wesn[XHI]) * G->header->r_inc[GMT_X]);
if (outside[YLO]) pad[YLO] += urint ((G->header->wesn[YLO] - wesn_requested[YLO]) * G->header->r_inc[GMT_Y]);
if (outside[YHI]) pad[YHI] += urint ((wesn_requested[YHI] - G->header->wesn[YHI]) * G->header->r_inc[GMT_Y]);
- gmt_M_grd_setpad (GMT, G->header, pad); /* Set the active pad */
gmt_M_memcpy (GMT->current.io.pad, pad, 4, unsigned int); /* Change default pad */
- gmt_set_grddim (GMT, G->header); /* Update dimensions given the change of pad */
+ if (!gmt_M_file_is_memory (Ctrl->In.file)) { /* If a memory grid we end up duplicating below so only do this in the other cases */
+ gmt_M_grd_setpad (GMT, G->header, pad); /* Set the active pad before reading */
+ gmt_set_grddim (GMT, G->header); /* Update dimensions given the change of pad */
+ }
}
- if (GMT_Read_Data (API, GMT_IS_GRID, GMT_IS_FILE, GMT_IS_SURFACE, GMT_GRID_DATA_ONLY | add_mode, wesn_new, Ctrl->In.file, G) == NULL) { /* Get subset */
+ if (GMT_Read_Data (API, GMT_IS_GRID, GMT_IS_FILE, GMT_IS_SURFACE, GMT_GRID_DATA_ONLY | add_mode, wesn_new, Ctrl->In.file, G) == NULL) { /* Get subset (unless memory file) */
Return (API->error);
}
+ if (gmt_M_file_is_memory (Ctrl->In.file) && (Ctrl->N.active || gmt_M_file_is_memory (Ctrl->G.file))) {
+ /* Cannot manipulate the same grid in two different ways so we must make a duplicate of the input grid */
+ struct GMT_GRID *G_dup = NULL; /* For the duplicate; we eliminate any unnecessary padding using GMT_DUPLICATE_RESET */
+ if ((G_dup = GMT_Duplicate_Data (API, GMT_IS_GRID, GMT_DUPLICATE_DATA | GMT_DUPLICATE_RESET, G)) == NULL)
+ Return (API->error);
+ G = G_dup; /* Since G was not allocated here anyway - it came from the outside and will be deleted there */
+ }
if (Ctrl->N.active && extend) { /* Now shrink pad back to default and simultaneously extend region and apply nodata values */
unsigned int xlo, xhi, ylo, yhi, row, col;
gmt_M_memcpy (G->header->wesn, wesn_requested, 4, double);
diff --git a/src/grdedit.c b/src/grdedit.c
index 3014004..9be26d0 100644
--- a/src/grdedit.c
+++ b/src/grdedit.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdedit.c 17160 2016-10-03 16:21:37Z pwessel $
+ * $Id: grdedit.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -354,7 +354,7 @@ int GMT_grdedit (void *V_API, int mode, void *args) {
n_data = n_use = 0;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all table and segment headers */
diff --git a/src/grdfft.c b/src/grdfft.c
index dcf9391..66392eb 100644
--- a/src/grdfft.c
+++ b/src/grdfft.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdfft.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdfft.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -38,7 +38,7 @@
#define GMT_FFT_DIM 2 /* Dimension of FFT needed */
#ifdef DEBUG
-/* For debuging -E; running this in debug and setting it to true will also output the number of estimates per radial k */
+/* For debugging -E; running this in debug and setting it to true will also output the number of estimates per radial k */
static bool show_n = false;
#endif
diff --git a/src/grdfilter.c b/src/grdfilter.c
index d08150c..ab3ad4a 100644
--- a/src/grdfilter.c
+++ b/src/grdfilter.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdfilter.c 16986 2016-08-22 18:42:56Z pwessel $
+ * $Id: grdfilter.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -140,7 +140,7 @@ enum Grdfilter_mode {
#define GRDFILTER_X_DIST 5
#define GRDFILTER_Y_DIST 6
-#define GRDFILTER_FILTERS "bcgfhompLlUu" /* These dont have to be in any order */
+#define GRDFILTER_FILTERS "bcgfhompLlUu" /* These don't have to be in any order */
#define GRDFILTER_MODES "012345p"
/* Distance modes: */
@@ -285,7 +285,7 @@ GMT_LOCAL double GMT_histmode (struct GMT_CTRL *GMT, double *z, uint64_t n, stru
B->icount[bin]++; /* Add up counts */
if (B->icount[bin] > mode_count) { /* New max count value; make a note */
mode_count = B->icount[bin]; /* Highest count so far... */
- mode_bin = bin; /* ...occuring for this bin */
+ mode_bin = bin; /* ...occurring for this bin */
n_modes = 1; /* Only one of these so far */
}
else if (B->icount[bin] == mode_count) n_modes++; /* Bin has same peak as previous best mode; increase mode count */
@@ -335,7 +335,7 @@ GMT_LOCAL double GMT_histmode_weighted (struct GMT_CTRL *GMT, struct GMT_OBSERVA
B->fcount[bin] += data[i].weight; /* Add up weights */
if (B->fcount[bin] > mode_count) { /* New max weight value; make a note */
mode_count = B->fcount[bin]; /* Highest count so far... */
- mode_bin = bin; /* ...occuring for this bin */
+ mode_bin = bin; /* ...occurring for this bin */
n_modes = 1; /* Only one of these so far */
}
else if (doubleAlmostEqual (B->fcount[bin], mode_count)) n_modes++; /* Bin has same peak as previous best mode; increase mode count */
@@ -1336,7 +1336,7 @@ GMT_LOCAL void threaded_function (struct THREAD_STRUCT *t) {
struct FILTER_INFO F = t->F;
struct GRDFILTER_BIN_MODE_INFO *B = t->B;
- /* We need a local copy of these becuase they are modified in this function */
+ /* We need a local copy of these because they are modified in this function */
visit = gmt_M_memory (GMT, NULL, Gin->header->n_columns, char);
if (!weight)
weight = gmt_M_memory(GMT, NULL, F.n_columns*F.n_rows, double); /* Allocate space for convolution grid */
diff --git a/src/grdfilter_mt.c b/src/grdfilter_mt.c
index c6a6727..3b78fea 100644
--- a/src/grdfilter_mt.c
+++ b/src/grdfilter_mt.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdfilter_mt.c 16986 2016-08-22 18:42:56Z pwessel $
+ * $Id: grdfilter_mt.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/grdgradient.c b/src/grdgradient.c
index 2d0e2aa..929d60b 100644
--- a/src/grdgradient.c
+++ b/src/grdgradient.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdgradient.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: grdgradient.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -101,7 +101,7 @@ GMT_LOCAL double specular (double n_columns, double n_rows, double nz, double *s
R = SPECULAR(Nx,Ny,Nz,S,V) returns the reflectance of a surface with
normal vector components [Nx,Ny,Nz]. S and V specify the direction
to the light source and to the viewer, respectively.
- For the time beeing I'm using V = [azim elev] = [0 90] so the following
+ For the time being I'm using V = [azim elev] = [0 90] so the following
V[0] = sind(V[0])*cosd(V[1]);
V[1] = -cosd(V[0])*cosd(V[1]);
diff --git a/src/grdhisteq.c b/src/grdhisteq.c
index cbf84b2..55ae900 100644
--- a/src/grdhisteq.c
+++ b/src/grdhisteq.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdhisteq.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdhisteq.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -251,7 +251,7 @@ GMT_LOCAL int do_hist_equalization (struct GMT_CTRL *GMT, struct GMT_GRID *Grid,
if (dump_intervals) { /* Write records to file or stdout */
out[GMT_X] = (double)Grid->data[i]; out[GMT_Y] = (double)Grid->data[j]; out[GMT_Z] = (double)current_cell;
- GMT_Put_Record (GMT->parent, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (GMT->parent, GMT_WRITE_DATA, out);
}
i = j;
@@ -395,6 +395,9 @@ int GMT_grdhisteq (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
}
if ((error = do_hist_equalization (GMT, Out, Ctrl->G.file, Ctrl->C.value, Ctrl->Q.active, Ctrl->D.active)) != 0) Return (GMT_RUNTIME_ERROR); /* Read error */
/* do_hist_equalization will also call GMT_End_IO if Ctrl->D.active was true */
diff --git a/src/grdimage.c b/src/grdimage.c
index 60a885f..f2addd4 100644
--- a/src/grdimage.c
+++ b/src/grdimage.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdimage.c 17153 2016-09-30 23:41:38Z jluis $
+ * $Id: grdimage.c 17485 2017-01-23 13:20:10Z jluis $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -456,10 +456,10 @@ int GMT_grdimage (void *V_API, int mode, void *args) {
bool done, need_to_project, normal_x, normal_y, resampled = false, gray_only = false;
bool nothing_inside = false, use_intensity_grid;
bool do_indexed = false;
- unsigned int k, n_columns = 0, n_rows = 0, grid_registration = GMT_GRID_NODE_REG, n_grids;
+ unsigned int n_columns = 0, n_rows = 0, grid_registration = GMT_GRID_NODE_REG, n_grids;
unsigned int colormask_offset = 0, try, row, actual_row, col;
uint64_t node_RGBA = 0; /* uint64_t for the RGB(A) image array. */
- uint64_t node, kk, byte, dim[3] = {0, 0, 3};
+ uint64_t node, k, kk, byte, dim[3] = {0, 0, 3};
int index = 0, ks, error = 0;
char *img_ProjectionRefPROJ4 = NULL, *way[2] = {"via GDAL", "directly"};
@@ -473,9 +473,9 @@ int GMT_grdimage (void *V_API, int mode, void *args) {
struct GMT_GRID *Intens_orig = NULL, *Intens_proj = NULL;
struct GMT_PALETTE *P = NULL;
struct GRDIMAGE_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMT_GRID_HEADER *header_work = NULL; /* Pointer to a GMT header for the image or grid */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
@@ -834,6 +834,17 @@ int GMT_grdimage (void *V_API, int mode, void *args) {
if (P && P->has_pattern) GMT_Report (API, GMT_MSG_VERBOSE, "Warning: Patterns in CPT will be ignored\n");
+ NaN_rgb = (P) ? P->bfn[GMT_NAN].rgb : GMT->current.setting.color_patch[GMT_NAN];
+ if (Ctrl->Q.active) { /* Want colormask via NaN entries */
+ if (gray_only) {
+ GMT_Report (API, GMT_MSG_VERBOSE, "Your image is grayscale only but -Q requires 24-bit; image will be expanded to 24-bit.\n");
+ gray_only = false;
+ NaN_rgb = red; /* Arbitrarily pick red as the NaN color since the entire image is gray only */
+ gmt_M_memcpy (P->bfn[GMT_NAN].rgb, red, 4, double);
+ }
+ if (!Ctrl->A.return_image) rgb_used = gmt_M_memory (GMT, NULL, 256*256*256, unsigned char); /* Keep track of which colors we encounter */
+ }
+
if (Ctrl->A.active) { /* We desire a raster image, not a PostScript plot */
int id, k;
unsigned int this_proj = GMT->current.proj.projection;
@@ -855,8 +866,11 @@ int GMT_grdimage (void *V_API, int mode, void *args) {
img_wesn[YLO] -= 0.5 * img_inc[1]; img_wesn[YHI] += 0.5 * img_inc[1];
}
if (Ctrl->Q.active) dim[GMT_Z]++; /* Flag to remind us that we need to allocate a transparency array */
- if ((Out = GMT_Create_Data(API, GMT_IS_IMAGE, GMT_IS_SURFACE, GMT_GRID_ALL, dim, img_wesn, img_inc, 1, 0, NULL)) == NULL)
+ if ((Out = GMT_Create_Data(API, GMT_IS_IMAGE, GMT_IS_SURFACE, GMT_GRID_ALL, dim, img_wesn, img_inc, 1, 0, NULL)) == NULL) {
+ if (Ctrl->Q.active) gmt_M_free (GMT, rgb_used);
Return(API->error); /* Well, no luck with that allocation */
+ }
+
//strncpy (Out->header->mem_layout, "TRPa", 4); /* Set the array memory layout */
/* See if we have valid proj info the chosen projection has a valid PROJ4 setting */
@@ -890,16 +904,6 @@ int GMT_grdimage (void *V_API, int mode, void *args) {
}
GMT_Report (API, GMT_MSG_VERBOSE, "Evaluate pixel colors\n");
- NaN_rgb = (P) ? P->bfn[GMT_NAN].rgb : GMT->current.setting.color_patch[GMT_NAN];
- if (Ctrl->Q.active) { /* Want colormask via NaN entries */
- if (gray_only) {
- GMT_Report (API, GMT_MSG_VERBOSE, "Your image is grayscale only but -Q requires 24-bit; image will be expanded to 24-bit.\n");
- gray_only = false;
- NaN_rgb = red; /* Arbitrarily pick red as the NaN color since the entire image is gray only */
- gmt_M_memcpy (P->bfn[GMT_NAN].rgb, red, 4, double);
- }
- if (!Ctrl->A.return_image) rgb_used = gmt_M_memory (GMT, NULL, 256*256*256, unsigned char); /* Keep track of which colors we encounter */
- }
/* Worry about linear projections with negative scales that may reverse the orientation of the image */
normal_x = !(GMT->current.proj.projection == GMT_LINEAR && !GMT->current.proj.xyz_pos[0] && !resampled);
@@ -1022,19 +1026,21 @@ int GMT_grdimage (void *V_API, int mode, void *args) {
for (kk = 0, P->is_bw = true; P->is_bw && kk < header_work->nm; kk++)
if (!(bitimage_8[kk] == 0 || bitimage_8[kk] == 255)) P->is_bw = false;
- if (P && P->is_bw) { /* Can get away with a 1-bit image, but we must pack the original byte to 8 image bits */
+ if (P && P->is_bw && !Ctrl->A.active) { /* Can get away with a 1-bit image, but we must pack the original byte to 8 image bits */
int nx8, shift, b_or_w, nx_pixels, k8;
+ uint64_t imsize;
unsigned char *bit = NULL;
GMT_Report (API, GMT_MSG_VERBOSE, "Creating 1-bit B/W image\n");
nx8 = irint (ceil (n_columns / 8.0)); /* Image width must be a multiple of 8 bits, so we round up */
nx_pixels = nx8 * 8; /* The row length in bits after the rounding up */
- bit = gmt_M_memory (GMT, NULL, nx8 * n_rows, unsigned char); /* Memory to hold the 1-bit image */
+ imsize = gmt_M_get_nm (GMT, nx8, n_rows);
+ bit = gmt_M_memory (GMT, NULL, imsize, unsigned char); /* Memory to hold the 1-bit image */
/* Reprocess the byte image. Here there are no worries about direction of rows, cols since that was dealt with during color assignment */
- for (row = k = k8 = 0; row < n_rows; row++) { /* Process each scanline */
+ for (row = k8 = k = 0; row < n_rows; row++) { /* Process each scanline */
shift = 0; byte = 0;
for (col = 0; col < n_columns; col++, k++) { /* Visit each byte in the original grayshade image */
b_or_w = (bitimage_8[k] == 255); /* Let white == 1, black == 0 */
@@ -1076,7 +1082,7 @@ int GMT_grdimage (void *V_API, int mode, void *args) {
}
else { /* Dealing with a 24-bit color image */
if (Ctrl->A.active) { /* Creating a raster image, not PostScript */
- if (Ctrl->Q.active) { /* Must initialize the transparency byte (alpha): 255 everywhere except at NaNs */
+ if (Ctrl->Q.active) { /* Must initialize the transparency byte (alpha): 255 everywhere except at NaNs where it should be 0 */
memset (Out->alpha, 255, header_work->nm);
for (node = row = 0; row < n_rows; row++) {
kk = gmt_M_ijpgi (header_work, row, 0);
diff --git a/src/grdinfo.c b/src/grdinfo.c
index 3ca4315..74cf26b 100644
--- a/src/grdinfo.c
+++ b/src/grdinfo.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdinfo.c 17163 2016-10-03 19:17:34Z pwessel $
+ * $Id: grdinfo.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -298,6 +298,9 @@ int GMT_grdinfo (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, o_type, GMT_OUT, GMT_HEADER_OFF) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if (n_cols && (error = gmt_set_cols (GMT, GMT_OUT, n_cols)) != 0) Return (error); /* Set number of output columns */
for (opt = options; opt; opt = opt->next) { /* Loop over arguments, skip options */
@@ -424,6 +427,9 @@ int GMT_grdinfo (void *V_API, int mode, void *args) {
gmt_ascii_format_col (GMT, text, G->header->inc[GMT_Y], GMT_OUT, GMT_Z); strcat (record, text);
GMT_Put_Record (API, GMT_WRITE_TEXT, record);
} else if (Ctrl->I.active && Ctrl->I.status == GRDINFO_GIVE_BOUNDBOX) {
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POLY) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
sprintf (record, "> Bounding box for %s", G->header->name);
GMT_Put_Record (API, GMT_WRITE_TEXT, record);
/* LL */
@@ -442,6 +448,10 @@ int GMT_grdinfo (void *V_API, int mode, void *args) {
gmt_ascii_format_col (GMT, record, G->header->wesn[XLO], GMT_OUT, GMT_X); strcat (record, sep);
gmt_ascii_format_col (GMT, text, G->header->wesn[YHI], GMT_OUT, GMT_Y); strcat (record, text);
GMT_Put_Record (API, GMT_WRITE_TEXT, record);
+ /* LL (repeat to close polygon) */
+ gmt_ascii_format_col (GMT, record, G->header->wesn[XLO], GMT_OUT, GMT_X); strcat (record, sep);
+ gmt_ascii_format_col (GMT, text, G->header->wesn[YLO], GMT_OUT, GMT_Y); strcat (record, text);
+ GMT_Put_Record (API, GMT_WRITE_TEXT, record);
} else if (Ctrl->C.active && !Ctrl->I.active) {
if (API->mode) { /* External interface, return as data with no leading text */
/* w e s n z0 z1 dx dy n_columns n_rows [x0 y0 x1 y1] [med scale] [mean std rms] [n_nan] */
@@ -463,7 +473,7 @@ int GMT_grdinfo (void *V_API, int mode, void *args) {
if (Ctrl->M.active) {
out[col++] = (double)n_nan;
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
else { /* Command-line usage */
sprintf (record, "%s%s", G->header->name, sep);
@@ -665,7 +675,7 @@ int GMT_grdinfo (void *V_API, int mode, void *args) {
global_xmax = ceil (global_xmax / Ctrl->I.inc[GMT_X]) * Ctrl->I.inc[GMT_X];
global_ymin = floor (global_ymin / Ctrl->I.inc[GMT_Y]) * Ctrl->I.inc[GMT_Y];
global_ymax = ceil (global_ymax / Ctrl->I.inc[GMT_Y]) * Ctrl->I.inc[GMT_Y];
- if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Must make sure we dont get outside valid bounds */
+ if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Must make sure we don't get outside valid bounds */
if (global_ymin < -90.0) {
global_ymin = -90.0;
GMT_Report (API, GMT_MSG_VERBOSE, "Warning: Using -I caused south to become < -90. Reset to -90.\n");
@@ -683,9 +693,9 @@ int GMT_grdinfo (void *V_API, int mode, void *args) {
if (API->mode) { /* External interface, return as data with no leading text */
/* w e s n z0 z1 */
out[XLO] = global_xmin; out[XHI] = global_xmax;
- out[YLO] = global_xmin; out[YHI] = global_xmax;
+ out[YLO] = global_ymin; out[YHI] = global_ymax;
out[ZLO] = global_zmin; out[ZHI] = global_zmax;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
else { /* Command-line usage */
sprintf (record, "%d%s", n_grds, sep);
@@ -745,7 +755,7 @@ int GMT_grdinfo (void *V_API, int mode, void *args) {
global_xmax = ceil (global_xmax / Ctrl->I.inc[GMT_X]) * Ctrl->I.inc[GMT_X];
global_ymin = floor (global_ymin / Ctrl->I.inc[GMT_Y]) * Ctrl->I.inc[GMT_Y];
global_ymax = ceil (global_ymax / Ctrl->I.inc[GMT_Y]) * Ctrl->I.inc[GMT_Y];
- if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Must make sure we dont get outside valid bounds */
+ if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Must make sure we don't get outside valid bounds */
if (global_ymin < -90.0) {
global_ymin = -90.0;
GMT_Report (API, GMT_MSG_VERBOSE, "Warning: Using -I caused south to become < -90. Reset to -90.\n");
diff --git a/src/grdlandmask.c b/src/grdlandmask.c
index d910cf9..2d97b48 100644
--- a/src/grdlandmask.c
+++ b/src/grdlandmask.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdlandmask.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdlandmask.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -45,7 +45,7 @@ struct GRDLANDMASK_CTRL { /* All control options for this program (except common
} A;
struct GRDLNDM_D { /* -D<resolution> */
bool active;
- bool force; /* if true, select next highest level if current set is not avaialble */
+ bool force; /* if true, select next highest level if current set is not available */
char set; /* One of f, h, i, l, c */
} D;
struct GRDLNDM_E { /* -E */
diff --git a/src/grdmask.c b/src/grdmask.c
index 0564a2c..134bad7 100644
--- a/src/grdmask.c
+++ b/src/grdmask.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdmask.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdmask.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -235,7 +235,7 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct GRDMASK_CTRL *Ctrl, struct GMT
int GMT_grdmask (void *V_API, int mode, void *args) {
bool periodic = false, periodic_grid = false, do_test = true;
- unsigned int side = 0, *d_col = NULL, d_row = 0, col_0, row_0;
+ unsigned int side = 0, known_side, *d_col = NULL, d_row = 0, col_0, row_0;
unsigned int tbl, gmode, n_pol = 0, max_d_col = 0, n_cols = 2;
int row, col, n_columns, n_rows, error = 0;
@@ -243,7 +243,7 @@ int GMT_grdmask (void *V_API, int mode, void *args) {
char text_item[GMT_LEN64] = {""};
- float mask_val[3];
+ float mask_val[3], value;
double distance, xx, yy, z_value, xtmp, radius = 0.0, last_radius = -DBL_MAX, *grd_x0 = NULL, *grd_y0 = NULL;
@@ -350,12 +350,18 @@ int GMT_grdmask (void *V_API, int mode, void *args) {
D = Din; /* The default is to work with the input data as is */
if (!Ctrl->S.active && GMT->current.map.path_mode == GMT_RESAMPLE_PATH) { /* Resample all polygons to desired resolution, once and for all */
+ uint64_t n_new;
if (D->alloc_mode == GMT_ALLOC_EXTERNALLY)
D = GMT_Duplicate_Data (API, GMT_IS_DATASET, GMT_DUPLICATE_ALLOC + GMT_ALLOC_NORMAL, Din);
for (tbl = 0; tbl < D->n_tables; tbl++) {
for (seg = 0; seg < D->table[tbl]->n_segments; seg++) { /* For each segment in the table */
S = D->table[tbl]->segment[seg]; /* Current segment */
- S->n_rows = gmt_fix_up_path (GMT, &S->data[GMT_X], &S->data[GMT_Y], S->n_rows, Ctrl->A.step, Ctrl->A.mode);
+ if ((n_new = gmt_fix_up_path (GMT, &S->data[GMT_X], &S->data[GMT_Y], S->n_rows, Ctrl->A.step, Ctrl->A.mode)) == 0) {
+ if (D->alloc_mode == GMT_ALLOC_EXTERNALLY) GMT_Destroy_Data (API, &D);
+ Return (GMT_RUNTIME_ERROR);
+ }
+ S->n_rows = n_new;
+ gmt_set_seg_minmax (GMT, D->geometry, S); /* Update min/max */
}
}
}
@@ -369,7 +375,37 @@ int GMT_grdmask (void *V_API, int mode, void *args) {
xtmp = S->data[GMT_X][k]; /* Make copy since we may have to adjust by +-360 */
if (gmt_x_is_outside (GMT, &xtmp, Grid->header->wesn[XLO], Grid->header->wesn[XHI])) continue; /* Outside x-range (or longitude) */
- /* OK, this point is within bounds, but may be exactly on the border */
+ if (Ctrl->S.variable_radius) radius = S->data[GMT_Z][k];
+ if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Make special checks for N and S poles */
+ if (gmt_M_is_Npole (S->data[GMT_Y][k])) { /* N pole */
+ if (radius == 0.0) { /* Only set the N pole row */
+ gmt_M_col_loop (GMT, Grid, 0, col, ij) /* Set this entire N row */
+ Grid->data[ij] = mask_val[GMT_INSIDE];
+ continue;
+ }
+ for (row = 0; row < (int)Grid->header->n_rows && (distance = gmt_distance (GMT, 0.0, 90.0, grd_x0[0], grd_y0[row])) <= radius; row++) {
+ value = (doubleAlmostEqualZero (distance, radius)) ? mask_val[GMT_ONEDGE] : mask_val[GMT_INSIDE]; /* The onedge or inside value */
+ gmt_M_col_loop (GMT, Grid, row, col, ij) /* Set this entire row */
+ Grid->data[ij] = value;
+ }
+ continue;
+ }
+ else if (gmt_M_is_Spole (S->data[GMT_Y][k])) { /* S pole */
+ if (radius == 0.0) { /* Only set the S pole row */
+ gmt_M_col_loop (GMT, Grid, Grid->header->n_rows - 1, col, ij) /* Set this entire S row */
+ Grid->data[ij] = mask_val[GMT_INSIDE];
+ continue;
+ }
+ for (row = (int)(Grid->header->n_rows - 1); row >= 0 && (distance = gmt_distance (GMT, 0.0, -90.0, grd_x0[0], grd_y0[row])) <= radius; row--) {
+ value = (doubleAlmostEqualZero (distance, radius)) ? mask_val[GMT_ONEDGE] : mask_val[GMT_INSIDE]; /* The onedge or inside value */
+ gmt_M_col_loop (GMT, Grid, row, col, ij) /* Set this entire row */
+ Grid->data[ij] = value;
+ }
+ continue;
+ }
+ }
+
+ /* OK, not a pole and this point is within bounds, but may be exactly on the border */
col_0 = (unsigned int)gmt_M_grd_x_to_col (GMT, xtmp, Grid->header);
if (col_0 == Grid->header->n_columns) col_0--; /* Was exactly on the xmax edge */
@@ -382,7 +418,6 @@ int GMT_grdmask (void *V_API, int mode, void *args) {
ij = gmt_M_ijp (Grid->header, row_0, col);
Grid->data[ij] = mask_val[GMT_INSIDE]; /* This is also the nearest node */
}
- if (Ctrl->S.variable_radius) radius = S->data[GMT_Z][k];
if (radius == 0.0) continue; /* Only consider the nearest node */
/* Here we also include all the nodes within the search radius */
if (Ctrl->S.variable_radius && !doubleAlmostEqual (radius, last_radius)) { /* Init d_row/d_col etc */
@@ -431,29 +466,33 @@ int GMT_grdmask (void *V_API, int mode, void *args) {
do_test = true;
switch (S->pole) {
case 0: /* Not a polar cap */
- if (yy < S->min[GMT_Y] || yy > S->max[GMT_Y]) continue; /* Outside */
+ if (yy < S->min[GMT_Y] || yy > S->max[GMT_Y]) continue; /* Outside, no need to check */
break;
case -1: /* S polar cap */
- if (yy > S->max[GMT_Y]) continue;
- if (yy < S->lat_limit) side = GMT_INSIDE, do_test = false;
+ if (yy > S->max[GMT_Y]) continue; /* Outside, no need to check */
+ if (yy < S->lat_limit) known_side = GMT_INSIDE, do_test = false; /* Guaranteed inside, set answer */
break;
case +1: /* N polar cap */
- if (yy < S->min[GMT_Y]) continue;
- if (yy > S->lat_limit) side = GMT_INSIDE, do_test = false;
+ if (yy < S->min[GMT_Y]) continue; /* Outside, no need to check */
+ if (yy > S->lat_limit) known_side = GMT_INSIDE, do_test = false; /* Guaranteed inside, set answer */
break;
}
}
else if (yy < S->min[GMT_Y] || yy > S->max[GMT_Y]) /* Cartesian case */
- continue;
+ continue; /* Outside, no need to check */
- /* Here we will have to consider the x coordinates as well */
+ /* Here we will have to consider the x coordinates as well (or known_side is set) */
#ifdef _OPENMP
-#pragma omp parallel for private(col,xx,side,ij) shared(Grid,n_columns,do_test,yy,S,row,Ctrl,z_value,mask_val)
+#pragma omp parallel for private(col,xx,side,ij) shared(Grid,n_columns,do_test,known_side,yy,S,row,Ctrl,z_value,mask_val)
#endif
for (col = 0; col < n_columns; col++) {
xx = gmt_M_grd_col_to_x (GMT, col, Grid->header);
- side = 0;
- if (do_test && (side = gmt_inonout (GMT, xx, yy, S)) == 0) continue; /* Outside polygon, go to next point */
+ if (do_test) { /* Must consider xx to determine if we are inside */
+ if ((side = gmt_inonout (GMT, xx, yy, S)) == GMT_OUTSIDE)
+ continue; /* Outside polygon, go to next point */
+ }
+ else /* Already know the answer */
+ side = known_side;
/* Here, point is inside or on edge, we must assign value */
ij = gmt_M_ijp (Grid->header, row, col);
diff --git a/src/grdmath.c b/src/grdmath.c
index b5d1ccb..a102848 100644
--- a/src/grdmath.c
+++ b/src/grdmath.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdmath.c 17085 2016-09-07 08:03:01Z pwessel $
+ * $Id: grdmath.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -100,7 +100,7 @@ struct GRDMATH_CTRL { /* All control options for this program (except common arg
} A;
struct D { /* -D<resolution> */
bool active;
- bool force; /* if true, select next highest level if current set is not avaialble */
+ bool force; /* if true, select next highest level if current set is not available */
char set; /* One of f, h, i, l, c */
} D;
struct I { /* -Idx[/dy] */
@@ -1674,10 +1674,10 @@ GMT_LOCAL void grd_EXCH (struct GMT_CTRL *GMT, struct GRDMATH_INFO *info, struct
for (node = 0; node < info->size; node++) {
if (stack[prev]->constant) stack[prev]->G->data[node] = (float)stack[prev]->factor;
if (stack[last]->constant) stack[last]->G->data[node] = (float)stack[last]->factor;
- float_swap (stack[last]->G->data[node], stack[prev]->G->data[node]);
+ gmt_M_float_swap (stack[last]->G->data[node], stack[prev]->G->data[node]);
}
- double_swap (stack[last]->factor, stack[prev]->factor);
- bool_swap (stack[last]->constant, stack[prev]->constant);
+ gmt_M_double_swap (stack[last]->factor, stack[prev]->factor);
+ gmt_M_bool_swap (stack[last]->constant, stack[prev]->constant);
}
GMT_LOCAL void grd_EXP (struct GMT_CTRL *GMT, struct GRDMATH_INFO *info, struct GRDMATH_STACK *stack[], unsigned int last)
@@ -1871,7 +1871,7 @@ GMT_LOCAL void grd_FLIPLR (struct GMT_CTRL *GMT, struct GRDMATH_INFO *info, stru
mx_half = info->G->header->mx / 2;
mx1 = info->G->header->mx - 1;
for (node = row = 0; row < info->G->header->my; row++, node += info->G->header->mx) { /* Do this to all rows */
- for (col_l = 0, col_r = mx1; col_l < mx_half; col_l++, col_r--) float_swap (stack[last]->G->data[node+col_l], stack[last]->G->data[node+col_r]);
+ for (col_l = 0, col_r = mx1; col_l < mx_half; col_l++, col_r--) gmt_M_float_swap (stack[last]->G->data[node+col_l], stack[last]->G->data[node+col_r]);
}
}
@@ -1893,7 +1893,7 @@ GMT_LOCAL void grd_FLIPUD (struct GMT_CTRL *GMT, struct GRDMATH_INFO *info, stru
my1 = info->G->header->my - 1;
mx = info->G->header->mx;
for (col = 0; col < mx; col++) { /* Do this to all cols */
- for (row_t = 0, row_b = my1; row_t < my_half; row_t++, row_b--) float_swap (stack[last]->G->data[(uint64_t)row_t*(uint64_t)mx+(uint64_t)col], stack[last]->G->data[(uint64_t)row_b*(uint64_t)mx+(uint64_t)col]);
+ for (row_t = 0, row_b = my1; row_t < my_half; row_t++, row_b--) gmt_M_float_swap (stack[last]->G->data[(uint64_t)row_t*(uint64_t)mx+(uint64_t)col], stack[last]->G->data[(uint64_t)row_b*(uint64_t)mx+(uint64_t)col]);
}
}
diff --git a/src/grdmath.h.in b/src/grdmath.h.in
index f4874df..e1ddc72 100644
--- a/src/grdmath.h.in
+++ b/src/grdmath.h.in
@@ -1,8 +1,8 @@
/*--------------------------------------------------------------------
*
- * $Id: grdmath.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: grdmath.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/grdmath_explain.h.in b/src/grdmath_explain.h.in
index 2f4edee..43f4cc7 100644
--- a/src/grdmath_explain.h.in
+++ b/src/grdmath_explain.h.in
@@ -1,8 +1,8 @@
/*--------------------------------------------------------------------
*
- * $Id: grdmath_explain.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: grdmath_explain.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/grdmath_op.h.in b/src/grdmath_op.h.in
index b72981b..9a67ec3 100644
--- a/src/grdmath_op.h.in
+++ b/src/grdmath_op.h.in
@@ -1,8 +1,8 @@
/*--------------------------------------------------------------------
*
- * $Id: grdmath_op.h.in 15944 2016-03-26 08:43:39Z pwessel $
+ * $Id: grdmath_op.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/grdpaste.c b/src/grdpaste.c
index 6ff7f48..c0b3ce3 100644
--- a/src/grdpaste.c
+++ b/src/grdpaste.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdpaste.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: grdpaste.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/grdproject.c b/src/grdproject.c
index ce426c2..dde2182 100644
--- a/src/grdproject.c
+++ b/src/grdproject.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdproject.c 16902 2016-08-12 14:26:22Z jluis $
+ * $Id: grdproject.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -393,7 +393,7 @@ int GMT_grdproject (void *V_API, int mode, void *args) {
if (Ctrl->I.active) { /* Transforming from rectangular projection to geographical */
- /* if (GMT->common.R.oblique) double_swap (s, e); */ /* Got w/s/e/n, make into w/e/s/n */
+ /* if (GMT->common.R.oblique) gmt_M_double_swap (s, e); */ /* Got w/s/e/n, make into w/e/s/n */
if ((Rect = GMT_Read_Data (API, GMT_IS_GRID, GMT_IS_FILE, GMT_IS_SURFACE, GMT_GRID_ALL, NULL, Ctrl->In.file, NULL)) == NULL) {
Return (API->error);
@@ -402,11 +402,18 @@ int GMT_grdproject (void *V_API, int mode, void *args) {
if ((Geo = GMT_Duplicate_Data (API, GMT_IS_GRID, GMT_DUPLICATE_NONE, Rect)) == NULL) Return (API->error); /* Just to get a header we can change */
if (gmt_M_is_azimuthal(GMT) && GMT->current.proj.polar) { /* Watch out for polar cap grids */
- if (doubleAlmostEqual (GMT->current.proj.pole, -90.0)) { /* Covers S pole; implies 360 longitude range */
- wesn[XLO] = -180.0; wesn[XHI] = +180.0; wesn[YHI] = MAX(wesn[YLO], wesn[YHI]); wesn[YLO] = -90.0;
- }
- else if (doubleAlmostEqual (GMT->current.proj.pole, +90.0)) { /* Covers N pole; implies 360 longitude range */
- wesn[XLO] = -180.0; wesn[XHI] = +180.0; wesn[YLO] = MIN(wesn[YLO], wesn[YHI]); wesn[YHI] = +90.0;
+ double px, py;
+ /* Get projected pole point and determine if it is inside the grid */
+ gmt_geo_to_xy (GMT, 0.0, GMT->current.proj.pole, &px, &py); /* Projected coordinates of the relevant pole */
+ if (!gmt_M_y_is_outside (GMT, py, Rect->header->wesn[YLO], Rect->header->wesn[YHI]) &&
+ !gmt_x_is_outside (GMT, &px, Rect->header->wesn[XLO], Rect->header->wesn[XHI])) { /* Not outside both projected x or y-range */
+ wesn[XLO] = -180.0; wesn[XHI] = +180.0; /* Need a full 360 longitude range */
+ if (GMT->current.proj.north_pole) { /* And one of the latitude bounds must extend to the right pole */
+ wesn[YLO] = MIN (wesn[YLO], wesn[YHI]); wesn[YHI] = +90.0;
+ }
+ else {
+ wesn[YHI] = MAX (wesn[YLO], wesn[YHI]); wesn[YLO] = -90.0;
+ }
}
}
gmt_M_memcpy (Geo->header->wesn, wesn, 4, double);
diff --git a/src/grdraster.c b/src/grdraster.c
index 4e23bdf..ef95ef1 100644
--- a/src/grdraster.c
+++ b/src/grdraster.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdraster.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdraster.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -798,7 +798,7 @@ int GMT_grdraster (void *V_API, int mode, void *args) {
/* Check if given argument is an integer ID. If so, assign iselect, else set it to UINT_MAX */
tselect = strdup (Ctrl->In.file);
- gmt_str_toupper (tselect); /* Make it upper case - which wont affect integers */
+ gmt_str_toupper (tselect); /* Make it upper case - which won't affect integers */
for (j = i = 0; tselect[j] && i == 0; j++) if (!isdigit ((int)tselect[j])) i = 1;
if (i == 0)
iselect = atoi (tselect);
@@ -998,6 +998,10 @@ int GMT_grdraster (void *V_API, int mode, void *args) {
gmt_M_free (GMT, x);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, x);
+ Return (API->error);
+ }
} else { /* Need an entire (padded) grid */
Grid->data = gmt_M_memory_aligned (GMT, NULL, Grid->header->size, float);
}
@@ -1066,7 +1070,7 @@ int GMT_grdraster (void *V_API, int mode, void *args) {
for (col = 0; col < Grid->header->n_columns; col++) {
out[0] = x[col];
out[2] = Grid->data[col];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
}
@@ -1145,7 +1149,7 @@ int GMT_grdraster (void *V_API, int mode, void *args) {
for (col = 0; col < Grid->header->n_columns; col++) {
out[GMT_X] = x[col];
out[GMT_Z] = Grid->data[col];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
}
diff --git a/src/grdsample.c b/src/grdsample.c
index 45c07bf..da2b7cd 100644
--- a/src/grdsample.c
+++ b/src/grdsample.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdsample.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdsample.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -296,7 +296,7 @@ int GMT_grdsample (void *V_API, int mode, void *args) {
wesn[YHI] > (Gin->header->wesn[YHI] + Gin->header->inc[GMT_Y]) ||
wesn[XLO] < (Gin->header->wesn[XLO] - Gin->header->inc[GMT_X]) ||
wesn[XHI] > (Gin->header->wesn[XHI] + Gin->header->inc[GMT_X])) && GMT->current.io.grd_info.active) {
- /* If the limits were specified via -R<grid> adjust those limits to maximum allowd by resampling grid */
+ /* If the limits were specified via -R<grid> adjust those limits to maximum allowed by resampling grid */
adjust_R (API, Ctrl, Gin, wesn);
}
else {
diff --git a/src/grdtrack.c b/src/grdtrack.c
index eb32663..db64738 100644
--- a/src/grdtrack.c
+++ b/src/grdtrack.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdtrack.c 16811 2016-07-15 23:02:04Z pwessel $
+ * $Id: grdtrack.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -236,7 +236,7 @@ GMT_LOCAL int process_one (struct GMT_CTRL *GMT, char *record, struct GRDTRACK_C
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Syntax error -G option: Give imgfile, scale, mode [and optionally max_lat]\n");
return (0);
}
- else if (gmt_check_filearg (GMT, '<', record, GMT_IN, GMT_IS_GRID))
+ else if (gmt_check_filearg (GMT, '<', line, GMT_IN, GMT_IS_GRID))
Ctrl->G.file[ng] = strdup (line);
else
return (0);
@@ -317,6 +317,8 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct GRDTRACK_CTRL *Ctrl, struct GM
if (mode != 0 && mode != Ctrl->C.dist_mode) n_modes++;
}
if (c && Ctrl->C.mode) *c = '+'; /* Undo truncation */
+ if (gmt_M_is_geographic (API->GMT, GMT_IN) && n_units && Ctrl->C.unit != 'e' && !strchr (opt->arg, 'e'))
+ n_units = 0; /* Weird case where user did -fg but did not specify units on all three items and got default e unintentionally */
if (n_units) {
GMT_Report (API, GMT_MSG_NORMAL, "Syntax error -C option: Only <length> takes a unit which is shared with <ds> [and <spacing>]\n");
n_errors++;
@@ -797,6 +799,7 @@ int GMT_grdtrack (void *V_API, int mode, void *args) {
if (Ctrl->E.active) { /* Create profiles rather than read them */
double xyz[2][3];
+ bool resample = !(Ctrl->C.active && Ctrl->C.spacing > 0.0);
if (get_dist_units (GMT, Ctrl->E.lines, &Ctrl->E.unit, &Ctrl->E.mode)) { /* Bad mixing of units in -E specification */
for (g = 0; g < Ctrl->G.n_grids; g++) { /* Free up the grids */
@@ -820,10 +823,10 @@ int GMT_grdtrack (void *V_API, int mode, void *args) {
}
if (Ctrl->G.n_grids == 1) { /* May use min/max for a single grid */
gmt_grd_minmax (GMT, GC[0].G, xyz);
- Din = gmt_make_profiles (GMT, 'E', Ctrl->E.lines, true, false, false, Ctrl->E.step, Ctrl->A.mode, xyz);
+ Din = gmt_make_profiles (GMT, 'E', Ctrl->E.lines, resample, false, false, Ctrl->E.step, Ctrl->A.mode, xyz);
}
else
- Din = gmt_make_profiles (GMT, 'E', Ctrl->E.lines, true, false, false, Ctrl->E.step, Ctrl->A.mode, NULL);
+ Din = gmt_make_profiles (GMT, 'E', Ctrl->E.lines, resample, false, false, Ctrl->E.step, Ctrl->A.mode, NULL);
if (Din->table[0] == NULL)
Return (GMT_RUNTIME_ERROR);
Din->n_columns = Din->table[0]->n_columns; /* Since could have changed via +d */
@@ -1084,6 +1087,9 @@ int GMT_grdtrack (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, family, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
gmt_M_memset (line, GMT_BUFSIZ, char);
if (Ctrl->Z.active) { /* Special case were number of output columns is known before reading input records */
@@ -1095,7 +1101,7 @@ int GMT_grdtrack (void *V_API, int mode, void *args) {
}
ix = (GMT->current.setting.io_lonlat_toggle[GMT_IN]); iy = 1 - ix;
- rmode = (pure_ascii && gmt_get_cols (GMT, GMT_IN) >= 2) ? GMT_READ_MIXED : GMT_READ_DOUBLE;
+ rmode = (pure_ascii && gmt_get_cols (GMT, GMT_IN) >= 2) ? GMT_READ_MIXED : GMT_READ_DATA;
if (Ctrl->T.active) { /* Want to find nearest non-NaN if the node we find is NaN */
Ctrl->T.S = gmt_M_memory (GMT, NULL, 1, struct GMT_ZSEARCH);
@@ -1149,7 +1155,7 @@ int GMT_grdtrack (void *V_API, int mode, void *args) {
}
if (Ctrl->Z.active) /* Simply print out values */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, value);
+ GMT_Put_Record (API, GMT_WRITE_DATA, value);
else if (pure_ascii && n_fields >= 2) {
/* Special case: ASCII i/o and at least 3 columns:
Columns beyond first two could be text strings */
@@ -1180,7 +1186,7 @@ int GMT_grdtrack (void *V_API, int mode, void *args) {
out[ks++] = Ctrl->T.S->y[Ctrl->T.S->row]; /* Add our output y value */
out[ks++] = Ctrl->T.S->radius; /* Add our radius */
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
n_points++;
diff --git a/src/grdtrend.c b/src/grdtrend.c
index b0869ce..b247e82 100644
--- a/src/grdtrend.c
+++ b/src/grdtrend.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdtrend.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdtrend.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/grdvector.c b/src/grdvector.c
index b7e4d6d..4ea91dd 100644
--- a/src/grdvector.c
+++ b/src/grdvector.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdvector.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdvector.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -320,9 +320,9 @@ int GMT_grdvector (void *V_API, int mode, void *args) {
struct GMT_GRID *Grid[2] = {NULL, NULL};
struct GMT_PALETTE *P = NULL;
struct GRDVECTOR_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -415,7 +415,7 @@ int GMT_grdvector (void *V_API, int mode, void *args) {
Geographic = (gmt_M_is_geographic (GMT, GMT_IN));
if (!Ctrl->S.constant) Ctrl->S.factor = 1.0 / Ctrl->S.factor;
- if (Geographic) { /* Now that we know this we make sure -T is diabled if given */
+ if (Geographic) { /* Now that we know this we make sure -T is disabled if given */
if (Ctrl->T.active) { /* This is a mistake */
Ctrl->T.active = false;
GMT_Report (API, GMT_MSG_NORMAL, "Warning: -T does not apply to geographic grids - ignored\n");
diff --git a/src/grdview.c b/src/grdview.c
index 43f21b0..985ac82 100644
--- a/src/grdview.c
+++ b/src/grdview.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdview.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: grdview.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -665,9 +665,9 @@ int GMT_grdview (void *V_API, int mode, void *args) {
struct GRDVIEW_BIN *binij = NULL;
struct GMT_PALETTE *P = NULL;
struct GRDVIEW_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -775,7 +775,7 @@ int GMT_grdview (void *V_API, int mode, void *args) {
xval = gmt_grd_coord (GMT, Topo->header, GMT_X);
yval = gmt_grd_coord (GMT, Topo->header, GMT_Y);
- if (!GMT->current.proj.xyz_pos[2]) double_swap (GMT->common.R.wesn[ZLO], GMT->common.R.wesn[ZHI]); /* Negative z-scale, must flip */
+ if (!GMT->current.proj.xyz_pos[2]) gmt_M_double_swap (GMT->common.R.wesn[ZLO], GMT->common.R.wesn[ZHI]); /* Negative z-scale, must flip */
gmt_grd_set_ij_inc (GMT, Z->header->mx, ij_inc); /* Offsets for ij (with pad) indices */
nw = gmt_M_ijp (Topo->header, 0, 0);
@@ -1376,7 +1376,7 @@ int GMT_grdview (void *V_API, int mode, void *args) {
just in case and if so set small to 1.0e-7.
4) Given zgrd is float, there is a difference between zgrd[node] -= (float)cval and zgrd[node] -= cval,
since cval is double precision. We had the cast during the contouring but here under -Qs we had some
- comparisions without the cast, the result being both sides got promoted to double prior to the test and
+ comparisons without the cast, the result being both sides got promoted to double prior to the test and
we can get a different result.
5) In the case of no contour we paint the entire tile. However, in the case of discontinuous CPTs we
based the color on the lower-left node value (since it should not matter which corner we pick). But it
@@ -1431,7 +1431,7 @@ int GMT_grdview (void *V_API, int mode, void *args) {
for (k = 0; k < 4; k++) Z_vert[k] = Z->data[ij+ij_inc[k]]; /* First a straight copy */
- if (get_contours && binij[bin].first_cont) { /* Contours go thru here */
+ if (get_contours && binij[bin].first_cont) { /* Contours go through here */
/* Determine if this bin will give us saddle trouble */
diff --git a/src/grdvolume.c b/src/grdvolume.c
index 17b1d3f..91003dc 100644
--- a/src/grdvolume.c
+++ b/src/grdvolume.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdvolume.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdvolume.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -533,7 +533,7 @@ int GMT_grdvolume (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_VERBOSE, "Subtracting %g and multiplying by %g\n", Ctrl->Z.offset, Ctrl->Z.scale);
Work->header->z_min = (Work->header->z_min - Ctrl->Z.offset) * Ctrl->Z.scale;
Work->header->z_max = (Work->header->z_max - Ctrl->Z.offset) * Ctrl->Z.scale;
- if (Ctrl->Z.scale < 0.0) double_swap (Work->header->z_min, Work->header->z_max);
+ if (Ctrl->Z.scale < 0.0) gmt_M_double_swap (Work->header->z_min, Work->header->z_max);
/* Since gmt_scale_and_offset_f applies z' = z * scale + offset we must adjust Z.offset first: */
Ctrl->Z.offset *= Ctrl->Z.scale;
gmt_scale_and_offset_f (GMT, Work->data, Work->header->size, Ctrl->Z.scale, Ctrl->Z.offset);
@@ -555,7 +555,7 @@ int GMT_grdvolume (void *V_API, int mode, void *args) {
for (ij = 0; ij < Work->header->size; ij++) {
Work->data[ij] -= (float)take_out; /* Take out the zero value */
- if (Work->data[ij] == 0.0) Work->data[ij] = (float)small; /* But we dont want exactly zero, just + or - */
+ if (Work->data[ij] == 0.0) Work->data[ij] = (float)small; /* But we don't want exactly zero, just + or - */
}
if (Ctrl->L.active) this_base -= take_out;
@@ -693,23 +693,27 @@ int GMT_grdvolume (void *V_API, int mode, void *args) {
gmt_M_free (GMT, area); gmt_M_free (GMT, vol); gmt_M_free (GMT, height);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, area); gmt_M_free (GMT, vol); gmt_M_free (GMT, height);
+ Return (API->error);
+ }
gmt_set_cartesian (GMT, GMT_OUT); /* Since no coordinates are written */
if (Ctrl->T.active) { /* Determine the best contour value and return the corresponding information for that contour only */
c = ors_find_kink (GMT, height, n_contours, Ctrl->T.mode);
out[0] = Ctrl->C.low + c * Ctrl->C.inc; out[1] = area[c]; out[2] = vol[c]; out[3] = height[c];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
else { /* Return information for all contours (possibly one if -C<val> was used) */
if (Ctrl->C.reverse) {
out[0] = 0; out[1] = area[0] - area[1]; out[2] = vol[0] - vol[1]; out[3] = out[2] / out[1];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
else {
for (c = 0; c < n_contours; c++) {
out[0] = Ctrl->C.low + c * Ctrl->C.inc; out[1] = area[c]; out[2] = vol[c]; out[3] = height[c];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
}
}
diff --git a/src/greenspline.c b/src/greenspline.c
index 67c0e23..dbe1d64 100644
--- a/src/greenspline.c
+++ b/src/greenspline.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: greenspline.c 16798 2016-07-14 19:03:58Z pwessel $
+ * $Id: greenspline.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -212,8 +212,8 @@ GMT_LOCAL void Free_Ctrl (struct GMT_CTRL *GMT, struct GREENSPLINE_CTRL *C) { /*
GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
gmt_show_name_and_purpose (API, THIS_MODULE_LIB, THIS_MODULE_NAME, THIS_MODULE_PURPOSE);
if (level == GMT_MODULE_PURPOSE) return (GMT_NOERROR);
- GMT_Message (API, GMT_TIME_NONE, "usage: greenspline [<table>] -G<outfile> [-A<gradientfile>+f<format>] [-E[<misfittable>]");
- GMT_Message (API, GMT_TIME_NONE, "\t[-I<dx>[/<dy>[/<dz>]] [-C[n|r|v]<val>[+f<file>]] [-D<mode>] [-L] [-N<nodefile>] [-Q<az>]n");
+ GMT_Message (API, GMT_TIME_NONE, "usage: greenspline [<table>] -G<outfile> [-A<gradientfile>+f<format>] [-E[<misfittable>]\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t[-I<dx>[/<dy>[/<dz>]] [-C[n|r|v]<val>[+f<file>]] [-D<mode>] [-L] [-N<nodefile>] [-Q<az>]\n");
GMT_Message (API, GMT_TIME_NONE, "\t[-R<xmin>/<xmax[/<ymin>/<ymax>[/<zmin>/<zmax>]]][-Sc|l|t|r|p|q[<pars>]] [-T<maskgrid>] [%s]\n", GMT_V_OPT);
GMT_Message (API, GMT_TIME_NONE, "\t[-W[w]] [%s] [%s] [%s]\n\t[%s] [%s]\n\t[%s] [%s] [%s]%s[%s]\n\n",
GMT_bi_OPT, GMT_d_OPT, GMT_g_OPT, GMT_h_OPT, GMT_i_OPT, GMT_o_OPT, GMT_r_OPT, GMT_s_OPT, GMT_x_OPT, GMT_colon_OPT);
@@ -1387,7 +1387,7 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
char *mem_unit[3] = {"kb", "Mb", "Gb"};
double *obs = NULL, **D = NULL, **X = NULL, *alpha = NULL, *in = NULL, *orig_obs = NULL;
- double mem, part, C, p_val, r, par[N_PARAMS], norm[GSP_LENGTH], az = 0, grad, weight_i, weight_j;
+ double mem, part, C, p_val, r, par[N_PARAMS], norm[GSP_LENGTH], az = 0, grad, weight_col, weight_row;
double *A = NULL, r_min, r_max, err_sum = 0.0;
#ifdef DEBUG
double x0 = 0.0, x1 = 5.0;
@@ -1506,7 +1506,7 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
n = m = n_read = 0;
r_min = DBL_MAX; r_max = -DBL_MAX;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
for (p = 0; p < n_alloc; p++) gmt_M_free (GMT, X[p]);
gmt_M_free (GMT, X); gmt_M_free (GMT, obs);
@@ -1527,7 +1527,16 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
}
for (k = 0; k < dimension; k++) X[n][k] = in[k]; /* Get coordinates + optional weights (if -W) */
- if (Ctrl->W.active) X[n][k] = in[w_col];
+ if (Ctrl->W.active) { /* Planning a weighted solution */
+ if (Ctrl->W.mode == 0) { /* Got sigma, must convert to weight */
+ err_sum += in[w_col] * in[w_col]; /* Sum up variance first */
+ X[n][dimension] = 1.0 / in[w_col];
+ }
+ else { /* Got weight */
+ err_sum += pow (in[w_col], -2.0); /* Sum up variance */
+ X[n][dimension] = in[w_col];
+ }
+ }
/* Check for duplicates */
skip = false;
for (i = 0; !skip && i < n; i++) {
@@ -1804,7 +1813,7 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
n_ok = Grid->header->nm;
Z.nz = 1; /* So that output logic will work for 1-D */
}
- else { /* Just a temporary internal grid created and destroyed withing greenspline */
+ else { /* Just a temporary internal grid created and destroyed within greenspline */
if ((Grid = gmt_create_grid (GMT)) == NULL) Return (API->error);
delete_grid = true;
Grid->header->wesn[XLO] = Ctrl->R3.range[0]; Grid->header->wesn[XHI] = Ctrl->R3.range[1];
@@ -1955,7 +1964,20 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
do_normalization (API, X, obs, n, normalize, dimension, norm);
- /* Set up linear system Ax = z */
+ /* Set up linear system Ax = z. To clarify, the matrix A will be
+ * of size nm by nm, where nm = n + m. Again, n is the number of
+ * value constraints and m is the number of gradient constraints.
+ * for most problems m will be 0.
+ * The loops below takes advantage of the fact that A will be symmetrical
+ * (except for terms involving gradients where A_ij = -A_ji). So we
+ * start the loop over columns as col = row and deal with A)ij and A_ji
+ * at the same time since we can evaluate the same costly G() function
+ * [or dGdr () function)] once. Because of this we need to obtain the
+ * weight for two different rows and we do that by calling the two weights
+ * weight_row and weight_col, meaning it refers to observation weight
+ * number col and row. In the end, each row in A plus the row in obs
+ * are scaled by weight_row.
+ */
mem = ((double)nm * (double)nm * (double)sizeof (double)) / 1024.0; /* In kb */
unit = 0;
@@ -1965,51 +1987,60 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_VERBOSE, "Build linear system using %s\n", method[Ctrl->S.mode]);
- weight_i = weight_j = 1.0;
- for (j = 0; j < nm; j++) { /* For each value or slope constraint */
+ weight_col = weight_row = 1.0;
+ for (row = 0; row < nm; row++) { /* For each value or slope constraint */
if (Ctrl->W.active) {
- if (Ctrl->W.mode == 0) { /* Got sigma */
- err_sum += X[j][dimension] * X[j][dimension];
- weight_j = 1.0 / X[j][dimension];
- }
- else { /* Got weight */
- err_sum += pow (X[j][dimension], -2.0);
- weight_j = X[j][dimension];
- }
- weight_j = (Ctrl->W.mode == 0) ? 1.0 / X[j][dimension] : X[j][dimension];
- obs[j] *= weight_j;
+ weight_row = X[row][dimension];
+ obs[row] *= weight_row;
}
- for (i = j; i < nm; i++) {
- if (Ctrl->W.active) weight_i = (Ctrl->W.mode == 0) ? 1.0 / X[i][dimension] : X[i][dimension];
- ij = j * nm + i;
- ji = i * nm + j;
- r = get_radius (GMT, X[i], X[j], dimension);
- if (j < n) { /* Value constraint */
+ for (col = row; col < nm; col++) {
+ if (Ctrl->W.active) weight_col = X[col][dimension];
+ ij = row * nm + col;
+ ji = col * nm + row;
+ r = get_radius (GMT, X[col], X[row], dimension);
+ if (row < n) { /* Value constraint (so entire row uses G) */
A[ij] = G (GMT, r, par, Lz);
- if (ij == ji) continue; /* Do the diagonal terms only once */
- if (i < n) {
- A[ji] = weight_i * A[ij];
+ if (ij == ji) { /* Do the diagonal terms only once */
+ A[ij] *= weight_row;
+ continue;
+ }
+ if (col < n) {
+ A[ji] = weight_col * A[ij];
}
else {
/* Get D, the directional cosine between the two points */
/* Then get C = gmt_dot3v (GMT, D, dataD); */
/* A[ji] = dGdr (r, par, Lg) * C; */
- C = get_dircosine (GMT, D[i-n], X[i], X[j], dimension, false);
+ C = get_dircosine (GMT, D[col-n], X[col], X[row], dimension, false);
grad = dGdr (GMT, r, par, Lg);
- A[ji] = weight_i * grad * C;
+ A[ji] = weight_col * grad * C;
}
- A[ij] *= weight_j;
+ A[ij] *= weight_row;
}
- else if (i > n) { /* Remaining gradient constraints */
- if (ij == ji) continue; /* Diagonal gradient terms are zero */
- C = get_dircosine (GMT, D[j-n], X[i], X[j], dimension, true);
+ else if (col > n) { /* Remaining gradient constraints (entire row uses dGdr) */
+ if (ij == ji) continue; /* Diagonal gradient term from a point to itself is zero */
+ C = get_dircosine (GMT, D[row-n], X[col], X[row], dimension, true);
grad = dGdr (GMT, r, par, Lg);
- A[ij] = weight_j * grad * C;
- C = get_dircosine (GMT, D[i-n], X[i], X[j], dimension, false);
- A[ji] = weight_i * grad * C;
+ A[ij] = weight_row * grad * C;
+ C = get_dircosine (GMT, D[col-n], X[col], X[row], dimension, false);
+ A[ji] = weight_col * grad * C;
}
}
}
+#if 0 /* Dump the A | b matrices */
+ fprintf (stderr, "Weight | Matrix row | obs\n");
+ for (row = 0; row < nm; row++) {
+ if (Ctrl->W.active)
+ fprintf (stderr, "%12.6f\t|\t", X[row][dimension]);
+ else
+ fprintf (stderr, "%12.6f\t|\t", 1.0);
+ ij = row * nm;
+ fprintf (stderr, "%12.6f", A[ij++]);
+ for (col = 1; col < nm; col++, ij++) fprintf (stderr, "\t%12.6f", A[ij]);
+ fprintf (stderr, "\t|\t%12.6f\n", obs[row]);
+ }
+#endif
+
if (Ctrl->W.active) {
err_sum = sqrt (err_sum / nm); /* Mean data variance */
GMT_Report (API, GMT_MSG_VERBOSE, "Mean data uncertainty is %g\n", err_sum);
@@ -2174,6 +2205,9 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if ((error = gmt_set_cols (GMT, GMT_OUT, dimension + 1)) != GMT_NOERROR) {
Return (error);
}
@@ -2194,7 +2228,7 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
out[dimension] += alpha[p] * part;
}
out[dimension] = undo_normalization (out, out[dimension], normalize, norm, dimension);
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
@@ -2231,6 +2265,10 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
gmt_M_free (GMT, xp);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, xp);
+ Return (API->error);
+ }
if (dimension == 1) gmt_prep_tmp_arrays (GMT, Grid->header->n_columns, 1); /* Init or reallocate tmp vector since cannot write to stdout under OpenMP */
} /* Else we are writing a grid */
@@ -2274,7 +2312,7 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
for (col = 0; col < Grid->header->n_columns; col++) {
V[GMT_X] = xp[col];
V[dimension] = GMT->hidden.mem_coord[GMT_X][col];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, V);
+ GMT_Put_Record (API, GMT_WRITE_DATA, V);
}
}
else if (dimension == 3) { /* Must dump 3-D grid as ASCII slices for now */
@@ -2285,7 +2323,7 @@ int GMT_greenspline (void *V_API, int mode, void *args) {
V[GMT_X] = xp[col];
ij = gmt_M_ijp (Grid->header, row, col) + nz_off;
V[dimension] = Out->data[ij];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, V);
+ GMT_Put_Record (API, GMT_WRITE_DATA, V);
}
}
}
diff --git a/src/gshhg/CMakeLists.txt b/src/gshhg/CMakeLists.txt
index eae66a2..abc7147 100644
--- a/src/gshhg/CMakeLists.txt
+++ b/src/gshhg/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/gshhg/README.gshhg b/src/gshhg/README.gshhg
index 5df6f9c..a233f34 100644
--- a/src/gshhg/README.gshhg
+++ b/src/gshhg/README.gshhg
@@ -1,4 +1,4 @@
-# $Id: README.gshhg 16843 2016-07-21 04:01:37Z pwessel $
+# $Id: README.gshhg 17326 2016-11-08 20:28:56Z pwessel $
G S H H G
@@ -319,10 +319,10 @@ tolerances used were:
File Content Tolerance
-------------------------------------------------
-gshhs_h.b High resolution 0.2 km
-gshhs_i.b Interm. resolution 1.0 km
-gshhs_l.b Low resolution 5.0 km
-gshhs_c.b Crude resolution 25 km
+gshhs_h.b High resolution 0.2 km
+gshhs_i.b Intermediate resolution 1.0 km
+gshhs_l.b Low resolution 5.0 km
+gshhs_c.b Crude resolution 25 km
However, should you need to decimate the full data set using a
different tolerance you can use the program gshhg_dp to do so:
diff --git a/src/gshhg/gmt_gshhg.h b/src/gshhg/gmt_gshhg.h
index 04d1823..76ca739 100644
--- a/src/gshhg/gmt_gshhg.h
+++ b/src/gshhg/gmt_gshhg.h
@@ -1,8 +1,8 @@
-/* $Id: gmt_gshhg.h 16206 2016-04-12 23:14:54Z pwessel $
+/* $Id: gmt_gshhg.h 17449 2017-01-16 21:27:04Z pwessel $
*
* Include file defining macros, functions and structures used in gshhg.c
*
- * Copyright (c) 1996-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1996-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gshhg/gshhg.c b/src/gshhg/gshhg.c
index e7e2e26..f5065e0 100644
--- a/src/gshhg/gshhg.c
+++ b/src/gshhg/gshhg.c
@@ -1,13 +1,13 @@
-/* $Id: gshhg.c 16697 2016-07-03 06:17:50Z pwessel $
+/* $Id: gshhg.c 17543 2017-02-09 14:14:29Z jluis $
*
- * Copyright (c) 1996-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1996-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* PROGRAM: gshhg.c
* AUTHOR: Paul Wessel (pwessel at hawaii.edu)
* CREATED: JAN. 28, 1996
* DATE: JAN 1, 2015
- * PURPOSE: To extract ASCII data from the binary GSHHG geography databas
+ * PURPOSE: To extract ASCII data from the binary GSHHG geography database
* as described in the 1996 Wessel & Smith JGR Data Analysis Note.
* VERSION: 1-JAN-2015. For use with GSHHG version 2.3.4
*
diff --git a/src/gshhg/gshhg.h b/src/gshhg/gshhg.h
index f0b7391..a2fa226 100644
--- a/src/gshhg/gshhg.h
+++ b/src/gshhg/gshhg.h
@@ -1,8 +1,8 @@
-/* $Id: gshhg.h 16843 2016-07-21 04:01:37Z pwessel $
+/* $Id: gshhg.h 17449 2017-01-16 21:27:04Z pwessel $
*
* Include file defining structures used in the binary GSHHG files
*
- * Copyright (c) 1996-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1996-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gshhg_version.c b/src/gshhg_version.c
index 1258c63..7d15342 100644
--- a/src/gshhg_version.c
+++ b/src/gshhg_version.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gshhg_version.c 15995 2016-03-31 15:44:12Z jluis $
+ * $Id: gshhg_version.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/gshhg_version.h b/src/gshhg_version.h
index 08dd6a8..a9f86f8 100644
--- a/src/gshhg_version.h
+++ b/src/gshhg_version.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gshhg_version.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: gshhg_version.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/img/CMakeLists.txt b/src/img/CMakeLists.txt
index 29ef20a..a5162a6 100644
--- a/src/img/CMakeLists.txt
+++ b/src/img/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15816 2016-03-06 01:24:53Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/img/README.img b/src/img/README.img
index 92c885f..f796db8 100644
--- a/src/img/README.img
+++ b/src/img/README.img
@@ -1,4 +1,4 @@
- $Id: README.img 15816 2016-03-06 01:24:53Z pwessel $
+ $Id: README.img 17326 2016-11-08 20:28:56Z pwessel $
Maintained by: W H F Smith
Distributed under the GNU Lesser Public License; see file
@@ -50,7 +50,7 @@ byte-order. If you install this supplement as part of the
main GMT installation using the install_gmt script it will
automatically determine if byte-order swapping should be
applied and compile that into the program. Should you want
-to manually controll this (say, because you have already
+to manually control this (say, because you have already
swapped the data files) you can remote the $(GMTSWAP) macro
from the makefile.
Alternatively, if you with to swap the byte-order of the
diff --git a/src/img/img2google b/src/img/img2google
index 0a9b194..54d8eab 100755
--- a/src/img/img2google
+++ b/src/img/img2google
@@ -1,8 +1,8 @@
#!/bin/bash
#
-# $Id: img2google 15178 2015-11-06 10:45:03Z fwobbe $
+# $Id: img2google 17450 2017-01-16 21:34:35Z pwessel $
#
-# Copyright (c) 2009-2015 by David Sandwell and Paul Wessel
+# Copyright (c) 2009-2017 by David Sandwell and Paul Wessel
# Credit to Joaquim Luis for adding KML output from ps2raster
#
# Shell script that will generate a Google Earth png tile from
diff --git a/src/img/img2grd.c b/src/img/img2grd.c
index 1374b7a..10890f8 100644
--- a/src/img/img2grd.c
+++ b/src/img/img2grd.c
@@ -1,6 +1,6 @@
-/* $Id: img2grd.c 16987 2016-08-22 20:52:42Z pwessel $
+/* $Id: img2grd.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* img2grd.c
diff --git a/src/isogmt.in b/src/isogmt.in
index 366c1a4..108ccb3 100755
--- a/src/isogmt.in
+++ b/src/isogmt.in
@@ -1,8 +1,8 @@
#!/bin/bash
#--------------------------------------------------------------------
-# $Id: isogmt.in 15944 2016-03-26 08:43:39Z pwessel $
+# $Id: isogmt.in 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/kiss_fft/kiss_fft.c b/src/kiss_fft/kiss_fft.c
index 2c9233a..fee11df 100644
--- a/src/kiss_fft/kiss_fft.c
+++ b/src/kiss_fft/kiss_fft.c
@@ -18,7 +18,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
#include "_kiss_fft_guts.h"
/* The guts header contains all the multiplication and addition macros that are defined for
- fixed or floating point complex numbers. It also delares the kf_ internal functions.
+ fixed or floating point complex numbers. It also declares the kf_ internal functions.
*/
static void kf_bfly2(
diff --git a/src/kml2gmt.c b/src/kml2gmt.c
index 355f3f3..faa711f 100644
--- a/src/kml2gmt.c
+++ b/src/kml2gmt.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: kml2gmt.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: kml2gmt.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -167,7 +167,7 @@ int GMT_kml2gmt (void *V_API, int mode, void *args) {
FILE *fp = NULL;
struct KML2GMT_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
@@ -203,6 +203,9 @@ int GMT_kml2gmt (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, Ctrl->F.geometry) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
/* We read the input from stdin or file via fscanf and fgets. We cannot easily
* switch this over to using GMT_Get_Record since the kml file may have multiple
@@ -294,7 +297,7 @@ int GMT_kml2gmt (void *V_API, int mode, void *args) {
if (fmode == POINT && single) { /* Process the single point from current record */
for (i = 0; i < length && line[i] != '>'; i++); /* Find end of <coordinates> */
sscanf (&line[i+1], "%lg,%lg,%lg", &out[GMT_X], &out[GMT_Y], &out[GMT_Z]);
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
else if (single) { /* Process multiple points from current single record */
for (i = 0; i < length && line[i] != '>'; i++); /* Find end of <coordinates> */
@@ -302,14 +305,14 @@ int GMT_kml2gmt (void *V_API, int mode, void *args) {
while (gmt_strtok (line, " \t", &pos, word)) { /* Look for clusters of x,y,z separated by whitespace */
n_scan = sscanf (word, "%lg,%lg,%lg", &out[GMT_X], &out[GMT_Y], &out[GMT_Z]);
if (n_scan == 2 || n_scan == 3)
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
else
break;
}
}
else { /* Processes points from separate lines */
while (fscanf (fp, "%lg,%lg,%lg", &out[GMT_X], &out[GMT_Y], &out[GMT_Z])) {
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
}
n_features++;
diff --git a/src/makecpt.c b/src/makecpt.c
index 562cac8..115b4e9 100644
--- a/src/makecpt.c
+++ b/src/makecpt.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: makecpt.c 16793 2016-07-13 23:30:30Z pwessel $
+ * $Id: makecpt.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -72,8 +72,9 @@ struct MAKECPT_CTRL {
bool active;
double z_low, z_high;
} G;
- struct I { /* -I */
+ struct I { /* -I[z][c] */
bool active;
+ unsigned int mode;
} I;
struct M { /* -M */
bool active;
@@ -123,7 +124,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
gmt_show_name_and_purpose (API, THIS_MODULE_LIB, THIS_MODULE_NAME, THIS_MODULE_PURPOSE);
if (level == GMT_MODULE_PURPOSE) return (GMT_NOERROR);
GMT_Message (API, GMT_TIME_NONE, "usage: makecpt [-A[+]<transparency>] [-C<cpt>|colors] [-D[i|o]] [-E<nlevels>] [-F[R|r|h|c][+c]] [-G<zlo>/<zhi>]\n");
- GMT_Message (API, GMT_TIME_NONE, " [-I] [-L] [-M] [-N] [-Q[i|o]] [-T<z_min>/<z_max>[/<z_inc>[+]] | -T<table> | -T<z1,z2,...zn>] [%s]\n\t[-Z] [%s] [%s] [%s]\n\t[%s]\n\n", GMT_V_OPT, GMT_bi_OPT, GMT_di_OPT, GMT_i_OPT, GMT_ho_OPT);
+ GMT_Message (API, GMT_TIME_NONE, " [-I[c][z]] [-L] [-M] [-N] [-Q[i|o]] [-T<z_min>/<z_max>[/<z_inc>[+]] | -T<table> | -T<z1,z2,...zn>] [%s] [-W]\n\t[-Z] [%s] [%s] [%s]\n\t[%s]\n\n", GMT_V_OPT, GMT_bi_OPT, GMT_di_OPT, GMT_i_OPT, GMT_ho_OPT);
if (level == GMT_SYNOPSIS) return (GMT_MODULE_SYNOPSIS);
@@ -141,8 +142,10 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t r for r/g/b only, h for h-s-v, c for c/m/y/k) [Default uses the input model]\n");
GMT_Message (API, GMT_TIME_NONE, "\t Append +c to output a discrete CPT in categorical CPT format.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-G Truncate incoming CPT to be limited to the z-range <zlo>/<zhi>.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t To accept one of the incoming limits, set to other to NaN.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t-I Reverse sense of color table as well as back- and foreground color.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t To accept one of the incoming limits, set that limit to NaN.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-I Reverse sense of CPT in one or two ways:\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t -Ic Reverse sense of color table as well as back- and foreground color [Default].\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t -Iz Reverse sign of z-values in the color table (takes affect before -G, T are consulted).\n");
GMT_Message (API, GMT_TIME_NONE, "\t-M Use GMT defaults to set back-, foreground, and NaN colors\n");
GMT_Message (API, GMT_TIME_NONE, "\t [Default uses the settings in the color table].\n");
GMT_Message (API, GMT_TIME_NONE, "\t-N Do not write back-, foreground, and NaN colors [Default will].\n");
@@ -212,12 +215,9 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct MAKECPT_CTRL *Ctrl, struct GMT
}
break;
case 'F': /* Sets format for color reporting */
- if (gmt_get_modifier (opt->arg, 'c', txt_a)) {
- Ctrl->F.cat = true;
- if (txt_a[0] == '\0') break;
- }
Ctrl->F.active = true;
- switch (txt_a[0]) {
+ if (gmt_get_modifier (opt->arg, 'c', txt_a)) Ctrl->F.cat = true;
+ switch (opt->arg[0]) {
case 'r': Ctrl->F.model = GMT_RGB + GMT_NO_COLORNAMES; break;
case 'h': Ctrl->F.model = GMT_HSV; break;
case 'c': Ctrl->F.model = GMT_CMYK; break;
@@ -235,6 +235,8 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct MAKECPT_CTRL *Ctrl, struct GMT
break;
case 'I': /* Invert table */
Ctrl->I.active = true;
+ if ((Ctrl->I.mode = gmt_parse_inv_cpt (GMT, opt->arg)) == UINT_MAX)
+ n_errors++;
break;
case 'M': /* Use GMT defaults for BNF colors */
Ctrl->M.active = true;
@@ -293,8 +295,8 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct MAKECPT_CTRL *Ctrl, struct GMT
n_errors += gmt_M_check_condition (GMT, Ctrl->A.active && (Ctrl->A.value < 0.0 || Ctrl->A.value > 1.0),
"Syntax error -A: Transparency must be n 0-100 range [0 or opaque]\n");
n_errors += gmt_M_check_condition (GMT, Ctrl->E.active && Ctrl->T.active, "Syntax error -E: Cannot be combined with -T\n");
- if (Ctrl->T.active && !Ctrl->T.interpolate && Ctrl->Z.active) {
- GMT_Report (GMT->parent, GMT_MSG_VERBOSE, "Warning -T option: Without z_inc, -Z has no effect (ignored)\n");
+ if (Ctrl->T.active && !Ctrl->T.interpolate && Ctrl->Z.active && !strchr (Ctrl->C.file, ',')) {
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Warning -T option: Without z_inc, -Z has no effect (ignored)\n");
Ctrl->Z.active = false;
}
@@ -351,12 +353,21 @@ int GMT_makecpt (void *V_API, int mode, void *args) {
if (Ctrl->M.active) cpt_flags |= GMT_CPT_NO_BNF; /* bit 0 controls if BFN is determined by parameters */
if (Ctrl->D.mode == 1) cpt_flags |= GMT_CPT_EXTEND_BNF; /* bit 1 controls if BF will be set to equal bottom/top rgb value */
+ if (Ctrl->Z.active) cpt_flags |= GMT_CPT_CONTINUOUS; /* Controls if final CPT should be continuous in case input is a list of colors */
if ((Pin = GMT_Read_Data (API, GMT_IS_PALETTE, GMT_IS_FILE, GMT_IS_NONE, cpt_flags, NULL, Ctrl->C.file, NULL)) == NULL) {
Return (API->error);
}
+ if (Ctrl->I.mode & GMT_CPT_Z_REVERSE) /* Must reverse the z-values before anything else */
+ gmt_scale_cpt (GMT, Pin, -1.0);
+
GMT_Report (API, GMT_MSG_VERBOSE, "CPT is %s\n", kind[Pin->is_continuous]);
- if (Ctrl->G.active) Pin = gmt_truncate_cpt (GMT, Pin, Ctrl->G.z_low, Ctrl->G.z_high); /* Possibly truncate the CPT */
+ if (Ctrl->G.active) { /* Attempt truncation */
+ struct GMT_PALETTE *Ptrunc = gmt_truncate_cpt (GMT, Pin, Ctrl->G.z_low, Ctrl->G.z_high); /* Possibly truncate the CPT */
+ if (Ptrunc == NULL)
+ Return (API->error);
+ Pin = Ptrunc;
+ }
if (Pin->categorical) Ctrl->W.active = true; /* Do not want to sample a categorical table */
if (Ctrl->E.active && Ctrl->E.levels == 0) Ctrl->E.levels = Pin->n_colors + 1; /* Default number of levels */
@@ -384,6 +395,22 @@ int GMT_makecpt (void *V_API, int mode, void *args) {
i = 0;
while ((gmt_strtok (Ctrl->T.list, ",", &pos, p)))
z[i++] = atof (p);
+ if (Pin->mode & GMT_CPT_TEMPORARY) { /* Got -Zcolor,color,... and -Tz,z,z */
+ int k;
+ extern void gmtlib_init_cpt (struct GMT_CTRL *GMT, struct GMT_PALETTE *P);
+ if (nz != (int)(Pin->n_colors + 1)) {
+ GMT_Report (API, GMT_MSG_NORMAL, "Error: Mistmatch between number of entries in color list and z list\n");
+ Return (GMT_RUNTIME_ERROR);
+ }
+ if ((Pout = GMT_Duplicate_Data (API, GMT_IS_PALETTE, GMT_DUPLICATE_ALLOC, Pin)) == NULL) return (API->error);
+ for (i = k = 0; i < (int)Pout->n_colors; i++) {
+ Pout->data[i].z_low = z[k];
+ Pout->data[i].z_high = z[++k];
+ }
+ gmtlib_init_cpt (GMT, Pin); /* Recalculate delta rgb's */
+ if (Ctrl->I.mode & GMT_CPT_C_REVERSE) /* Also flip the colors */
+ gmt_invert_cpt (GMT, Pout);
+ }
}
else if (Ctrl->T.active && Ctrl->Q.mode == 2) { /* Establish a log10 grid */
if (!(Ctrl->T.inc == 1.0 || Ctrl->T.inc == 2.0 || Ctrl->T.inc == 3.0)) {
@@ -423,8 +450,8 @@ int GMT_makecpt (void *V_API, int mode, void *args) {
}
else { /* Just copy what was in the CPT */
if ((Pout = GMT_Duplicate_Data (API, GMT_IS_PALETTE, GMT_DUPLICATE_ALLOC, Pin)) == NULL) return (API->error);
- gmt_stretch_cpt (GMT, Pout, Ctrl->T.low, Ctrl->T.high, Ctrl->Z.active); /* Stretch to given range or use natural range if 0/0 */
- if (Ctrl->I.active) /* Also flip the colors */
+ gmt_stretch_cpt (GMT, Pout, Ctrl->T.low, Ctrl->T.high); /* Stretch to given range or use natural range if 0/0 */
+ if (Ctrl->I.mode & GMT_CPT_C_REVERSE) /* Also flip the colors */
gmt_invert_cpt (GMT, Pout);
}
@@ -434,7 +461,7 @@ int GMT_makecpt (void *V_API, int mode, void *args) {
/* Now we can resample the CPT and write out the result */
- Pout = gmt_sample_cpt (GMT, Pin, z, nz, Ctrl->Z.active, Ctrl->I.active, Ctrl->Q.mode, Ctrl->W.active);
+ Pout = gmt_sample_cpt (GMT, Pin, z, nz, Ctrl->Z.active, Ctrl->I.mode & GMT_CPT_C_REVERSE, Ctrl->Q.mode, Ctrl->W.active);
}
gmt_M_free (GMT, z); /* It may also have been allocated inside gmtlib_log_array() */
diff --git a/src/mapproject.c b/src/mapproject.c
index eec4a47..1600d4a 100644
--- a/src/mapproject.c
+++ b/src/mapproject.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
-* $Id: mapproject.c 17172 2016-10-06 15:43:46Z pwessel $
+* $Id: mapproject.c 17560 2017-02-17 22:05:42Z pwessel $
*
-* Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+* Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -667,7 +667,10 @@ int GMT_mapproject (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, w_out); /* Write this to output */
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
+ GMT_Put_Record (API, GMT_WRITE_DATA, w_out); /* Write this to output */
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data input */
Return (API->error);
}
@@ -833,15 +836,18 @@ int GMT_mapproject (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_IN, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data input and sets access mode */
Return (API->error);
}
- rmode = (gmt_is_ascii_record (GMT, options) && gmt_get_cols (GMT, GMT_IN) > 2) ? GMT_READ_MIXED : GMT_READ_DOUBLE;
- family = (rmode == GMT_READ_DOUBLE) ? GMT_IS_DATASET : GMT_IS_TEXTSET;
- geometry = (rmode == GMT_READ_DOUBLE) ? GMT_IS_POINT : GMT_IS_NONE;
+ rmode = (gmt_is_ascii_record (GMT, options) && gmt_get_cols (GMT, GMT_IN) > 2) ? GMT_READ_MIXED : GMT_READ_DATA;
+ family = (rmode == GMT_READ_DATA) ? GMT_IS_DATASET : GMT_IS_TEXTSET;
+ geometry = (rmode == GMT_READ_DATA) ? GMT_IS_POINT : GMT_IS_NONE;
if (GMT_Init_IO (API, family, geometry, GMT_OUT, GMT_ADD_DEFAULT, 0, options) != GMT_NOERROR) { /* Establishes data output */
Return (API->error);
}
if (GMT_Begin_IO (API, family, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, geometry) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
gmt_set_cols (GMT, GMT_OUT, gmt_get_cols (GMT, GMT_IN));
n = n_read_in_seg = 0;
@@ -963,7 +969,7 @@ int GMT_mapproject (void *V_API, int mode, void *args) {
n_output = gmt_get_cols (GMT, GMT_OUT);
}
for (k = two; k < n_output; k++) out[k] = in[k];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
n++;
if (n%1000 == 0) GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Projected %" PRIu64 " points\r", n);
@@ -1104,7 +1110,7 @@ int GMT_mapproject (void *V_API, int mode, void *args) {
out[ks++] = xnear;
out[ks++] = ynear;
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
}
else {
@@ -1142,7 +1148,7 @@ int GMT_mapproject (void *V_API, int mode, void *args) {
n_output = gmt_get_cols (GMT, GMT_OUT);
}
for (k = two; k < n_output; k++) out[k] = in[k];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
}
n++;
diff --git a/src/meca/CMakeLists.txt b/src/meca/CMakeLists.txt
index 2733cd0..71b8791 100644
--- a/src/meca/CMakeLists.txt
+++ b/src/meca/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 17057 2016-09-01 17:55:27Z jluis $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/meca/pscoupe.c b/src/meca/pscoupe.c
index 5ace9d1..02fe1fa 100644
--- a/src/meca/pscoupe.c
+++ b/src/meca/pscoupe.c
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------
- * $Id: pscoupe.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: pscoupe.c 17326 2016-11-08 20:28:56Z pwessel $
*
* Copyright (c) 1996-2012 by G. Patau
* Donated to the GMT project by G. Patau upon her retirement from IGPG
@@ -789,9 +789,9 @@ int GMT_pscoupe (void *V_API, int mode, void *args) {
struct GMT_PALETTE *CPT = NULL;
struct PSCOUPE_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
diff --git a/src/meca/psmeca.c b/src/meca/psmeca.c
index 5a62b41..87a24c3 100644
--- a/src/meca/psmeca.c
+++ b/src/meca/psmeca.c
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------
- * $Id: psmeca.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: psmeca.c 17326 2016-11-08 20:28:56Z pwessel $
*
* Copyright (c) 1996-2012 by G. Patau
* Donated to the GMT project by G. Patau upon her retirement from IGPG
@@ -508,9 +508,9 @@ int GMT_psmeca (void *V_API, int mode, void *args) {
struct GMT_PALETTE *CPT = NULL;
struct PSMECA_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
diff --git a/src/meca/pspolar.c b/src/meca/pspolar.c
index 0f317b0..1d7b3cd 100644
--- a/src/meca/pspolar.c
+++ b/src/meca/pspolar.c
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------
- * $Id: pspolar.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: pspolar.c 17236 2016-10-23 00:28:30Z pwessel $
*
* Copyright (c) 1996-2012 by G. Patau
* Donated to the GMT project by G. Patau upon her retirement from IGPG
@@ -478,7 +478,7 @@ int GMT_pspolar (void *V_API, int mode, void *args) {
if (Ctrl->N.active) {
gmt_map_outside (GMT, Ctrl->D.lon, Ctrl->D.lat);
if (abs (GMT->current.map.this_x_status) > 1 || abs (GMT->current.map.this_y_status) > 1) {
- GMT_Report (API, GMT_MSG_VERBOSE, "Point give by -D is outside map; no plotting occours.");
+ GMT_Report (API, GMT_MSG_VERBOSE, "Point given by -D is outside map; no plotting occurs.");
Return (GMT_NOERROR);
};
}
diff --git a/src/meca/pssac.c b/src/meca/pssac.c
index ce01fc9..b1fab57 100644
--- a/src/meca/pssac.c
+++ b/src/meca/pssac.c
@@ -1,6 +1,6 @@
/*--------------------------------------------------------------------
*
- * Copyright (c) 2016 by Dongdong Tian
+ * Copyright (c) 2016-2017 by Dongdong Tian
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -170,11 +170,11 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t i: integral\n");
GMT_Message (API, GMT_TIME_NONE, "\t q: square\n");
GMT_Message (API, GMT_TIME_NONE, "\t r: remove mean value\n");
- GMT_Message (API, GMT_TIME_NONE, "\t i|q|r can repeat mutiple times. -Frii will convert accerate to displacement.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t i|q|r can repeat multiple times. -Frii will convert accerate to displacement.\n");
GMT_Message (API, GMT_TIME_NONE, "\t The order of i|q|r controls the order of the data processing.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t-G Paint postive or negative portion of traces.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-G Paint positive or negative portion of traces.\n");
GMT_Message (API, GMT_TIME_NONE, "\t If only -G is used, default to fill the positive portion black.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t [p|n] controls the painting of postive portion or negative portion. Repeat -G option to specify fills for pos/neg portion, respectively.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t [p|n] controls the painting of positive portion or negative portion. Repeat -G option to specify fills for pos/neg portion, respectively.\n");
GMT_Message (API, GMT_TIME_NONE, "\t +g<fill>: color to fill\n");
GMT_Message (API, GMT_TIME_NONE, "\t +t<t0>/<t1>: paint traces between t0 and t1 only. The reference time of t0 and t1 is determined by -T option.\n");
GMT_Message (API, GMT_TIME_NONE, "\t +z<zero>: define zero line. From <zero> to top is positive portion, from <zero> to bottom is negative portion.\n");
@@ -188,7 +188,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t <alpha> > 0, multiply all traces by size*r^alpha, r is the distance range in km.\n");
GMT_Option (API, "O,P");
GMT_Message (API, GMT_TIME_NONE, "\t-Q Plot traces vertically.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t-S Specify the time scale in seconds per <unit> while plotting on geographic plots. Use PROJ_LENGTH_UNIT if <unit> is ommited.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-S Specify the time scale in seconds per <unit> while plotting on geographic plots. Use PROJ_LENGTH_UNIT if <unit> is omitted.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-T Time alignment. \n");
GMT_Message (API, GMT_TIME_NONE, "\t +t<tmark> align all trace along time mark. Choose <tmark> from -5(b), -4(e), -3(o), -2(a), 0-9(t0-t9).\n");
GMT_Message (API, GMT_TIME_NONE, "\t +r<reduce_vel> reduce velocity in km/s.\n");
@@ -376,13 +376,12 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct PSSAC_CTRL *Ctrl, struct GMT_O
n_errors += gmt_M_check_condition (GMT, !GMT->common.J.active, "Syntax error: Must specify a map projection with the -J option\n");
n_errors += gmt_M_check_condition (GMT, Ctrl->S.active && gmt_M_is_zero(Ctrl->S.sec_per_measure), "Syntax error -S option: <sec_per_measure> must be nonzero\n");
n_errors += gmt_M_check_condition (GMT, Ctrl->T.reduce && gmt_M_is_zero(Ctrl->T.reduce_vel), "Syntax error -T option: <reduce_vel> must be nonzero\n");
- n_errors += gmt_M_check_condition (GMT, Ctrl->T.align && !(Ctrl->T.tmark >= -5 && Ctrl->T.tmark <= 9 && Ctrl->T.tmark != -1), "Syntax error -T option: <tmark> should be choosed from -5, -4, -3, -2, 0-9\n");
+ n_errors += gmt_M_check_condition (GMT, Ctrl->T.align && !(Ctrl->T.tmark >= -5 && Ctrl->T.tmark <= 9 && Ctrl->T.tmark != -1), "Syntax error -T option: <tmark> should be chosen from -5, -4, -3, -2, 0-9\n");
return (n_errors ? GMT_PARSE_ERROR : GMT_OK);
}
GMT_LOCAL double linear_interpolate_x (double x0, double y0, double x1, double y1, double y) {
- if (y<y0 || y>y1) return x1; // no extrapolation
if (doubleAlmostEqualZero(y0, y1)) return x0;
return (x1-x0)/(y1-y0)*(y-y0) + x0;
}
@@ -436,7 +435,7 @@ GMT_LOCAL void paint_phase(struct GMT_CTRL *GMT, struct PSSAC_CTRL *Ctrl, struct
/* last point of polygon */
yy[ii] = zero;
- if (i == n)
+ if (i == n || x[i] > t1)
xx[ii] = x[i-1];
else
xx[ii] = linear_interpolate_x(x[i], y[i], x[i-1], y[i-1], yy[ii]);
@@ -567,9 +566,9 @@ int GMT_pssac (void *V_API, int mode, void *args) { /* High-level function that
SACHEAD hd;
struct GMT_PEN current_pen;
struct PSSAC_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -749,7 +748,7 @@ int GMT_pssac (void *V_API, int mode, void *args) { /* High-level function that
if (!Ctrl->C.active) x0 = hd.b - tref;
else x0 = Ctrl->C.t0;
- /* determin Y0 */
+ /* determine Y0 */
if (Ctrl->E.active) {
switch (Ctrl->E.keys[0]) {
case 'a':
@@ -849,19 +848,29 @@ int GMT_pssac (void *V_API, int mode, void *args) { /* High-level function that
if (!Ctrl->Q.active) zero = Ctrl->G.zero[i]*yscale + y0;
else zero = Ctrl->G.zero[i]*yscale + x0;
- if (!Ctrl->G.cut[i]) {
- if (!Ctrl->Q.active) {
- Ctrl->G.t0[i] = (float)x[0];
- Ctrl->G.t1[i] = (float)x[hd.npts-1];
- }
- else {
- Ctrl->G.t0[i] = (float)y[0];
- Ctrl->G.t1[i] = (float)y[hd.npts-1];
+ if (!Ctrl->G.cut[i]) {
+ if (!Ctrl->Q.active) {
+ if (gmt_M_is_linear(GMT)) {
+ Ctrl->G.t0[i] = MAX((float)x[0], (float)GMT->common.R.wesn[XLO]);
+ Ctrl->G.t1[i] = MIN((float)x[hd.npts-1], (float)GMT->common.R.wesn[XHI]);
+ } else {
+ Ctrl->G.t0[i] = (float)x[0];
+ Ctrl->G.t1[i] = (float)x[hd.npts-1];
+ }
}
+ else {
+ if (gmt_M_is_linear(GMT)) {
+ Ctrl->G.t0[i] = MAX((float)y[0], (float)GMT->common.R.wesn[YLO]);
+ Ctrl->G.t1[i] = MIN((float)y[hd.npts-1], (float)GMT->common.R.wesn[YHI]);
+ } else {
+ Ctrl->G.t0[i] = (float)y[0];
+ Ctrl->G.t1[i] = (float)y[hd.npts-1];
+ }
+ }
}
GMT_Report (API, GMT_MSG_VERBOSE, "=> %s: Painting traces: zero=%g t0=%g t1=%g\n",
L[n].file, zero, Ctrl->G.t0[i], Ctrl->G.t1[i]);
- paint_phase(GMT, Ctrl, PSL, x, y, npts, zero, Ctrl->G.t0[i], Ctrl->G.t1[i], i);
+ paint_phase(GMT, Ctrl, PSL, x, y, hd.npts, zero, Ctrl->G.t0[i], Ctrl->G.t1[i], i);
}
}
gmt_M_free(GMT, x);
diff --git a/src/meca/psvelo.c b/src/meca/psvelo.c
index c644a62..9803e7f 100644
--- a/src/meca/psvelo.c
+++ b/src/meca/psvelo.c
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------
- * $Id: psvelo.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: psvelo.c 17326 2016-11-08 20:28:56Z pwessel $
*
* Copyright (c) 1996-2012 by G. Patau
* Donated to the GMT project by G. Patau upon her retirement from IGPG
@@ -319,9 +319,9 @@ int GMT_psvelo (void *V_API, int mode, void *args) {
char *line = NULL, col[12][GMT_LEN64];
struct PSVELO_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
diff --git a/src/meca/sacio.c b/src/meca/sacio.c
index acdbe59..507bd47 100644
--- a/src/meca/sacio.c
+++ b/src/meca/sacio.c
@@ -16,7 +16,7 @@
* Revisions: *
* 2014-03-19 Dongdong Tian Modified from Prof. Lupei Zhu's code *
* 2014-08-02 Dongdong Tian Better function naming and coding style *
- * 2014-08-13 Dongdong Tian Add new funtions: *
+ * 2014-08-13 Dongdong Tian Add new functions: *
* - read_sac_xy *
* - write_sac_xy *
* - sac_head_index *
diff --git a/src/meca/sacio.h b/src/meca/sacio.h
index 9752ffd..7a19716 100644
--- a/src/meca/sacio.h
+++ b/src/meca/sacio.h
@@ -75,10 +75,10 @@ typedef struct sac_head {
float depmax; /* maximum value of dependent variable */
float scale; /* amplitude scale factor (not used) */
float odelta; /* Observed increment */
- float b; /* RD begining value of the independent variable */
+ float b; /* RD beginning value of the independent variable */
float e; /* RD ending value of the independent variable */
- float o; /* event origin time(seconds wrt referece time)*/
- float a; /* 1st arrival time (seconds wrt referece time)*/
+ float o; /* event origin time(seconds wrt reference time)*/
+ float a; /* 1st arrival time (seconds wrt reference time)*/
float internal1; /* internal use */
float t0; /* user-defined time pick */
float t1; /* user-defined time pick */
@@ -199,7 +199,7 @@ typedef struct sac_head {
char kuser0[9]; /* User defined variable storage area */
char kuser1[9]; /* User defined variable storage area */
char kuser2[9]; /* User defined variable storage area */
- char kcmpnm[9]; /* F channel name, three charaters */
+ char kcmpnm[9]; /* F channel name, three characters */
char knetwk[9]; /* name of seismic network */
char kdatrd[9]; /* date data was read onto computer */
char kinst[9]; /* generic name of recording instrument */
diff --git a/src/meca/utilmeca.c b/src/meca/utilmeca.c
index eac625a..9b054f3 100644
--- a/src/meca/utilmeca.c
+++ b/src/meca/utilmeca.c
@@ -1,4 +1,4 @@
-/* $Id: utilmeca.c 16933 2016-08-18 21:54:44Z remko $
+/* $Id: utilmeca.c 17331 2016-11-10 18:13:44Z pwessel $
* Copyright (c) 1996-2012 by G. Patau
* Donated to the GMT project by G. Patau upon her retirement from IGPG
* Distributed under the Lesser GNU Public Licence
@@ -1170,8 +1170,8 @@ int meca_trace_cross (struct GMT_CTRL *GMT, double slon, double slat, double eps
meca_trace_arrow (GMT, slon, slat, dx, dy, sscale, &x1, &y1, &x2, &y2);
if (eps1 < 0.0) {
- double_swap (x1, x2);
- double_swap (y1, y2);
+ gmt_M_double_swap (x1, x2);
+ gmt_M_double_swap (y1, y2);
}
if (hypot (x1-x2,y1-y2) <= 1.5 * h_length) {
@@ -1196,8 +1196,8 @@ int meca_trace_cross (struct GMT_CTRL *GMT, double slon, double slat, double eps
meca_trace_arrow (GMT, slon, slat, -dx, -dy, sscale, &x1, &y1, &x2, &y2);
if (eps1 < 0.0) {
- double_swap (x1, x2);
- double_swap (y1, y2);
+ gmt_M_double_swap (x1, x2);
+ gmt_M_double_swap (y1, y2);
}
if (hypot (x1-x2,y1-y2) <= 1.5 * h_length) {
@@ -1223,8 +1223,8 @@ int meca_trace_cross (struct GMT_CTRL *GMT, double slon, double slat, double eps
meca_trace_arrow (GMT, slon, slat, dx, dy, sscale, &x1, &y1, &x2, &y2);
if (eps2 > 0.0) {
- double_swap (x1, x2);
- double_swap (y1, y2);
+ gmt_M_double_swap (x1, x2);
+ gmt_M_double_swap (y1, y2);
}
/* arrow should go toward slat, slon */
@@ -1249,8 +1249,8 @@ int meca_trace_cross (struct GMT_CTRL *GMT, double slon, double slat, double eps
meca_trace_arrow (GMT, slon, slat, -dx, -dy, sscale, &x1, &y1, &x2, &y2);
if (eps2 > 0.0) {
- double_swap (x1, x2);
- double_swap (y1, y2);
+ gmt_M_double_swap (x1, x2);
+ gmt_M_double_swap (y1, y2);
}
/* arrow should go toward slat, slon */
diff --git a/src/mgd77/CMakeLists.txt b/src/mgd77/CMakeLists.txt
index 2537d00..7394514 100644
--- a/src/mgd77/CMakeLists.txt
+++ b/src/mgd77/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 16562 2016-06-18 04:04:08Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/mgd77/cm4_functions.c b/src/mgd77/cm4_functions.c
index 08947fd..b7df895 100644
--- a/src/mgd77/cm4_functions.c
+++ b/src/mgd77/cm4_functions.c
@@ -1,5 +1,5 @@
/*---------------------------------------------------------------------------
- * $Id: cm4_functions.c 17138 2016-09-25 23:03:40Z jluis $
+ * $Id: cm4_functions.c 17389 2017-01-09 21:31:14Z jluis $
*
*
* File: cm4_functions.c
@@ -207,7 +207,7 @@ int MGD77_cm4field (struct GMT_CTRL *GMT, struct MGD77_CM4 *Ctrl, double *p_lon,
}
c_unused = fgets(line, GMT_BUFSIZ, fp);
- (void)(c_unused++); /* silence -Wunused-but-set-variable and PVS warning of double assignement */
+ (void)(c_unused++); /* silence -Wunused-but-set-variable and PVS warning of double assignment */
sscanf (line, "%d", &lum1);
c_unused = fgets(line, GMT_BUFSIZ, fp);
(void)c_unused; /* silence -Wunused-but-set-variable */
@@ -327,9 +327,9 @@ int MGD77_cm4field (struct GMT_CTRL *GMT, struct MGD77_CM4 *Ctrl, double *p_lon,
}
jaft = 0;
n = 0;
- n_Dst_rows = 18262; /* Current (13-05-2009) number of lines in Dst_all.wdc file */
- dstx = calloc(((size_t)n_Dst_rows * 24U), sizeof(double));
- /* One improvment would be to compute year_min/year_max and retain only the needed data in dstx */
+ n_Dst_rows = 21884 * 24; /* Current (13-05-2009) number of lines in Dst_all.wdc file */
+ dstx = calloc(((size_t)n_Dst_rows), sizeof(double));
+ /* One improvement would be to compute year_min/year_max and retain only the needed data in dstx */
while (fgets (line, GMT_BUFSIZ, fp)) {
sscanf (&line[3], "%2d %2d", &jyr, &jmon);
@@ -343,11 +343,11 @@ int MGD77_cm4field (struct GMT_CTRL *GMT, struct MGD77_CM4 *Ctrl, double *p_lon,
jaft = 1;
mjdl = jmjd;
}
- if (n >= n_Dst_rows) {
- n_Dst_rows += 1000;
+ k = (jmjd - mjdl) * 24;
+ if (k >= n_Dst_rows) {
+ n_Dst_rows += (100 * 24);
dstx = realloc(dstx, (size_t)(n_Dst_rows * 24) * sizeof(double));
}
- k = (jmjd - mjdl) * 24;
for (j = 0; j < 24; ++j)
dstx[k + j] = (double)jdst[j];
n++;
@@ -434,7 +434,7 @@ int MGD77_cm4field (struct GMT_CTRL *GMT, struct MGD77_CM4 *Ctrl, double *p_lon,
pleg = calloc(4422U, sizeof(double));
rcur = calloc(9104U, sizeof(double));
- /* LOOP over number of input points (many computations below are useless repeated - room for improvment */
+ /* LOOP over number of input points (many computations below are useless repeated - room for improvement */
for (n = 0; n < Ctrl->CM4_DATA.n_pts; ++n) {
memset(bmdl, 0, 21 * sizeof(double));
if (Ctrl->CM4_L.curr)
diff --git a/src/mgd77/mgd77.c b/src/mgd77/mgd77.c
index 93e24e2..e63575c 100644
--- a/src/mgd77/mgd77.c
+++ b/src/mgd77/mgd77.c
@@ -1,7 +1,7 @@
/*---------------------------------------------------------------------------
- * $Id: mgd77.c 17163 2016-10-03 19:17:34Z pwessel $
+ * $Id: mgd77.c 17590 2017-02-24 00:06:07Z pwessel $
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*
* File: mgd77.c
@@ -1995,6 +1995,8 @@ static int MGD77_Read_Data_cdf (struct GMT_CTRL *GMT, char *file, struct MGD77_C
else {
values = MGD77_Read_Column (GMT, F->nc_id, start, count, scale, offset, &(S->H.info[c].col[id]));
#if 0
+ /* Only mgd77list reports times that may need to be modified (e..g, to get hours from start)
+ * so we dont do anything here but let that happen naturally later. */
if (F->adjust_time && !strcmp (S->H.info[c].col[id].abbrev, "time")) { /* Change epoch */
for (rec = 0; rec < count[0]; rec++) values[rec] = MGD77_utime2time (GMT, F, values[rec]);
}
@@ -2068,7 +2070,7 @@ static int MGD77_Read_Data_cdf (struct GMT_CTRL *GMT, char *file, struct MGD77_C
char *abbrev[N_E77_AUX_FIELDS] = {"time", "lat", "lon", "twt", "mtf1", "gobs", "eot"};
/* First make sure the auxiliary data fields are set */
for (i = 0; i < N_E77_AUX_FIELDS; i++) {
- if (!E.needed[i]) continue; /* Dont need this particular column */
+ if (!E.needed[i]) continue; /* Don't need this particular column */
if (E.got_it[nc_id[i]]) { /* This aux is actually one of the output columns so we have already read it - just use a pointer */
s_col = MGD77_Info_from_Abbrev (GMT, abbrev[i], &S->H, &c, &id); /* Which output column is it? */
if (s_col == MGD77_NOT_SET) s_col = 0; /* Just to stem a Coverity issue */
@@ -2098,7 +2100,7 @@ static int MGD77_Read_Data_cdf (struct GMT_CTRL *GMT, char *file, struct MGD77_C
has_prev_twt = true;
prev_twt = E.aux[E77_AUX_FIELD_TWT][rec];
}
- E.aux[E77_AUX_FIELD_TWT][rec] += twt_pdrwrap_corr; /* aux could be either auxilliary or pointer to output column */
+ E.aux[E77_AUX_FIELD_TWT][rec] += twt_pdrwrap_corr; /* aux could be either auxiliary or pointer to output column */
}
}
@@ -2136,7 +2138,7 @@ static int MGD77_Read_Data_cdf (struct GMT_CTRL *GMT, char *file, struct MGD77_C
}
}
- for (i = 0; i < N_E77_AUX_FIELDS; i++) { /* Free auxilliary columns not part of the output */
+ for (i = 0; i < N_E77_AUX_FIELDS; i++) { /* Free auxiliary columns not part of the output */
if (E.needed[i] == 2) gmt_M_free (GMT, E.aux[i]);
}
}
@@ -2222,7 +2224,12 @@ static int MGD77_Read_Data_Record_cdf (struct GMT_CTRL *GMT, struct MGD77_CONTRO
MGD77_do_scale_offset_after_read (GMT, &dvals[n_val], 1, H->info[c].col[id].factor, H->info[c].col[id].offset, MGD77_NaN_val[H->info[c].col[id].type]);
n_val++;
}
- /* if (F->adjust_time && H->info[c].col[id].var_id == NCPOS_TIME) dvals[n_val] = MGD77_utime2time (GMT, F, dvals[n_val]); */
+ /* Would have been helpful with a comment here as to why this is excluded. */
+#if 0
+ /* Only mgd77list reports times that may need to be modified (e..g, to get hours from start)
+ * so we dont do anything here but let that happen naturally later. */
+ if (F->adjust_time && H->info[c].col[id].var_id == NCPOS_TIME) dvals[n_val] = MGD77_utime2time (GMT, F, dvals[n_val]);
+#endif
}
return (MGD77_NO_ERROR);
}
@@ -2693,8 +2700,9 @@ int MGD77_Get_Path (struct GMT_CTRL *GMT, char *track_path, char *track, struct
bool append = false, hard_path;
char geo_path[GMT_BUFSIZ] = {""};
- for (fmt = 0; fmt < MGD77_FORMAT_ANY; fmt++) { /* Determine if given track name contains one of the 3 possible extensions */
- if (strchr (track, '.') && (strlen(track)-strlen(MGD77_suffix[fmt])) > 0 && !strncmp (&track[strlen(track)-strlen(MGD77_suffix[fmt])], MGD77_suffix[fmt], strlen(MGD77_suffix[fmt]))) has_suffix = fmt;
+ for (fmt = 0; fmt < MGD77_FORMAT_ANY; fmt++) { /* Determine if given track name contains one of the 4 possible extensions */
+ if (strchr (track, '.') && (strlen(track)-strlen(MGD77_suffix[fmt])) > 0 && !strncmp (&track[strlen(track)-strlen(MGD77_suffix[fmt])], MGD77_suffix[fmt], strlen(MGD77_suffix[fmt])))
+ has_suffix = fmt;
}
if (has_suffix != MGD77_NOT_SET && !MGD77_format_allowed[has_suffix]) { /* Filename clashes with allowed extensions */
@@ -2730,8 +2738,8 @@ int MGD77_Get_Path (struct GMT_CTRL *GMT, char *track_path, char *track, struct
f_start = f_stop = MGD77_FORMAT_M7T;
break;
case MGD77_FORMAT_ANY: /* Not set, try all */
- f_start = MGD77_FORMAT_M77;
- f_stop = MGD77_FORMAT_M7T;
+ f_start = MGD77_FORMAT_CDF;
+ f_stop = MGD77_FORMAT_TBL;
break;
default: /* Bad */
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Bad file format specified given (%d)\n", F->format);
@@ -2812,7 +2820,7 @@ int MGD77_Open_File (struct GMT_CTRL *GMT, char *leg, struct MGD77_CONTROL *F, i
return (MGD77_ERROR_OPEN_FILE);
}
mode[0] = 'w';
- for (k = 0; k < MGD77_FORMAT_ANY; k++) { /* Determine if given leg name contains one of the 3 possible extensions */
+ for (k = 0; k < MGD77_FORMAT_ANY; k++) { /* Determine if given leg name contains one of the 4 possible extensions */
if ((strlen(leg)-strlen(MGD77_suffix[k])) > 0 && !strncmp (&leg[strlen(leg)-strlen(MGD77_suffix[k])], MGD77_suffix[k], strlen(MGD77_suffix[k]))) has_suffix = k;
}
if (has_suffix == MGD77_NOT_SET) /* file name given without extension */
@@ -3734,19 +3742,19 @@ void MGD77_Ignore_Format (struct GMT_CTRL *GMT, int format) {
gmt_M_unused(GMT);
if (format == MGD77_FORMAT_ANY) {
- MGD77_format_allowed[MGD77_FORMAT_M77] = true;
MGD77_format_allowed[MGD77_FORMAT_CDF] = true;
- MGD77_format_allowed[MGD77_FORMAT_TBL] = true;
+ MGD77_format_allowed[MGD77_FORMAT_M77] = true;
MGD77_format_allowed[MGD77_FORMAT_M7T] = true;
+ MGD77_format_allowed[MGD77_FORMAT_TBL] = true;
}
- else if (format >= MGD77_FORMAT_M77 && format <= MGD77_FORMAT_TBL)
+ else if (format >= MGD77_FORMAT_CDF && format <= MGD77_FORMAT_TBL)
MGD77_format_allowed[format] = false;
}
int MGD77_Select_Format (struct GMT_CTRL *GMT, int format) {
/* Allow user to select just one format and turn off all others */
- if (format >= MGD77_FORMAT_M77 && format <= MGD77_FORMAT_TBL) {
+ if (format >= MGD77_FORMAT_CDF && format <= MGD77_FORMAT_TBL) {
MGD77_format_allowed[MGD77_FORMAT_M77] = false;
MGD77_format_allowed[MGD77_FORMAT_CDF] = false;
MGD77_format_allowed[MGD77_FORMAT_TBL] = false;
@@ -3795,11 +3803,17 @@ void MGD77_Init (struct GMT_CTRL *GMT, struct MGD77_CONTROL *F) {
mgd77_init_columns (F);
F->use_flags[MGD77_M77_SET] = F->use_flags[MGD77_CDF_SET] = true; /* true means programs will use error bitflags (if present) when returning data */
F->use_corrections[MGD77_M77_SET] = F->use_corrections[MGD77_CDF_SET] = true; /* true means we will apply correction factors (if present) when reading data */
- gmt_get_time_system (GMT, "unix", &(GMT->current.setting.time_system)); /* MGD77+ uses GMT's Unix time epoch */
+#if 0
+ /* This looks like nonsense to me: It ignores any --TIME_* settings we may have used and
+ * forces unix time so that only absolute time or seconds from 1970 will work. Commented
+ * out but probably will need to be chopped. P. Wessel, Dec 14, 2016 */
+ gmt_get_time_system (GMT, "unix", &(GMT->current.setting.time_system)); /* MGD77+ uses GMT's Unix time epoch */
gmt_init_time_system_structure (GMT, &(GMT->current.setting.time_system));
- gmt_get_time_system (GMT, "unix", &(F->utime)); /* MGD77+ uses GMT's Unix time epoch */
+#endif
+ gmt_get_time_system (GMT, "unix", &(F->utime)); /* MGD77+ uses GMT's Unix time epoch */
gmt_init_time_system_structure (GMT, &(F->utime));
- if (strcmp (F->utime.epoch, GMT->current.setting.time_system.epoch)) F->adjust_time = true; /* Since MGD77+ uses unix time we must convert to new epoch */
+ /* Since MGD77+ uses UNIX time we may need convert to a different epoch if GMT settings have changed. */
+ if (strcmp (F->utime.epoch, GMT->current.setting.time_system.epoch)) F->adjust_time = true;
gmt_M_memset (mgd77_range, MGD77_N_DATA_EXTENDED, struct MGD77_LIMITS);
for (i = 0; i < MGD77_SET_COLS; i++) MGD77_this_bit[i] = 1U << i;
strncpy (F->user, gmt_putusername(GMT), MGD77_COL_ABBREV_LEN);
@@ -3868,7 +3882,7 @@ int MGD77_Select_Columns (struct GMT_CTRL *GMT, char *arg, struct MGD77_CONTROL
* Third [set] are list of columns whose bitflag must be either be 1 (+) or 0 (-).
* The presence of the : also turns the automatic use of ALL flags off.
* option is a bitflag integer that controls how to handle constraints and exact matches.
- * If option == 0 then we wont bitch about repeated columns.
+ * If option == 0 then we won't bitch about repeated columns.
*/
char p[GMT_BUFSIZ] = {""}, cstring[GMT_BUFSIZ] = {""}, bstring[GMT_BUFSIZ] = {""}, word[GMT_LEN256] = {""}, value[GMT_LEN256] = {""};
@@ -4398,6 +4412,7 @@ void MGD77_Free_Dataset (struct GMT_CTRL *GMT, struct MGD77_DATASET **D) {
mgd77_free_plain_mgd77 (&S->H);
gmt_M_free (GMT, S->H.author);
gmt_M_free (GMT, S->H.history);
+ gmt_M_free (GMT, S->H.E77);
gmt_M_free (GMT, S);
D = NULL;
}
@@ -5472,7 +5487,7 @@ double MGD77_Recalc_Mag_Anomaly_CM4 (struct GMT_CTRL *GMT, double time, double l
unsigned int MGD77_Scan_Corrtable (struct GMT_CTRL *GMT, char *tablefile, char **cruises, unsigned int n_cruises, unsigned int n_fields, char **field_names, char ***item_names, unsigned int mode) {
/* This function scans the correction table to determine which named columns
- * are needed for corrections as well as which auxilliary variables (e.g.,
+ * are needed for corrections as well as which auxiliary variables (e.g.,
* time, dist, heading) are needed.
* Returns number of entries in the list, or 0.
*/
@@ -5683,8 +5698,8 @@ int MGD77_Parse_Corrtable (struct GMT_CTRL *GMT, char *tablefile, char **cruises
c->origin = 0.0;
}
if ((c->id = MGD77_Match_List (GMT, name, n_fields, field_names)) == MGD77_NOT_SET) {; /* Not a recognized column */
- for (i = 0; i < n_aux; i++) if (!strcmp (name, aux_names[i])) c->id = i; /* check auxilliaries */
- if (c->id == MGD77_NOT_SET) { /* Not an auxilliary column either */
+ for (i = 0; i < n_aux; i++) if (!strcmp (name, aux_names[i])) c->id = i; /* check auxiliaries */
+ if (c->id == MGD77_NOT_SET) { /* Not an auxiliary column either */
GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Column %s not found - requested by the correction table %s!\n", name, tablefile);
GMT_exit (GMT, GMT_RUNTIME_ERROR); return GMT_RUNTIME_ERROR;
}
diff --git a/src/mgd77/mgd77.h b/src/mgd77/mgd77.h
index 23312b8..21f2522 100644
--- a/src/mgd77/mgd77.h
+++ b/src/mgd77/mgd77.h
@@ -1,7 +1,7 @@
/*-------------------------------------------------------------------------
- * $Id: mgd77.h 16945 2016-08-19 02:40:15Z remko $
+ * $Id: mgd77.h 17496 2017-01-28 23:56:41Z pwessel $
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*
* File: mgd77.h
@@ -94,10 +94,10 @@
#define MGD77_SET_ALLEXACT 4
#define MGD77_N_FORMATS 4
-#define MGD77_FORMAT_M77 0
-#define MGD77_FORMAT_CDF 1
-#define MGD77_FORMAT_TBL 2
-#define MGD77_FORMAT_M7T 3
+#define MGD77_FORMAT_CDF 0
+#define MGD77_FORMAT_M7T 1
+#define MGD77_FORMAT_M77 2
+#define MGD77_FORMAT_TBL 3
#define MGD77_FORMAT_ANY 4
#define MGD77_READ_MODE 0
diff --git a/src/mgd77/mgd77_IGF_coeffs.h b/src/mgd77/mgd77_IGF_coeffs.h
index cbfa011..9b87e84 100644
--- a/src/mgd77/mgd77_IGF_coeffs.h
+++ b/src/mgd77/mgd77_IGF_coeffs.h
@@ -1,7 +1,7 @@
/*-------------------------------------------------------------------------
- * $Id: mgd77_IGF_coeffs.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: mgd77_IGF_coeffs.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*/
diff --git a/src/mgd77/mgd77_codes.h b/src/mgd77/mgd77_codes.h
index dd5be53..d2018c0 100644
--- a/src/mgd77/mgd77_codes.h
+++ b/src/mgd77/mgd77_codes.h
@@ -1,9 +1,9 @@
-/* $Id: mgd77_codes.h 15819 2016-03-06 20:54:48Z pwessel $
+/* $Id: mgd77_codes.h 17449 2017-01-16 21:27:04Z pwessel $
*
* Code automatically generated by mgd77_codes.sh
* To be included by mgd77info.c
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*/
diff --git a/src/mgd77/mgd77_codes.sh b/src/mgd77/mgd77_codes.sh
index 780daab..6d22344 100755
--- a/src/mgd77/mgd77_codes.sh
+++ b/src/mgd77/mgd77_codes.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# $Id: mgd77_codes.sh 15819 2016-03-06 20:54:48Z pwessel $
+# $Id: mgd77_codes.sh 17326 2016-11-08 20:28:56Z pwessel $
#
-# Convert the trkdas.cod file into two useable files:
+# Convert the trkdas.cod file into two usable files:
# 1. mgd77_codes.h for inclusion by mgd77info.c
# 2. mgd77_codes.txt for inclusion by man page mgd77info.txt
diff --git a/src/mgd77/mgd77_e77.h b/src/mgd77/mgd77_e77.h
index 0b3a38a..16813e2 100644
--- a/src/mgd77/mgd77_e77.h
+++ b/src/mgd77/mgd77_e77.h
@@ -1,8 +1,8 @@
/* -------------------------------------------------------------------
- * $Id: mgd77_e77.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: mgd77_e77.h 17449 2017-01-16 21:27:04Z pwessel $
* See LICENSE.TXT file for copying and redistribution conditions.
*
- * Copyright (c) 2004-2016 by P. Wessel and M. T. Chandler
+ * Copyright (c) 2004-2017 by P. Wessel and M. T. Chandler
* File: mgd77_e77.h
*
* Include file for mgd77 programs
diff --git a/src/mgd77/mgd77_functions.c b/src/mgd77/mgd77_functions.c
index 5dd6c2c..9a4bdc2 100644
--- a/src/mgd77/mgd77_functions.c
+++ b/src/mgd77/mgd77_functions.c
@@ -1,8 +1,8 @@
-/* $Id: mgd77_functions.c 15801 2016-03-03 03:22:17Z pwessel $
+/* $Id: mgd77_functions.c 17449 2017-01-16 21:27:04Z pwessel $
*
* Code automatically generated by mgd77netcdfhelper.sh
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*/
diff --git a/src/mgd77/mgd77_functions.h b/src/mgd77/mgd77_functions.h
index 75d4624..0f15a29 100644
--- a/src/mgd77/mgd77_functions.h
+++ b/src/mgd77/mgd77_functions.h
@@ -1,9 +1,9 @@
-/* $Id: mgd77_functions.h 15757 2016-02-24 23:25:49Z pwessel $
+/* $Id: mgd77_functions.h 17449 2017-01-16 21:27:04Z pwessel $
*
* Code automatically generated by mgd77netcdfhelper.sh
* To be included by mgd77_functions.c
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*/
diff --git a/src/mgd77/mgd77_init.h b/src/mgd77/mgd77_init.h
index 29eb335..9d5825e 100644
--- a/src/mgd77/mgd77_init.h
+++ b/src/mgd77/mgd77_init.h
@@ -1,7 +1,7 @@
/*---------------------------------------------------------------------------
- * $Id: mgd77_init.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: mgd77_init.h 17496 2017-01-28 23:56:41Z pwessel $
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*
* File: mgd77_init.h
@@ -12,7 +12,7 @@
* Michael Chandler, Affiliate Researcher, SOEST, U. of Hawaii
*
* This include file contains initializations for the MGD77 system.
- * MUST BE INCUDED AFTER mgd77.h IN mgd77.c
+ * MUST BE INCLUDED AFTER mgd77.h IN mgd77.c
*
* Version: 1.1
* Revised: 1-JAN-2006
@@ -26,4 +26,4 @@
bool MGD77_format_allowed[MGD77_N_FORMATS] = {true, true, true, true}; /* By default we allow opening of files in any format. See MGD77_Ignore_Format() */
-char *MGD77_suffix[MGD77_N_FORMATS] = {"mgd77", "nc", "dat", "m77t"};
+char *MGD77_suffix[MGD77_N_FORMATS] = {"nc", "m77t", "mgd77", "dat"};
diff --git a/src/mgd77/mgd77_recalc.h b/src/mgd77/mgd77_recalc.h
index b465a08..161b3c3 100644
--- a/src/mgd77/mgd77_recalc.h
+++ b/src/mgd77/mgd77_recalc.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: mgd77_recalc.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: mgd77_recalc.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2004-2016 by P. Wessel
+ * Copyright (c) 2004-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/* Here lies some defines and a structure of items that are used when we
diff --git a/src/mgd77/mgd77_rls_coeffs.h b/src/mgd77/mgd77_rls_coeffs.h
index fb9157a..f1e035a 100644
--- a/src/mgd77/mgd77_rls_coeffs.h
+++ b/src/mgd77/mgd77_rls_coeffs.h
@@ -1,8 +1,8 @@
/* -------------------------------------------------------------------
- * $Id: mgd77_rls_coeffs.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: mgd77_rls_coeffs.h 17449 2017-01-16 21:27:04Z pwessel $
* See LICENSE.TXT file for copying and redistribution conditions.
*
- * Copyright (c) 2004-2016 by P. Wessel and M. T. Chandler
+ * Copyright (c) 2004-2017 by P. Wessel and M. T. Chandler
* File: mgd77_rls_coeffs.c
*
* Tables consisting of regression statistics for (in this order):
diff --git a/src/mgd77/mgd77convert.c b/src/mgd77/mgd77convert.c
index 4438a18..f39fa93 100644
--- a/src/mgd77/mgd77convert.c
+++ b/src/mgd77/mgd77convert.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: mgd77convert.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: mgd77convert.c 17496 2017-01-28 23:56:41Z pwessel $
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/*
@@ -211,8 +211,8 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct MGD77CONVERT_CTRL *Ctrl, struc
int GMT_mgd77convert (void *V_API, int mode, void *args) {
int i, argno, n_cruises = 0, n_paths, error = 0;
- char file[GMT_BUFSIZ] = {""}, **list = NULL, *fcode = "actm";
- char *format_name[MGD77_N_FORMATS] = {"MGD77 ASCII", "MGD77+ netCDF", "ASCII table", "MGD77T ASCII"};
+ char file[GMT_BUFSIZ] = {""}, **list = NULL, *fcode = "cmat";
+ char *format_name[MGD77_N_FORMATS] = {"MGD77+ netCDF", "MGD77T ASCII", "MGD77 ASCII", "ASCII table"};
struct MGD77_CONTROL M;
struct MGD77_DATASET *D = NULL;
@@ -306,14 +306,13 @@ int GMT_mgd77convert (void *V_API, int mode, void *args) {
if (Ctrl->F.format == Ctrl->T.format) GMT_Report (API, GMT_MSG_VERBOSE, "Warning: The two formats chosen are the same\n");
if (Ctrl->T.format == MGD77_FORMAT_TBL && !(strcmp (GMT->current.setting.format_float_out, "%lg") & strcmp (GMT->current.setting.format_float_out, "%g"))) {
- strcpy (GMT->current.setting.format_float_out, "%.10g"); /* To avoid loosing precision upon rereading this file */
+ strcpy (GMT->current.setting.format_float_out, "%.10g"); /* To avoid losing precision upon rereading this file */
}
if (Ctrl->T.format == MGD77_FORMAT_CDF && Ctrl->D.active) MGD77_select_high_resolution (GMT);
for (argno = 0; argno < n_paths; argno++) { /* Process each ID */
- D = MGD77_Create_Dataset (GMT); /* Get data structure w/header */
MGD77_Reset (GMT, &M); /* Reset to start fresh for next file */
M.format = Ctrl->F.format; /* Set input file's format and read everything into memory */
@@ -322,6 +321,7 @@ int GMT_mgd77convert (void *V_API, int mode, void *args) {
MGD77_Ignore_Format (GMT, MGD77_FORMAT_ANY); /* Reset to all formats OK, then ... */
for (i = 0; i < MGD77_N_FORMATS; i++) if (i != M.format) MGD77_Ignore_Format (GMT, i); /* ...only allow the specified input format */
if (MGD77_Open_File (GMT, list[argno], &M, MGD77_READ_MODE)) continue;
+ D = MGD77_Create_Dataset (GMT); /* Get data structure w/header */
if (MGD77_Read_Header_Record (GMT, list[argno], &M, &D->H)) {
GMT_Report (API, GMT_MSG_NORMAL, "Error reading header sequence for cruise %s\n", list[argno]);
Return (GMT_DATA_READ_ERROR);
diff --git a/src/mgd77/mgd77defaults.h b/src/mgd77/mgd77defaults.h
index 2922155..1477589 100644
--- a/src/mgd77/mgd77defaults.h
+++ b/src/mgd77/mgd77defaults.h
@@ -1,5 +1,5 @@
/* MGD-77 Data Record Field Defaults:
- * Copyright (c) 2005-2016 by P. Wessel and M. T. Chandler *
+ * Copyright (c) 2005-2017 by P. Wessel and M. T. Chandler *
* See LICENSE.TXT file for copying and redistribution conditions.
Name, Abbrev, Start, Length, FortranCode, Factor, readMGD77, order, printMGD77, printVALS, Not_given */
{ "Data Record Type", "drt", 1U, 1, "int", 1, "%1d", 1, "%1d", NULL, "9" },
diff --git a/src/mgd77/mgd77info.c b/src/mgd77/mgd77info.c
index e478e37..1f62e32 100644
--- a/src/mgd77/mgd77info.c
+++ b/src/mgd77/mgd77info.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: mgd77info.c 16950 2016-08-19 05:17:22Z remko $
+ * $Id: mgd77info.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2004-2016 by P. Wessel
+ * Copyright (c) 2004-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/*
@@ -24,7 +24,7 @@
#define THIS_MODULE_NAME "mgd77info"
#define THIS_MODULE_LIB "mgd77"
#define THIS_MODULE_PURPOSE "Extract information about MGD77 files"
-#define THIS_MODULE_KEYS ">T}"
+#define THIS_MODULE_KEYS ""
#include "gmt_dev.h"
#include "mgd77.h"
diff --git a/src/mgd77/mgd77list.c b/src/mgd77/mgd77list.c
index 9f91e59..fae0eb4 100644
--- a/src/mgd77/mgd77list.c
+++ b/src/mgd77/mgd77list.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: mgd77list.c 17004 2016-08-24 18:04:44Z jluis $
+ * $Id: mgd77list.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 2004-2016 by P. Wessel
+ * Copyright (c) 2004-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/*
@@ -54,6 +54,28 @@
#define ADJ_GR 2
#define ADJ_MG 3
+/* Carter adjustment options */
+#define CT_U_MINUS_DEPTH 1
+#define CT_U_MINUS_CARTER 2
+#define CT_UCORR_MINUS_CARTER_TU 4
+#define CT_UCORR_CARTER_TU_MINUS_DEPTH 8
+
+/* FAA adjustment options */
+#define GR_FAA_STORED 1
+#define GR_OBS_MINUS_NGRAV 2
+#define GR_OBS_PLUS_EOT_MINUS_NGRAV 4
+#define GR_OBS_PLUS_CEOT_MINUS_NGRAV 8
+
+/* Depth adjustment options */
+#define DP_DEPTH_STORED 1
+#define DP_TWT_X_V 2
+#define DP_TWT_X_V_MINUS_CARTER 4
+
+/* Mag adjustment options */
+#define MG_MAG_STORED 1
+#define MG_MTF1_MINUS_IGRF 2
+#define MG_MTF2_MINUS_IGRF 4
+
#define N_D 0 /* These are indices for -N subsets */
#define N_S 1
#define Q_A 0 /* These are indices for -Q subsets */
@@ -64,12 +86,12 @@ struct MGD77LIST_CTRL { /* All control options for this program (except common a
/* active is true if the option has been activated */
struct MGD77LIST_A { /* -A */
bool active;
- int code[4];
bool force;
bool cable_adjust;
bool cable_adjust_coord;
- int GF_version;
bool fake_times;
+ int code[4];
+ int GF_version;
double sound_speed;
double sensor_offset;
} A;
@@ -242,10 +264,11 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t else at least ONE of the tests must pass for output to take place. When using operators\n");
GMT_Message (API, GMT_TIME_NONE, "\t involving characters <, >, and |, put entire argument to -F in single quotes.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Finally, for MGD77+ files you may optionally append : followed by one or more comma-\n");
- GMT_Message (API, GMT_TIME_NONE, "\t separated -+|-<col> terms. This compares specific bitflags for each listed column\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t separated -+|-<col> terms. This compares specific E77 bitflags for each listed column\n");
GMT_Message (API, GMT_TIME_NONE, "\t + means bit must be 1, - means it must be 0. All bit tests given must be passed.\n");
GMT_Message (API, GMT_TIME_NONE, "\t By default, MGD77+ files with error bit flags will use the flags to suppress bad data.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t Turn this behavior off by append : with no arguments.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t Turn this behavior off by append : with no arguments. For controlling systematic\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t corrections encoded in MGD77+ files, see -T.\n");
GMT_Message (API, GMT_TIME_NONE, "\n\tOPTIONS:\n");
GMT_Message (API, GMT_TIME_NONE, "\t-A Adjust some data values before output. Append c|d|f|m|t to select field:\n");
GMT_Message (API, GMT_TIME_NONE, "\t c<code>[,<v>] Adjust field carter. <v>, the sound velocity in water, is taken from\n");
@@ -278,7 +301,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t m1 return mag as stored in file [Default].\n");
GMT_Message (API, GMT_TIME_NONE, "\t m2 return difference mtfx - igrf, where x = msens (or 1 if undefined).\n");
GMT_Message (API, GMT_TIME_NONE, "\t m4 return difference mtfx - igrf, where x != msens (or 2 if undefined).\n");
- GMT_Message (API, GMT_TIME_NONE, "\t c<offset>[unit] Apply cable tow distance correction to mtf1.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t mc<offset>[unit] Apply cable tow distance correction to mtf1.\n");
GMT_Message (API, GMT_TIME_NONE, "\t t will compute fake times for cruises with known duration but lacking record times.\n");
GMT_Message (API, GMT_TIME_NONE, "\t The optional -A+ means selected anomalies will be recalculated even when the original\n");
GMT_Message (API, GMT_TIME_NONE, "\t anomaly is NaN [Default honors NaNs in existing anomalies].\n");
@@ -316,6 +339,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t-T Turn OFF the otherwise automatic adjustment of values based on correction terms\n");
GMT_Message (API, GMT_TIME_NONE, "\t stored in the mgd77+ file (option has no effect on plain MGD77 ASCII files).\n");
GMT_Message (API, GMT_TIME_NONE, "\t Append m or e to indicate the MGD77 data set or the extended columns set [Default is both].\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t For controlling application of point bit flags, see -F and the : modifier discussion.\n");
GMT_Option (API, "V");
GMT_Message (API, GMT_TIME_NONE, "\t-W Set weight for these data [1].\n");
GMT_Message (API, GMT_TIME_NONE, "\t-Z Append - to report bathymetry & msd as negative depths [Default is positive -Z+].\n");
@@ -694,7 +718,7 @@ GMT_LOCAL int separate_aux_columns (struct MGD77_CONTROL *F, char *fx_setting, s
}
GMT_LOCAL int augment_aux_columns (int n_items, char **item_name, struct MGD77_AUX_INFO *aux, struct MGD77_AUXLIST *auxlist, int n_aux) {
- /* This adds additional aux colums that are required by the correction table and not already requested by other means (e.g. -F) */
+ /* This adds additional aux columns that are required by the correction table and not already requested by other means (e.g. -F) */
int i, j, k, this_aux, n;
for (i = k = 0, n = n_aux; i < n_items; i++) {
@@ -824,7 +848,7 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
if (M.adjust_time) Ctrl->D.start = MGD77_time2utime (GMT, &M, Ctrl->D.start); /* Convert to Unix time if need be */
if (M.adjust_time) Ctrl->D.stop = MGD77_time2utime (GMT, &M, Ctrl->D.stop);
- if (Ctrl->L.active) { /* Scan the ephemeral correction table for needed auxilliary columns */
+ if (Ctrl->L.active) { /* Scan the ephemeral correction table for needed auxiliary columns */
char path[GMT_BUFSIZ] = {""};
if (!Ctrl->L.file) { /* Try default correction table */
sprintf (path, "%s/mgd77_corrections.txt", M.MGD77_HOME);
@@ -840,12 +864,13 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
select_option = MGD77_RESET_CONSTRAINT | MGD77_RESET_EXACT; /* Make sure these start at zero */
if (Ctrl->E.active) select_option |= MGD77_SET_ALLEXACT; /* Sets all columns listed as "must be present" */
MGD77_Select_Columns (GMT, Ctrl->F.flags, &M, select_option); /* This is the list of columns the user ultimately wants output */
+ if (M.time_format == GMT_IS_RELTIME) M.adjust_time = true;
n_out_columns = M.n_out_columns; /* This is the total number of columns in the final output */
- if (MGD77_Get_Column (GMT, "depth", &M) == MGD77_NOT_SET) negative_depth = false; /* Just so we don't accidently access dvalue[z_col] further down in the loop */
- if (MGD77_Get_Column (GMT, "msd", &M) == MGD77_NOT_SET) negative_msd = false; /* Just so we don't accidently access dvalue[m_col] further down in the loop */
+ if (MGD77_Get_Column (GMT, "depth", &M) == MGD77_NOT_SET) negative_depth = false; /* Just so we don't accidentally access dvalue[z_col] further down in the loop */
+ if (MGD77_Get_Column (GMT, "msd", &M) == MGD77_NOT_SET) negative_msd = false; /* Just so we don't accidentally access dvalue[m_col] further down in the loop */
n_aux = separate_aux_columns (&M, fx_setting, aux, auxlist); /* Determine which auxiliary columns are requested (if any) */
if (Ctrl->L.active) {
- n_aux = augment_aux_columns ((int)n_items, item_names, aux, auxlist, (int)n_aux); /* Determine which auxillary columns are needed by -L */
+ n_aux = augment_aux_columns ((int)n_items, item_names, aux, auxlist, (int)n_aux); /* Determine which auxiliary columns are needed by -L */
for (kk = 0; kk < n_items; kk++) gmt_M_free (GMT, item_names[kk]);
if (n_items) gmt_M_free (GMT, item_names);
MGD77_Free_Table (GMT, n_items, item_names);
@@ -860,36 +885,36 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
or time) also implies the need for certain data columns such as time, lon, and lat.
*/
- if (Ctrl->A.code[ADJ_GR] & 8 || auxlist[MGD77_AUX_ET].requested) { /* Eotvos needs heading and speed */
+ if (Ctrl->A.code[ADJ_GR] & GR_OBS_PLUS_CEOT_MINUS_NGRAV || auxlist[MGD77_AUX_ET].requested) { /* Computing Eotvos requires heading and speed */
auxlist[MGD77_AUX_AZ].requested = true;
auxlist[MGD77_AUX_SP].requested = true;
}
need_distances = (Ctrl->S.active || auxlist[MGD77_AUX_SP].requested || auxlist[MGD77_AUX_DS].requested || auxlist[MGD77_AUX_AZ].requested || auxlist[MGD77_AUX_CC].requested); /* Distance is requested */
- need_lonlat = (auxlist[MGD77_AUX_MG].requested || auxlist[MGD77_AUX_GR].requested || auxlist[MGD77_AUX_CT].requested || Ctrl->A.code[ADJ_MG] > 1 || Ctrl->A.code[ADJ_DP] & 4 || Ctrl->A.code[ADJ_CT] >= 2 || Ctrl->A.code[ADJ_GR] > 1 || Ctrl->A.fake_times || Ctrl->A.cable_adjust); /* Need lon, lat to calculate reference fields or Carter correction */
+ need_lonlat = (auxlist[MGD77_AUX_MG].requested || auxlist[MGD77_AUX_GR].requested || auxlist[MGD77_AUX_CT].requested || Ctrl->A.code[ADJ_MG] > MG_MAG_STORED || Ctrl->A.code[ADJ_DP] & DP_TWT_X_V_MINUS_CARTER || Ctrl->A.code[ADJ_CT] > CT_U_MINUS_DEPTH || Ctrl->A.code[ADJ_GR] > GR_FAA_STORED || Ctrl->A.fake_times || Ctrl->A.cable_adjust); /* Need lon, lat to calculate reference fields or Carter correction */
need_time = (auxlist[MGD77_AUX_YR].requested || auxlist[MGD77_AUX_MO].requested || auxlist[MGD77_AUX_DY].requested || auxlist[MGD77_AUX_HR].requested || auxlist[MGD77_AUX_MI].requested || auxlist[MGD77_AUX_SC].requested \
- || auxlist[MGD77_AUX_DM].requested || auxlist[MGD77_AUX_HM].requested || auxlist[MGD77_AUX_DA].requested || auxlist[MGD77_AUX_MG].requested || Ctrl->A.code[ADJ_MG] > 1);
+ || auxlist[MGD77_AUX_DM].requested || auxlist[MGD77_AUX_HM].requested || auxlist[MGD77_AUX_DA].requested || auxlist[MGD77_AUX_MG].requested || Ctrl->A.code[ADJ_MG] > MG_MAG_STORED);
n_sub = 0; /* This value will hold the number of columns that we will NOT printout (they are only needed to calculate auxiliary values) */
if (need_distances || need_lonlat) { /* Must make sure we get lon,lat if they are not already requested */
if (MGD77_Get_Column (GMT, "lat", &M) == MGD77_NOT_SET) strcat (fx_setting, ",lat"), n_sub++; /* Append lat to requested list */
if (MGD77_Get_Column (GMT, "lon", &M) == MGD77_NOT_SET) strcat (fx_setting, ",lon"), n_sub++; /* Append lon to requested list */
}
if ((Ctrl->D.active || need_time || auxlist[MGD77_AUX_SP].requested) && MGD77_Get_Column (GMT, "time", &M) == MGD77_NOT_SET) strcat (fx_setting, ",time"), n_sub++; /* Append time to requested list */
- need_twt = (auxlist[MGD77_AUX_CT].requested || (Ctrl->A.code[ADJ_CT] > 0 && Ctrl->A.code[ADJ_CT] < 3) || (Ctrl->A.code[ADJ_DP] > 1));
+ need_twt = (auxlist[MGD77_AUX_CT].requested || (Ctrl->A.code[ADJ_CT] > 0 && Ctrl->A.code[ADJ_CT] <= CT_U_MINUS_CARTER) || (Ctrl->A.code[ADJ_DP] > DP_DEPTH_STORED));
if (need_twt) { /* Want to estimate Carter corrections */
if (MGD77_Get_Column (GMT, "twt", &M) == MGD77_NOT_SET) strcat (fx_setting, ",twt"), n_sub++; /* Must append twt to requested list */
MGD77_carter_init (GMT, &Carter); /* Initialize Carter machinery */
}
- need_depth = ((Ctrl->A.code[ADJ_CT] & (1 | 3 | 8)) || (Ctrl->A.code[ADJ_DP] & 1));
+ need_depth = ((Ctrl->A.code[ADJ_CT] & (CT_U_MINUS_DEPTH | CT_UCORR_MINUS_CARTER_TU | CT_UCORR_CARTER_TU_MINUS_DEPTH)) || (Ctrl->A.code[ADJ_DP] & DP_DEPTH_STORED));
if (need_depth) { /* Need depth*/
if (MGD77_Get_Column (GMT, "depth", &M) == MGD77_NOT_SET) strcat (fx_setting, ",depth"), n_sub++; /* Must append depth to requested list */
}
- if (Ctrl->A.code[ADJ_GR] > 1) { /* Need gobs */
+ if (Ctrl->A.code[ADJ_GR] > GR_FAA_STORED) { /* Need gobs */
if (MGD77_Get_Column (GMT, "gobs", &M) == MGD77_NOT_SET) strcat (fx_setting, ",gobs"), n_sub++; /* Must append gobs to requested list */
}
- if (Ctrl->A.code[ADJ_GR] == 3) { /* Need eot */
+ if (Ctrl->A.code[ADJ_GR] & GR_OBS_PLUS_EOT_MINUS_NGRAV) { /* Need stored eot */
if (MGD77_Get_Column (GMT, "eot", &M) == MGD77_NOT_SET) strcat (fx_setting, ",eot"), n_sub++; /* Must append eot to requested list */
}
- if (Ctrl->A.code[ADJ_MG] > 1) { /* Need mtf1,2, and msens */
+ if (Ctrl->A.code[ADJ_MG] > MG_MAG_STORED) { /* Need mtf1,2, and msens */
if (MGD77_Get_Column (GMT, "mtf1", &M) == MGD77_NOT_SET) strcat (fx_setting, ",mtf1"), n_sub++; /* Must append mtf1 to requested list */
if (MGD77_Get_Column (GMT, "mtf2", &M) == MGD77_NOT_SET) strcat (fx_setting, ",mtf2"), n_sub++; /* Must append mtf2 to requested list */
if (MGD77_Get_Column (GMT, "msens", &M) == MGD77_NOT_SET) strcat (fx_setting, ",msens"), n_sub++; /* Must append msens to requested list */
@@ -904,7 +929,7 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
strcat (fx_setting, M.Constraint[kk].name); /* Must add to our list */
n_sub++;
}
- need_sound = (((Ctrl->A.code[ADJ_CT] & (1 | 2 | 8)) || Ctrl->A.code[ADJ_DP] & 2) && Ctrl->A.sound_speed == 0.0);
+ need_sound = (((Ctrl->A.code[ADJ_CT] & (CT_U_MINUS_DEPTH | CT_U_MINUS_CARTER | CT_UCORR_CARTER_TU_MINUS_DEPTH)) || Ctrl->A.code[ADJ_DP] & DP_TWT_X_V) && Ctrl->A.sound_speed == 0.0);
Ctrl->A.sound_speed *= 0.5; /* Takes care of the 2 in 2-way travel time */
MGD77_Select_Columns (GMT, fx_setting, &M, 0); /* Only deal with col names - leave constraints/exacts unchanged from last call */
n_cols_to_process = M.n_out_columns - n_sub;
@@ -991,6 +1016,9 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, family, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if (!string_output) gmt_set_cols (GMT, GMT_OUT, n_out_columns);
for (argno = 0; argno < (unsigned int)n_paths; argno++) { /* Process each ID */
@@ -1035,7 +1063,7 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
}
MGD77_Close_File (GMT, &M);
- /* The 1*, 2*, 3* below is just there to ensure we dont end up with multiple cases all == MGD77_NOT_SET */
+ /* The 1*, 2*, 3* below is just there to ensure we don't end up with multiple cases all == MGD77_NOT_SET */
time_column = ((i = MGD77_Get_Column (GMT, "time", &M)) != MGD77_NOT_SET && M.order[i].set == MGD77_M77_SET) ? M.order[i].item : 1 * MGD77_NOT_SET;
lon_column = ((i = MGD77_Get_Column (GMT, "lon", &M)) != MGD77_NOT_SET && M.order[i].set == MGD77_M77_SET) ? M.order[i].item : 2 * MGD77_NOT_SET;
lat_column = ((i = MGD77_Get_Column (GMT, "lat", &M)) != MGD77_NOT_SET && M.order[i].set == MGD77_M77_SET) ? M.order[i].item : 3 * MGD77_NOT_SET;
@@ -1049,7 +1077,7 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
GMT->current.io.col_type[GMT_OUT][pos] = GMT_IS_FLOAT;
pos++, kx++;
}
- if (kk >= n_cols_to_process) continue; /* Dont worry about helper columns that wont be printed */
+ if (kk >= n_cols_to_process) continue; /* Don't worry about helper columns that won't be printed */
c = M.order[kk].set;
id = M.order[kk].item;
if (c == MGD77_M77_SET && id == time_column) { /* Special time formatting */
@@ -1094,15 +1122,15 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
z_col = MGD77_Get_Column (GMT, "depth", &M);
if (need_twt) twt_col = MGD77_Get_Column (GMT, "twt", &M);
if (Ctrl->A.code[ADJ_GR]) f_col = MGD77_Get_Column (GMT, "faa", &M);
- if (Ctrl->A.code[ADJ_GR] > 1) g_col = MGD77_Get_Column (GMT, "gobs", &M);
- if (Ctrl->A.code[ADJ_GR] == 3) e_col = MGD77_Get_Column (GMT, "eot", &M);
+ if (Ctrl->A.code[ADJ_GR] > GR_FAA_STORED) g_col = MGD77_Get_Column (GMT, "gobs", &M);
+ if (Ctrl->A.code[ADJ_GR] & GR_OBS_PLUS_EOT_MINUS_NGRAV) e_col = MGD77_Get_Column (GMT, "eot", &M);
if (Ctrl->A.code[ADJ_MG]) m_col = MGD77_Get_Column (GMT, "mag", &M);
- if (Ctrl->A.code[ADJ_MG] > 1 || Ctrl->A.cable_adjust) { /* Need more magnetics items */
+ if (Ctrl->A.code[ADJ_MG] > MG_MAG_STORED || Ctrl->A.cable_adjust) { /* Need more magnetics items */
m1_col = MGD77_Get_Column (GMT, "mtf1", &M);
m2_col = MGD77_Get_Column (GMT, "mtf2", &M);
ms_col = MGD77_Get_Column (GMT, "msens", &M);
}
- if ((auxlist[MGD77_AUX_GR].requested || (Ctrl->A.code[ADJ_GR] > 1 )) && Ctrl->A.GF_version == MGD77_NOT_SET) {
+ if ((auxlist[MGD77_AUX_GR].requested || (Ctrl->A.code[ADJ_GR] > GR_FAA_STORED)) && Ctrl->A.GF_version == MGD77_NOT_SET) {
Ctrl->A.GF_version = D->H.mgd77[use]->Gravity_Theoretical_Formula_Code - '0';
if (Ctrl->A.GF_version < MGD77_IGF_HEISKANEN || Ctrl->A.GF_version > MGD77_IGF_1980) {
GMT_Report (API, GMT_MSG_NORMAL, "Invalid Gravity Theoretical Formula Code (%c) - default to %d\n", D->H.mgd77[use]->Gravity_Theoretical_Formula_Code, MGD77_IGF_1980);
@@ -1115,7 +1143,7 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
}
this_limit_on_time = Ctrl->D.active; /* Since we might change it below */
- if (time_column != MGD77_NOT_SET && D->H.no_time) { /* Cannot know if ASCII MGD77 dont have time until after reading */
+ if (time_column != MGD77_NOT_SET && D->H.no_time) { /* Cannot know if ASCII MGD77 don't have time until after reading */
bool faked = false;
if (Ctrl->A.fake_times) { /* Try to make fake times based on duration and distances */
faked = MGD77_fake_times (GMT, &M, &(D->H), dvalue[x_col], dvalue[y_col], dvalue[t_col], D->H.n_records);
@@ -1171,7 +1199,7 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
lonlat_not_NaN = !( gmt_M_is_dnan (dvalue[x_col][rec]) || gmt_M_is_dnan (dvalue[y_col][rec]));
if (rec == 0) { /* Azimuth at 1st point set to azimuth of 2nd point since there is no previous point */
if (auxlist[MGD77_AUX_AZ].requested) aux_dvalue[MGD77_AUX_AZ] = gmt_az_backaz (GMT, dvalue[x_col][1], dvalue[y_col][1], dvalue[x_col][0], dvalue[y_col][0], true);
- if (auxlist[MGD77_AUX_CC].requested) { /* Course change requires previous azimuth but none is avaiable yet */
+ if (auxlist[MGD77_AUX_CC].requested) { /* Course change requires previous azimuth but none is available yet */
aux_dvalue[MGD77_AUX_CC] = GMT->session.d_NaN;
prev_az = (auxlist[MGD77_AUX_AZ].requested) ? aux_dvalue[MGD77_AUX_AZ] : gmt_az_backaz (GMT, dvalue[x_col][1], dvalue[y_col][1], dvalue[x_col][0], dvalue[y_col][0], true);
}
@@ -1277,18 +1305,18 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
if (auxlist[MGD77_AUX_CT].requested) { /* Carter is one of the output columns */
if (Ctrl->A.code[ADJ_CT]) { /* We have requested some adjustment to the carter value */
aux_dvalue[MGD77_AUX_CT] = GMT->session.d_NaN;
- if (Ctrl->A.code[ADJ_CT] & 1) /* Try uncorr. depth - obs. depth */
+ if (Ctrl->A.code[ADJ_CT] & CT_U_MINUS_DEPTH) /* Try uncorr. depth - obs. depth */
aux_dvalue[MGD77_AUX_CT] = dvalue[twt_col][rec] * Ctrl->A.sound_speed - dvalue[z_col][rec]; /* Factor of 2 dealt with earlier */
- if (Ctrl->A.code[ADJ_CT] & 2 && gmt_M_is_dnan (aux_dvalue[MGD77_AUX_CT])) { /* Try uncorr. depth - Carter depth */
+ if ((Ctrl->A.code[ADJ_CT] & CT_U_MINUS_CARTER) && gmt_M_is_dnan (aux_dvalue[MGD77_AUX_CT])) { /* Try uncorr. depth - Carter depth */
MGD77_carter_depth_from_xytwt (GMT, dvalue[x_col][rec], dvalue[y_col][rec], 1000.0 * dvalue[twt_col][rec], &Carter, &z);
aux_dvalue[MGD77_AUX_CT] = dvalue[twt_col][rec] * i_sound_speed - z;
}
- if (Ctrl->A.code[ADJ_CT] & 4 && gmt_M_is_dnan (aux_dvalue[MGD77_AUX_CT])) { /* Try uncorr. depth - inferred Carter depth */
+ if ((Ctrl->A.code[ADJ_CT] & CT_UCORR_MINUS_CARTER_TU) && gmt_M_is_dnan (aux_dvalue[MGD77_AUX_CT])) { /* Try uncorr. depth - inferred Carter depth */
twt = dvalue[z_col][rec] * i_sound_speed; /* Factor of 2 dealt with earlier */
MGD77_carter_depth_from_xytwt (GMT, dvalue[x_col][rec], dvalue[y_col][rec], twt, &Carter, &z);
aux_dvalue[MGD77_AUX_CT] = dvalue[z_col][rec] - z;
}
- if (Ctrl->A.code[ADJ_CT] & 8 && gmt_M_is_dnan (aux_dvalue[MGD77_AUX_CT])) { /* Try inferred uncorr. depth - obs. depth */
+ if ((Ctrl->A.code[ADJ_CT] & CT_UCORR_CARTER_TU_MINUS_DEPTH) && gmt_M_is_dnan (aux_dvalue[MGD77_AUX_CT])) { /* Try inferred uncorr. depth - obs. depth */
MGD77_carter_twt_from_xydepth (GMT, dvalue[x_col][rec], dvalue[y_col][rec], dvalue[z_col][rec], &Carter, &twt);
z = twt * Ctrl->A.sound_speed;
aux_dvalue[MGD77_AUX_CT] = z - dvalue[z_col][rec];
@@ -1306,11 +1334,11 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
/* --------------------------------------------------------------------------------------------------- */
if (z_col != MGD77_NOT_SET && Ctrl->A.code[ADJ_DP]) {
z = GMT->session.d_NaN;
- if (Ctrl->A.code[ADJ_DP] & 1) /* Try obs. depth */
+ if (Ctrl->A.code[ADJ_DP] & DP_DEPTH_STORED) /* Try obs. depth */
z = dvalue[z_col][rec];
- if (Ctrl->A.code[ADJ_DP] & 2 && gmt_M_is_dnan (z)) /* Try uncorr. depth */
+ if ((Ctrl->A.code[ADJ_DP] & DP_TWT_X_V) && gmt_M_is_dnan (z)) /* Try uncorr. depth */
z = dvalue[twt_col][rec] * i_sound_speed;
- if (Ctrl->A.code[ADJ_DP] & 4 && gmt_M_is_dnan (z)) { /* Try Carter depth */
+ if ((Ctrl->A.code[ADJ_DP] & DP_TWT_X_V_MINUS_CARTER) && gmt_M_is_dnan (z)) { /* Try Carter depth */
twt = dvalue[twt_col][rec];
if (!gmt_M_is_dnan (twt)) { /* OK, valid twt */
if (has_prev_twt) { /* OK, may look at change in twt */
@@ -1335,13 +1363,13 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
/* --------------------------------------------------------------------------------------------------- */
if (f_col != MGD77_NOT_SET && Ctrl->A.code[ADJ_GR]) {
g = GMT->session.d_NaN;
- if (Ctrl->A.code[ADJ_GR] & 1) /* Try faa */
+ if (Ctrl->A.code[ADJ_GR] & GR_FAA_STORED) /* Try faa */
g = dvalue[f_col][rec];
- if (Ctrl->A.code[ADJ_GR] & 2 && gmt_M_is_dnan (g)) /* Try gobs - ngrav */
+ if ((Ctrl->A.code[ADJ_GR] & GR_OBS_MINUS_NGRAV) && gmt_M_is_dnan (g)) /* Try gobs - ngrav */
g = dvalue[g_col][rec] - MGD77_Theoretical_Gravity (GMT, dvalue[x_col][rec], dvalue[y_col][rec], (int)Ctrl->A.GF_version);
- if (Ctrl->A.code[ADJ_GR] & 4 && gmt_M_is_dnan (g)) /* Try gobs + eot - ngrav */
+ if ((Ctrl->A.code[ADJ_GR] & GR_OBS_PLUS_EOT_MINUS_NGRAV )&& gmt_M_is_dnan (g)) /* Try gobs + eot - ngrav */
g = dvalue[g_col][rec] + dvalue[e_col][rec] - MGD77_Theoretical_Gravity (GMT, dvalue[x_col][rec], dvalue[y_col][rec], (int)Ctrl->A.GF_version);
- if (Ctrl->A.code[ADJ_GR] & 8 && gmt_M_is_dnan (g)) /* Try gobs + pred_eot - ngrav */
+ if ((Ctrl->A.code[ADJ_GR] & GR_OBS_PLUS_CEOT_MINUS_NGRAV) && gmt_M_is_dnan (g)) /* Try gobs + pred_eot - ngrav */
g = dvalue[g_col][rec] + MGD77_Eotvos (GMT, dvalue[y_col][rec], aux_dvalue[MGD77_AUX_SP], aux_dvalue[MGD77_AUX_AZ]) - MGD77_Theoretical_Gravity (GMT, dvalue[x_col][rec], dvalue[y_col][rec], (int)Ctrl->A.GF_version);
if (Ctrl->A.force || !gmt_M_is_dnan(dvalue[f_col][rec])) dvalue[f_col][rec] = g;
}
@@ -1351,9 +1379,9 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
/* --------------------------------------------------------------------------------------------------- */
if (m_col != MGD77_NOT_SET && Ctrl->A.code[ADJ_MG]) {
m = GMT->session.d_NaN;
- if (Ctrl->A.code[ADJ_MG] & 1) /* Try mag */
+ if (Ctrl->A.code[ADJ_MG] & MG_MAG_STORED) /* Try mag as is */
m = dvalue[m_col][rec];
- if (Ctrl->A.code[ADJ_MG] & 2 && gmt_M_is_dnan (m)) { /* Try mtf 1st - igrf */
+ if ((Ctrl->A.code[ADJ_MG] & MG_MTF1_MINUS_IGRF) && gmt_M_is_dnan (m)) { /* Try mtf 1st - igrf */
if (need_date) { /* Did not get computed already */
date = MGD77_time_to_fyear (GMT, &M, dvalue[t_col][rec]);
need_date = false;
@@ -1362,7 +1390,7 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
k = (i == 2) ? m2_col : m1_col;
m = MGD77_Recalc_Mag_Anomaly_IGRF (GMT, &M, date, dvalue[x_col][rec], dvalue[y_col][rec], dvalue[k][rec], false);
}
- if (Ctrl->A.code[ADJ_MG] & 4 && gmt_M_is_dnan (m)) { /* Try mtf 2nd - igrf */
+ if ((Ctrl->A.code[ADJ_MG] & MG_MTF2_MINUS_IGRF) && gmt_M_is_dnan (m)) { /* Try mtf 2nd - igrf */
if (need_date) { /* Did not get computed already */
date = MGD77_time_to_fyear (GMT, &M, dvalue[t_col][rec]);
need_date = false;
@@ -1524,7 +1552,7 @@ int GMT_mgd77list (void *V_API, int mode, void *args) {
out[pos] = dvalue[kk][rec] - correction;
}
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
n_out++;
}
diff --git a/src/mgd77/mgd77magref.c b/src/mgd77/mgd77magref.c
index 5df6d37..9d34474 100644
--- a/src/mgd77/mgd77magref.c
+++ b/src/mgd77/mgd77magref.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: mgd77magref.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: mgd77magref.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 2009-2016 by J. Luis and P. Wessel
+ * Copyright (c) 2009-2017 by J. Luis and P. Wessel
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/*
@@ -566,6 +566,9 @@ int GMT_mgd77magref (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
for (tbl = 0; tbl < Din->n_tables; tbl++) { /* Loop over all input tables */
T = Din->table[tbl]; /* Current table */
@@ -651,7 +654,7 @@ int GMT_mgd77magref (void *V_API, int mode, void *args) {
for (j = 0; j < n_field_components; j++)
out[n_out++] = Ctrl->CM4->CM4_DATA.out_field[i*n_field_components+j];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
else { /* DID CM4 and IGRF */
@@ -670,7 +673,7 @@ int GMT_mgd77magref (void *V_API, int mode, void *args) {
out[n_out++] = Ctrl->CM4->CM4_DATA.out_field[i*3+j] + igrf_xyz[i*3+j];
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
diff --git a/src/mgd77/mgd77magref.h b/src/mgd77/mgd77magref.h
index 9078903..f44a540 100644
--- a/src/mgd77/mgd77magref.h
+++ b/src/mgd77/mgd77magref.h
@@ -1,8 +1,8 @@
/* -------------------------------------------------------------------
- * $Id: mgd77magref.h 16945 2016-08-19 02:40:15Z remko $
+ * $Id: mgd77magref.h 17449 2017-01-16 21:27:04Z pwessel $
* See LICENSE.TXT file for copying and redistribution conditions.
*
- * Copyright (c) 2005-2016 by P. Wessel and M. T. Chandler
+ * Copyright (c) 2005-2017 by P. Wessel and M. T. Chandler
* File: mgd77magref.h
*
* MGD77 Magnetic Reference Fields for mgd77sniffer
diff --git a/src/mgd77/mgd77manage.c b/src/mgd77/mgd77manage.c
index 9d155c4..5c9e2d6 100644
--- a/src/mgd77/mgd77manage.c
+++ b/src/mgd77/mgd77manage.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: mgd77manage.c 17163 2016-10-03 19:17:34Z pwessel $
+ * $Id: mgd77manage.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* mgd77manage is used to (1) remove data columns from mgd77+ files
* or (2) add a new data column to mgd77+ files. Data can be added
* from data tables, created from reference field formulas, or by
diff --git a/src/mgd77/mgd77netcdfhelper.sh b/src/mgd77/mgd77netcdfhelper.sh
index ff05a6a..0f957ae 100755
--- a/src/mgd77/mgd77netcdfhelper.sh
+++ b/src/mgd77/mgd77netcdfhelper.sh
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# $Id: mgd77netcdfhelper.sh 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: mgd77netcdfhelper.sh 17449 2017-01-16 21:27:04Z pwessel $
#
# Author: P. Wessel
# Date: 2005-OCT-14
@@ -23,7 +23,7 @@ cat << EOF > mgd77_functions.h
* Code automatically generated by mgd77netcdfhelper.sh
* To be included by mgd77_functions.c
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*/
@@ -52,7 +52,7 @@ cat << EOF > mgd77_functions.c
*
* Code automatically generated by mgd77netcdfhelper.sh
*
- * Copyright (c) 2005-2016 by P. Wessel
+ * Copyright (c) 2005-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*/
diff --git a/src/mgd77/mgd77path.c b/src/mgd77/mgd77path.c
index b03ef03..715bcae 100644
--- a/src/mgd77/mgd77path.c
+++ b/src/mgd77/mgd77path.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: mgd77path.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: mgd77path.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2004-2016 by P. Wessel
+ * Copyright (c) 2004-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/*
diff --git a/src/mgd77/mgd77sniffer.c b/src/mgd77/mgd77sniffer.c
index 7052801..5f20287 100644
--- a/src/mgd77/mgd77sniffer.c
+++ b/src/mgd77/mgd77sniffer.c
@@ -1,8 +1,8 @@
/* -------------------------------------------------------------------
- * $Id: mgd77sniffer.c 17104 2016-09-18 01:33:17Z jluis $
+ * $Id: mgd77sniffer.c 17469 2017-01-23 03:35:51Z pwessel $
* See LICENSE.TXT file for copying and redistribution conditions.
*
- * Copyright (c) 2004-2016 by P. Wessel and M. T. Chandler
+ * Copyright (c) 2004-2017 by P. Wessel and M. T. Chandler
* File: mgd77sniffer.c
*
* mgd77sniffer scans MGD77 files for errors in three ways: one, point-
@@ -423,7 +423,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t -Hb analyze both (default), report better of two.\n");
GMT_Message (API, GMT_TIME_NONE, "\t -Hd to disable data decimation (equivalent to -H with no argument).\n");
GMT_Message (API, GMT_TIME_NONE, "\t -Hf to force data decimation.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t-I Give one or more times to specify ranges of data record that should be flagged as bad\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-I Give one or more record numbers to specify ranges of data record that should be flagged as bad\n");
GMT_Message (API, GMT_TIME_NONE, "\t prior to along-track analysis. The flag information will be echoed out to E77 files.\n");
GMT_Message (API, GMT_TIME_NONE, "\t May not be used for multiple cruises.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-K Reverse navigation quality flags (good to bad and vice versa). May be necessary when a\n");
@@ -531,6 +531,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
}
#define bailout(code) {gmt_M_free_options (mode); return (code);}
+#define Return(code) {gmt_end_module (GMT, GMT_cpy); bailout (code);}
int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
/* THE FOLLOWING VARIABLES DO NOT VARY FOR EACH CRUISE */
@@ -552,7 +553,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
double percent_limit, sim_m[8], sim_b[8], nav_on_land_threshold;
time_t clock;
- char c, tmp_min[16] = {""}, tmp_max[16] = {""}, tmp_maxSlope[16] = {""}, tmp_area[16] = {""}, *derivative = NULL;
+ char c[8] = {""}, tmp_min[16] = {""}, tmp_max[16] = {""}, tmp_maxSlope[16] = {""}, tmp_area[16] = {""}, *derivative = NULL;
char *custom_limit_file = NULL, custom_limit_line[GMT_BUFSIZ] = {""}, arguments[GMT_BUFSIZ] = {""}, buffer[GMT_BUFSIZ] = {""};
char field_abbrev[8] = {""}, *speed_units = "m/s";
char *display = NULL, fpercent_limit[8] = {""}, **list = NULL;
@@ -612,10 +613,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
/* Parse the command-line arguments */
GMT = gmt_begin_module (API, THIS_MODULE_LIB, THIS_MODULE_NAME, &GMT_cpy); /* Save current state */
- if (GMT_Parse_Common (API, GMT_PROG_OPTIONS, options)) {
- gmt_M_free (GMT, GMT_cpy);
- bailout (API->error);
- }
+ if (GMT_Parse_Common (API, GMT_PROG_OPTIONS, options)) Return (API->error);
strncpy (GMT->current.setting.format_clock_out, "hh:mm:ss.xx", GMT_LEN64);
gmtlib_clock_C_format (GMT, GMT->current.setting.format_clock_out, &GMT->current.io.clock_output, 1);
@@ -659,7 +657,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
/* READ COMMAND LINE ARGUMENTS */
for (opt = options; opt; opt = opt->next) {
- sprintf (arguments,"%s %s", arguments, opt->arg);
+ if (opt->option == GMT_OPT_INFILE)
+ sprintf (arguments,"%s %s", arguments, opt->arg);
+ else
+ sprintf (arguments,"%s -%c%s", arguments, opt->option, opt->arg);
switch (opt->option) {
case '<': /* Skip input files */
case '#': /* Skip input files confused as numbers (e.g. 123456) */
@@ -857,20 +858,20 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
case 'W': /* Choose which warning types to go to stdout (default - all) */
do_regression = false;
for (j = 0; j<MGD77_N_WARN_TYPES; j++) warn[j] = false;
- while (gmt_strtok (opt->arg, ",", &pos, &c)) {
- if (c == 'v')
+ while (gmt_strtok (opt->arg, ",", &pos, c)) {
+ if (c[0] == 'v')
warn[VALUE_WARN] = true;
- else if (c == 'g')
+ else if (c[0] == 'g')
warn[SLOPE_WARN] = true;
- else if (c == 'o')
+ else if (c[0] == 'o')
warn[GRID_WARN] = true;
- else if (c == 't')
+ else if (c[0] == 't')
warn[TIME_WARN] = true;
- else if (c == 's')
+ else if (c[0] == 's')
warn[SPEED_WARN] = true;
- else if (c == 'c')
+ else if (c[0] == 'c')
warn[TYPE_WARN] = true;
- else if (c == 'x') {
+ else if (c[0] == 'x') {
do_regression = true;
warn[SUMMARY_WARN] = true;
} else {
@@ -889,44 +890,37 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
/* ENSURE VALID USE OF OPTIONS */
if (n_cruises != 0 && !strcmp(display,"LIMITS")) {
GMT_Report (API, GMT_MSG_NORMAL, "Error: omit cruise ids for -Dl option.\n");
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_PARSE_ERROR);
+ Return (API->error);
}
else if (GMT->common.b.active[GMT_OUT] && !display) {
GMT_Report (API, GMT_MSG_NORMAL, "Error: -b option requires -D.\n");
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_PARSE_ERROR);
+ Return (API->error);
}
else if (custom_warn && strcmp(display,"")) {
GMT_Report (API, GMT_MSG_NORMAL, "Error: Incompatible options -D and -W.\n");
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_PARSE_ERROR);
+ Return (API->error);
}
else if (!strcmp(display,"DIFFS") && n_grids == 0) {
GMT_Report (API, GMT_MSG_NORMAL, "Error: -Dd option requires -G.\n");
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_PARSE_ERROR);
+ Return (API->error);
}
if (east < west || south > north) {
GMT_Report (API, GMT_MSG_NORMAL, "Error: Region set incorrectly\n");
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_PARSE_ERROR);
+ Return (API->error);
}
if (adjustData && n_cruises > 1) {
GMT_Report (API, GMT_MSG_NORMAL, "Error: -A adjustments valid for only one cruise.\n");
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_PARSE_ERROR);
+ Return (API->error);
}
if (!strcmp(display,"DTC") && ! dist_to_coast) {
GMT_Report (API, GMT_MSG_NORMAL, "Error: -Dn option requires -Gnav\n");
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_PARSE_ERROR);
+ Return (API->error);
}
if (simulate && n_grids > 0) {
for (i = 0; i < n_grids; i++) {
if (sscanf (this_grid[i].fname, "%lf/%lf", &sim_m[i], &sim_b[i]) != 2) {
GMT_Report (API, GMT_MSG_NORMAL, "Syntax error -G option: Give m/b for simulated grid.\n");
- bailout (GMT_PARSE_ERROR);
+ Return (API->error);
}
}
}
@@ -947,7 +941,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (custom_limit_file) {
if ((custom_fp = gmt_fopen (GMT, custom_limit_file, "r")) == NULL) {
GMT_Report (API, GMT_MSG_NORMAL, "Could not open custom limit file %s\n", custom_limit_file);
- bailout (GMT_ERROR_ON_FOPEN);
+ Return (API->error);
}
else {
while (gmt_fgets (GMT, custom_limit_line, GMT_BUFSIZ, custom_fp)) {
@@ -964,7 +958,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
}
else {
GMT_Report (API, GMT_MSG_NORMAL, "Error in custom limits file [%s]\n", custom_limit_line);
- bailout (GMT_DATA_READ_ERROR);
+ Return (API->error);
}
}
}
@@ -1021,8 +1015,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
gmt_M_fputs ("\n", GMT->session.std[GMT_OUT]);
}
}
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_NOERROR);
+ Return (API->error);
}
/* PRINT HEADER FOR SNIFFER DATA DUMPS */
@@ -1122,21 +1115,20 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (MGD77_Open_File (GMT, list[argno], &M, MGD77_READ_MODE)) continue;
- GMT_Report (API, GMT_MSG_VERBOSE, "Now processing cruise %s\n", list[argno]);
+ GMT_Report (API, GMT_MSG_VERBOSE, "Now processing cruise %s\n", M.NGDC_id);
if (!strcmp(display,"E77")) {
sprintf (outfile,"%s.e77",M.NGDC_id);
if ((fpout = fopen (outfile, "w")) == NULL) {
GMT_Report (API, GMT_MSG_NORMAL, "Could not open E77 output file %s\n", outfile);
MGD77_Path_Free (GMT, n_paths, list);
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_ERROR_ON_FOPEN);
+ Return (API->error);
}
}
/* Read MGD77 header */
if (MGD77_Read_Header_Record (GMT, list[argno], &M, &H))
- GMT_Report (API, GMT_MSG_NORMAL, "Cruise %s has no header.\n", list[argno]);
+ GMT_Report (API, GMT_MSG_NORMAL, "Cruise %s has no header.\n", M.NGDC_id);
/* Allocate memory for data records */
n_alloc = GMT_CHUNK;
@@ -1179,13 +1171,13 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
D[i].number[BadSection[k].col] = MGD77_NaN; /* and set them to NaN */
}
if (i == nvalues) M.bit_pattern[0] -= (1 << BadSection[k].col); /* Turn off this field if all values have been flagged as bad */
- GMT_Report (API, GMT_MSG_NORMAL, "%s (%s) Warning: Resetting %d user-flagged records to NaN prior to analysis\n",list[argno],mgd77snifferdefs[BadSection[k].col].abbrev,i);
+ GMT_Report (API, GMT_MSG_NORMAL, "%s (%s) Warning: Resetting %d user-flagged records to NaN prior to analysis\n",M.NGDC_id,mgd77snifferdefs[BadSection[k].col].abbrev,i);
}
}
/* Output beginning of E77 header */
if (!strcmp(display,"E77")) {
- fprintf (fpout, "# Cruise %s ID %s MGD77 FILE VERSION: %04d%02d%02d N_RECS: %d\n",list[argno],D[0].word[0],\
+ fprintf (fpout, "# Cruise %s ID %s MGD77 FILE VERSION: %04d%02d%02d N_RECS: %d\n",M.NGDC_id,D[0].word[0],\
atoi(H.mgd77[MGD77_ORIG]->File_Creation_Year),atoi(H.mgd77[MGD77_ORIG]->File_Creation_Month),atoi(H.mgd77[MGD77_ORIG]->File_Creation_Day),nvalues);
sprintf(timeStr,"%s",ctime(&clock));
timeStr[strlen(ctime(&clock))-1] = '\0';
@@ -1204,9 +1196,9 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (n_nan > 0 && n_nan < nvalues) { /* Mixed case */
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-time-%.02d: %d of %d records contain invalid time\n",\
- E77_APPLY,E77_WARN,list[argno],NAV_TIME_OOR,n_nan,nvalues);
+ E77_APPLY,E77_WARN,M.NGDC_id,NAV_TIME_OOR,n_nan,nvalues);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s Warning - %d of %d records contain invalid time\n",list[argno],n_nan,nvalues);
+ sprintf (buffer, "%s Warning - %d of %d records contain invalid time\n",M.NGDC_id,n_nan,nvalues);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1290,9 +1282,9 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
E[curr].flags[E77_NAV] |= NAV_TZ_ERROR;
if (warn[TIME_WARN]) {
gmt_ascii_format_col (GMT, timeStr, D[curr].time, GMT_OUT, MGD77_TIME);
- sprintf (placeStr,"%s %s %d - Time zone adjustment error (Westbound)",list[argno],timeStr,curr+1);
+ sprintf (placeStr,"%s %s %d - Time zone adjustment error (Westbound)",M.NGDC_id,timeStr,curr+1);
if (D[curr].time-D[j].time < ((D[curr].time-3600.0*D[curr].number[MGD77_TZ])-(D[j].time-3600.0*D[j].number[MGD77_TZ])))
- sprintf (placeStr,"%s %s %d - Time zone adjustment error (Eastbound)",list[argno],timeStr,curr+1);
+ sprintf (placeStr,"%s %s %d - Time zone adjustment error (Eastbound)",M.NGDC_id,timeStr,curr+1);
sprintf (text, GMT->current.setting.format_float_out, D[curr].time-D[j].time);
printf ("%s: d[UTC_time] - d[local_time] = %.1f - %.1f = %.1f sec.\n",placeStr,(D[curr].time-D[j].time),\
((D[curr].time-3600.0*D[curr].number[MGD77_TZ])-(D[j].time-3600.0*D[j].number[MGD77_TZ])),\
@@ -1338,7 +1330,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
n_bad++;
if (warn[TIME_WARN]) {
gmt_ascii_format_col (GMT, timeStr, D[curr].time, GMT_OUT, MGD77_TIME);
- sprintf (placeStr,"%s %s %d",list[argno],timeStr,curr+1);
+ sprintf (placeStr,"%s %s %d",M.NGDC_id,timeStr,curr+1);
sprintf (text, GMT->current.setting.format_float_out, D[curr].time-D[j].time);
sprintf (buffer, "%s - Time not monotonically increasing (%s sec.)\n",placeStr, text);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
@@ -1372,7 +1364,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
nav_error = true;
if (warn[SPEED_WARN]) {
gmt_ascii_format_col (GMT, timeStr, D[curr].time, GMT_OUT, MGD77_TIME);
- sprintf (placeStr,"%s %s %d",list[argno],timeStr,curr+1);
+ sprintf (placeStr,"%s %s %d",M.NGDC_id,timeStr,curr+1);
sprintf (text, GMT->current.setting.format_float_out, speed);
sprintf (buffer, "%s - Excessive speed %s %s\n",placeStr, text, speed_units);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
@@ -1394,9 +1386,9 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
for (curr = 0; curr < nvalues; curr++) D[curr].keep_nav = (D[curr].keep_nav == false);
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-nav-%.2d: Warning: navigation quality flags reversed by user\n",E77_APPLY,E77_WARN,\
- list[argno],E77_HDR_NAV);
+ M.NGDC_id,E77_HDR_NAV);
if (warn[SPEED_WARN]) {
- sprintf (buffer, "%s - Warning! Navigation flags flipped by user!\n",list[argno]);
+ sprintf (buffer, "%s - Warning! Navigation flags flipped by user!\n",M.NGDC_id);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1494,9 +1486,9 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (n_bad > 0) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-nav-%.2d: Flagged %.2f %% of records with bad navigation\n", \
- E77_APPLY,E77_WARN,list[argno],E77_HDR_NAV,n_bad*100.0/nvalues);
+ E77_APPLY,E77_WARN,M.NGDC_id,E77_HDR_NAV,n_bad*100.0/nvalues);
if (warn[SPEED_WARN]) {
- sprintf (buffer, "%s - Flagged %.2f %% of records with bad navigation", list[argno],n_bad*100.0/nvalues);
+ sprintf (buffer, "%s - Flagged %.2f %% of records with bad navigation", M.NGDC_id,n_bad*100.0/nvalues);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
if ((n_bad*1.0)/nvalues > .25) gmt_M_fputs (", suggest manual navigation review", GMT->session.std[GMT_OUT]);
if ((n_bad*1.0)/nvalues > .5) gmt_M_fputs (", may need to flip flags (see -K option)", GMT->session.std[GMT_OUT]);
@@ -1535,7 +1527,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
max = mgd77snifferdefs[this_grid[i].col].maxValue;
npts = decimate (GMT, grid_val, ship_val, nvalues-this_grid[i].n_nan, min, max, mgd77snifferdefs[this_grid[i].col].delta, &decimated_new, &decimated_orig,&extreme,this_grid[i].abbrev);
if ((1.0*extreme)/k > .05) { /* Many outliers - decimate again */
- GMT_Report (API, GMT_MSG_NORMAL, "%s (%s) warning: > 5%% of records outside normal data range - using max bounds for regression\n",list[argno],this_grid[i].abbrev);
+ GMT_Report (API, GMT_MSG_NORMAL, "%s (%s) warning: > 5%% of records outside normal data range - using max bounds for regression\n",M.NGDC_id,this_grid[i].abbrev);
npts = decimate (GMT, grid_val, ship_val, nvalues-this_grid[i].n_nan, mgd77snifferdefs[this_grid[i].col].binmin, mgd77snifferdefs[this_grid[i].col].binmax,\
mgd77snifferdefs[this_grid[i].col].delta, &decimated_new, &decimated_orig, &extreme, this_grid[i].abbrev);
}
@@ -1575,23 +1567,23 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (adjustData && !strcmp(display,"E77")) {
if (fabs(adjustScale[this_grid[i].col]-1.0)>0.0) {
sprintf (text, GMT->current.setting.format_float_out, stats[MGD77_RLS_SLOPE]/adjustScale[this_grid[i].col]);
- fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression slope %s different from 1. Recommended: [%f]\n",E77_APPLY,E77_ERROR,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression slope %s different from 1. Recommended: [%f]\n",E77_APPLY,E77_ERROR,M.NGDC_id,\
this_grid[i].abbrev,E77_HDR_SCALE,text,adjustScale[this_grid[i].col]);
}
if (fabs(adjustDC[this_grid[i].col])>0.0) {
sprintf (text, GMT->current.setting.format_float_out, stats[MGD77_RLS_ICEPT]-adjustDC[this_grid[i].col]);
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression offset %s different from 0. Recommended: [%f]\n",E77_APPLY,E77_ERROR,\
- list[argno],this_grid[i].abbrev,E77_HDR_DCSHIFT,text,adjustDC[this_grid[i].col]);
+ M.NGDC_id,this_grid[i].abbrev,E77_HDR_DCSHIFT,text,adjustDC[this_grid[i].col]);
}
}
if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) RLS m: %s b: %s rms: %s r: %s sig: %d dec: %d\n",
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
else if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: RLS m: %s b: %s rms: %s r: %s sig: %d dec: %d\n",E77_APPLY,E77_INFO,list[argno],this_grid[i].abbrev,\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: RLS m: %s b: %s rms: %s r: %s sig: %d dec: %d\n",E77_APPLY,E77_INFO,M.NGDC_id,this_grid[i].abbrev,\
E77_HDR_RLS,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
/* Analyze regression slope if significant */
@@ -1603,7 +1595,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if ((stats[MGD77_RLS_SLOPE] <= (1.0-range) || stats[MGD77_RLS_SLOPE] >= (1.0+range)) && fabs(stats[MGD77_RLS_SLOPE]-1.0) > FLT_EPSILON) {
if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Slope %s is statistically different from 1\n",\
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_SLOPE]);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_SLOPE]);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
/* Check if regression slope matches common scales (0.1, 10, etc.) */
@@ -1612,9 +1604,9 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
sprintf (text, GMT->current.setting.format_float_out, test_slope[j]);
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression slope %s statistically identical to %s. Recommended: [%g]\n",\
- E77_REVIEW,E77_ERROR,list[argno],this_grid[i].abbrev,E77_HDR_SCALE,fstats[MGD77_RLS_SLOPE],text,1/test_slope[j]);
+ E77_REVIEW,E77_ERROR,M.NGDC_id,this_grid[i].abbrev,E77_HDR_SCALE,fstats[MGD77_RLS_SLOPE],text,1/test_slope[j]);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (%s) Slope %s statistically identical to %s. Recommended: [%g]\n",list[argno],this_grid[i].abbrev,\
+ sprintf (buffer, "%s (%s) Slope %s statistically identical to %s. Recommended: [%g]\n",M.NGDC_id,this_grid[i].abbrev,\
fstats[MGD77_RLS_SLOPE],text,1/test_slope[j]);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
@@ -1628,7 +1620,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) {
sprintf (text, GMT->current.setting.format_float_out, test_slope[j]);
GMT_Report (API, GMT_MSG_NORMAL, "%s (%s) Warning: Scaled by %s for internal along-track analysis\n",\
- list[argno],this_grid[i].abbrev, text);
+ M.NGDC_id,this_grid[i].abbrev, text);
}
#endif
newScale = true;
@@ -1643,9 +1635,9 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
sprintf (text, GMT->current.setting.format_float_out, recommended_scale);
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression slope %s different from 1. Recommended: [%s]\n",E77_REJECT,E77_ERROR,\
- list[argno],this_grid[i].abbrev,E77_HDR_SCALE,fstats[MGD77_RLS_SLOPE],text);
+ M.NGDC_id,this_grid[i].abbrev,E77_HDR_SCALE,fstats[MGD77_RLS_SLOPE],text);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (%s) Slope %s different from 1. Recommended: [%s]\n",list[argno],this_grid[i].abbrev,\
+ sprintf (buffer, "%s (%s) Slope %s different from 1. Recommended: [%s]\n",M.NGDC_id,this_grid[i].abbrev,\
fstats[MGD77_RLS_SLOPE],text);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
@@ -1655,10 +1647,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
fabs(stats[MGD77_RLS_ICEPT]) <= FLT_EPSILON) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-%s-%.02d: Ship and %s grid appear identical (m=1,b=0,s=0)\n",\
- E77_APPLY,E77_WARN,list[argno],this_grid[i].abbrev,E77_HDR_SCALE,this_grid[i].fname);
+ E77_APPLY,E77_WARN,M.NGDC_id,this_grid[i].abbrev,E77_HDR_SCALE,this_grid[i].fname);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Ship and %s grid appear identical (m=1,b=0,s=0)\n",\
- list[argno],this_grid[i].abbrev,this_grid[i].fname);
+ M.NGDC_id,this_grid[i].abbrev,this_grid[i].fname);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1672,17 +1664,17 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (!gmt_M_is_dnan(adjustDC[this_grid[i].col])) {
if (adjustDC[this_grid[i].col] == 0)
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression offset %s different from 0.\n",E77_APPLY,E77_WARN,\
- list[argno],this_grid[i].abbrev,E77_HDR_DCSHIFT,fstats[MGD77_RLS_ICEPT]);
+ M.NGDC_id,this_grid[i].abbrev,E77_HDR_DCSHIFT,fstats[MGD77_RLS_ICEPT]);
else
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression offset %s different from 0. Recommended: [%f]\n",E77_APPLY,E77_ERROR,\
- list[argno],this_grid[i].abbrev,E77_HDR_DCSHIFT,fstats[MGD77_RLS_ICEPT],adjustDC[this_grid[i].col]);
+ M.NGDC_id,this_grid[i].abbrev,E77_HDR_DCSHIFT,fstats[MGD77_RLS_ICEPT],adjustDC[this_grid[i].col]);
}
else
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression offset %s different from 0.\n",E77_APPLY,E77_WARN,\
- list[argno],this_grid[i].abbrev,E77_HDR_DCSHIFT,fstats[MGD77_RLS_ICEPT]);
+ M.NGDC_id,this_grid[i].abbrev,E77_HDR_DCSHIFT,fstats[MGD77_RLS_ICEPT]);
}
else if (warn[GRID_WARN]) {
- sprintf (buffer, "%s (%s) Offset different than 0 (%s)\n",list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_ICEPT]);
+ sprintf (buffer, "%s (%s) Offset different than 0 (%s)\n",M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_ICEPT]);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
@@ -1693,7 +1685,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
diff[i][n] = D[n].number[this_grid[i].col] - G[i][n]; /* Re-compute cruise - grid differences */
}
GMT_Report (API, GMT_MSG_VERBOSE, "%s (%s) Warning: Offset corrected by %s for internal along-track analysis\n",\
- list[argno],this_grid[i].abbrev, fstats[MGD77_RLS_ICEPT]);
+ M.NGDC_id,this_grid[i].abbrev, fstats[MGD77_RLS_ICEPT]);
#endif
}
}
@@ -1703,9 +1695,9 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (M.bit_pattern[0] & (0 << MGD77_GOBS) && this_grid[i].col == MGD77_FAA && fabs(stats[MGD77_RLS_ICEPT]-H.meta.G1980_1930) < 2.0) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-%s-%.02d: Free-air anomalies may have been computed using IGF 1930. [Adjust to IGF 1980]\n",\
- E77_REVIEW,E77_ERROR,list[argno],this_grid[i].abbrev,E77_HDR_ANOM_FAA_IGF);
+ E77_REVIEW,E77_ERROR,M.NGDC_id,this_grid[i].abbrev,E77_HDR_ANOM_FAA_IGF);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (%s) Free-air anomalies may have been computed using IGF 1930.\n",list[argno],this_grid[i].abbrev);
+ sprintf (buffer, "%s (%s) Free-air anomalies may have been computed using IGF 1930.\n",M.NGDC_id,this_grid[i].abbrev);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1720,10 +1712,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_SLOPE] < depth_v_grid[j+1].m || stats[MGD77_RLS_SLOPE] > depth_v_grid[n-1].m) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression slope (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,\
- list[argno],this_grid[i].abbrev,E77_HDR_SCALE,fstats[MGD77_RLS_SLOPE],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,E77_HDR_SCALE,fstats[MGD77_RLS_SLOPE],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Regression slope (%s) outside %s%% limits.\n",\
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_SLOPE],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_SLOPE],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1732,10 +1724,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_RMS] > depth_v_grid[k-1].rms) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression rms (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,\
- list[argno],this_grid[i].abbrev,E77_HDR_RMS,fstats[MGD77_RLS_RMS],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,E77_HDR_RMS,fstats[MGD77_RLS_RMS],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Regression rms (%s) outside %s%% limits.\n",\
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_RMS],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_RMS],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1744,10 +1736,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_CORR] < depth_v_grid[j+1].r) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression correlation (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,\
- list[argno],this_grid[i].abbrev,E77_HDR_CORR,fstats[MGD77_RLS_CORR],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,E77_HDR_CORR,fstats[MGD77_RLS_CORR],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Regression correlation (%s) outside %s%% limits.\n",\
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_CORR],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_CORR],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1758,22 +1750,22 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
for (n = RLS_N_FAA_ROWS-1; 1-percent_limit/200.0 < faa_v_grid[n].cd && n > 1; n--);
if (stats[MGD77_RLS_SLOPE] < faa_v_grid[j+1].m || stats[MGD77_RLS_SLOPE] > faa_v_grid[n-1].m) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression slope (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression slope (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,M.NGDC_id,\
this_grid[i].abbrev,E77_HDR_SCALE,fstats[MGD77_RLS_SLOPE],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Regression slope (%s) outside %s%% limits.\n",\
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_SLOPE],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_SLOPE],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
/*check faa rls intercept (two sided test) */
if (stats[MGD77_RLS_ICEPT] < faa_v_grid[j+1].b || stats[MGD77_RLS_ICEPT] > faa_v_grid[k-1].b) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression offset (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression offset (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,M.NGDC_id,\
this_grid[i].abbrev,E77_HDR_DCSHIFT,fstats[MGD77_RLS_ICEPT],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Regression offset (%s) outside %s%% limits.\n",\
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_ICEPT],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_ICEPT],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1781,11 +1773,11 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
for (n = RLS_N_FAA_ROWS-1; 1-percent_limit/100.0 < faa_v_grid[n].cd && n > 1; n--);
if (stats[MGD77_RLS_RMS] > faa_v_grid[n-1].rms) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression rms (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression rms (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,M.NGDC_id,\
this_grid[i].abbrev,E77_HDR_RMS,fstats[MGD77_RLS_RMS],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Regression rms (%s) outside %s%% limits.\n",\
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_RMS],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_RMS],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1793,11 +1785,11 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
for (j = 0; faa_v_grid[j].cd < percent_limit/100.0 && j < RLS_N_FAA_ROWS-2; j++);
if (stats[MGD77_RLS_CORR] < faa_v_grid[j+1].r) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression correlation (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: Regression correlation (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,M.NGDC_id,\
this_grid[i].abbrev,E77_HDR_CORR,fstats[MGD77_RLS_CORR],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (%s) Regression correlation (%s) outside %s%% limits.\n",\
- list[argno],this_grid[i].abbrev,fstats[MGD77_RLS_CORR],fpercent_limit);
+ M.NGDC_id,this_grid[i].abbrev,fstats[MGD77_RLS_CORR],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1809,7 +1801,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
/* Turn off this empty field */
M.bit_pattern[0] -= (1 << this_grid[i].col);
GMT_Report (API, GMT_MSG_NORMAL, "%s (%s) Warning: Insufficient bins for regression (%d found)\n",\
- list[argno],this_grid[i].abbrev, k);
+ M.NGDC_id,this_grid[i].abbrev, k);
}
/* Free up regression array memory */
gmt_M_free (GMT, ship_val);
@@ -1850,7 +1842,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
npts = decimate (GMT, new_anom, old_anom, n, mgd77snifferdefs[MGD77_FAA].minValue, mgd77snifferdefs[MGD77_FAA].maxValue,\
mgd77snifferdefs[MGD77_FAA].delta, &decimated_new, &decimated_orig, &extreme, "nfaa");
if ((1.0*extreme)/n > .05) { /* Many outliers - decimate again */
- GMT_Report (API, GMT_MSG_NORMAL, "%s (faa) warning: > 5%% of records outside normal data range - using max bounds for regression\n",list[argno]);
+ GMT_Report (API, GMT_MSG_NORMAL, "%s (faa) warning: > 5%% of records outside normal data range - using max bounds for regression\n",M.NGDC_id);
npts = decimate (GMT, new_anom, old_anom, n, mgd77snifferdefs[MGD77_FAA].binmin, mgd77snifferdefs[MGD77_FAA].binmax,\
mgd77snifferdefs[MGD77_FAA].delta, &decimated_new, &decimated_orig, &extreme, "nfaa");
}
@@ -1888,38 +1880,38 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_SIG] == 1.0) {
if (((1.0 < (stats[MGD77_RLS_SLOPE]-range) || 1.0 > (stats[MGD77_RLS_SLOPE]+range)) || (0.0 < (stats[MGD77_RLS_ICEPT]-range2) || 0.0 > (stats[MGD77_RLS_ICEPT]+range2)))) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-faa-%.02d: Anomaly differs from gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d). [Recompute]\n",E77_REVIEW,E77_ERROR,list[argno],\
+ fprintf (fpout, "%c-%c-%s-faa-%.02d: Anomaly differs from gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d). [Recompute]\n",E77_REVIEW,E77_ERROR,M.NGDC_id,\
(int)(E77_HDR_ANOM_FAA+(m*9)),text,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (faa) anomaly differs from gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",list[argno],text,fstats[MGD77_RLS_SLOPE],\
+ sprintf (buffer, "%s (faa) anomaly differs from gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",M.NGDC_id,text,fstats[MGD77_RLS_SLOPE],\
fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
} else {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-faa-%.02d: Anomaly equivalent to gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",E77_APPLY,E77_INFO,list[argno],\
+ fprintf (fpout, "%c-%c-%s-faa-%.02d: Anomaly equivalent to gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",E77_APPLY,E77_INFO,M.NGDC_id,\
(int)(E77_HDR_ANOM_FAA+(m*9)),text,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (faa) anomaly statistically the same as gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",list[argno],text,\
+ sprintf (buffer, "%s (faa) anomaly statistically the same as gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",M.NGDC_id,text,\
fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
if (m == 1 && stats[MGD77_RLS_CORR] > lastCorr) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-faa-%.02d: gobs may not be corrected for Eotvos (correlation for gobs-IGF80+eot > correlation for gobs-IGF80)\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-faa-%.02d: gobs may not be corrected for Eotvos (correlation for gobs-IGF80+eot > correlation for gobs-IGF80)\n",E77_APPLY,E77_WARN,M.NGDC_id,\
E77_HDR_ANOM_FAA_EOT);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (faa) gobs may not be corrected for Eotvos (correlation for gobs-IGF80+eot > correlation for gobs-IGF80)\n",list[argno]);
+ sprintf (buffer, "%s (faa) gobs may not be corrected for Eotvos (correlation for gobs-IGF80+eot > correlation for gobs-IGF80)\n",M.NGDC_id);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
} else {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-faa-%.02d: Insignificant regression: reported versus gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d). [Recompute]\n",E77_REJECT,E77_ERROR,list[argno],\
+ fprintf (fpout, "%c-%c-%s-faa-%.02d: Insignificant regression: reported versus gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d). [Recompute]\n",E77_REJECT,E77_ERROR,M.NGDC_id,\
(int)(E77_HDR_ANOM_FAA+(m*9)),text,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (faa) insignificant regression: reported versus gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",list[argno],text,fstats[MGD77_RLS_SLOPE],\
+ sprintf (buffer, "%s (faa) insignificant regression: reported versus gobs-IGF80%s(m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",M.NGDC_id,text,fstats[MGD77_RLS_SLOPE],\
fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
@@ -1943,7 +1935,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
npts = decimate (GMT, new_anom, old_anom, n, mgd77snifferdefs[MGD77_FAA].minValue, mgd77snifferdefs[MGD77_FAA].maxValue,\
mgd77snifferdefs[MGD77_FAA].delta, &decimated_new, &decimated_orig, &extreme, "nfaa");
if ((1.0*extreme)/n > .05) { /* Many outliers - decimate again */
- GMT_Report (API, GMT_MSG_NORMAL, "%s (faa) warning: > 5%% of records outside normal data range - using max bounds for regression\n",list[argno]);
+ GMT_Report (API, GMT_MSG_NORMAL, "%s (faa) warning: > 5%% of records outside normal data range - using max bounds for regression\n",M.NGDC_id);
npts = decimate (GMT, new_anom, old_anom, n, mgd77snifferdefs[MGD77_FAA].binmin, mgd77snifferdefs[MGD77_FAA].binmax,\
mgd77snifferdefs[MGD77_FAA].delta, &decimated_new, &decimated_orig, &extreme, "nfaa");
}
@@ -1963,10 +1955,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (grav_formula == MGD77_IGF_1930) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-faa-%.02d: Free-air anomalies may have been computed using IGF 1930 (m: %s b: %s rms: %s r: %s sig: %d dec: %d). [Adjust to IGF 1980]\n",E77_REVIEW,
- E77_ERROR,list[argno],E77_HDR_ANOM_FAA_IGF,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
+ E77_ERROR,M.NGDC_id,E77_HDR_ANOM_FAA_IGF,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (faa) Free-air anomalies may have been computed using IGF 1930 (m: %s b: %s rms: %s r: %s sig: %d dec: %d). (Consider adjusting to 1980).\n",\
- list[argno],fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
+ M.NGDC_id,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -1980,22 +1972,22 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
for (k = RLS_N_NEWFAA_ROWS-1; 1-percent_limit/200.0 < faa_v_newfaa[k].cd && k > 1; k--);
if (stats[MGD77_RLS_SLOPE] < faa_v_newfaa[j+1].m || stats[MGD77_RLS_SLOPE] > faa_v_newfaa[k-1].m) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-faa-%.02d: Recomputed anomaly regression slope (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-faa-%.02d: Recomputed anomaly regression slope (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,M.NGDC_id,\
E77_HDR_ANOM_FAA,fstats[MGD77_RLS_SLOPE],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (faa) Recomputed anomaly regression slope (%s) outside %s%% limits.\n",\
- list[argno],fstats[MGD77_RLS_SLOPE],fpercent_limit);
+ M.NGDC_id,fstats[MGD77_RLS_SLOPE],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
/* check faa rls intercept */
if (stats[MGD77_RLS_ICEPT] < faa_v_newfaa[j+1].b || stats[MGD77_RLS_ICEPT] > faa_v_newfaa[k-1].b) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-faa-%.02d: Recomputed anomaly regression intercept (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-faa-%.02d: Recomputed anomaly regression intercept (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,M.NGDC_id,\
E77_HDR_ANOM_FAA,fstats[MGD77_RLS_ICEPT],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (faa) Recomputed anomaly regression intercept (%s) outside %s%% limits.\n",\
- list[argno],fstats[MGD77_RLS_ICEPT],fpercent_limit);
+ M.NGDC_id,fstats[MGD77_RLS_ICEPT],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -2003,11 +1995,11 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
for (k = RLS_N_NEWFAA_ROWS-1; 1-percent_limit/100.0 < faa_v_newfaa[k].cd && k > 1; k--);
if (stats[MGD77_RLS_RMS] > faa_v_newfaa[k-1].rms) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-faa-%.02d: Recomputed anomaly regression rms (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-faa-%.02d: Recomputed anomaly regression rms (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,M.NGDC_id,\
E77_HDR_ANOM_FAA,fstats[MGD77_RLS_RMS],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (faa) Recomputed anomaly regression rms (%s) outside %s%% limits.\n",\
- list[argno],fstats[MGD77_RLS_RMS],fpercent_limit);
+ M.NGDC_id,fstats[MGD77_RLS_RMS],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -2015,11 +2007,11 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
for (j = 0; faa_v_newfaa[j].cd < percent_limit/100.0 && j < RLS_N_NEWFAA_ROWS-2; j++);
if (stats[MGD77_RLS_CORR] < faa_v_newfaa[j+1].r) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-faa-%.02d: Recomputed anomaly regression correlation (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-faa-%.02d: Recomputed anomaly regression correlation (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,M.NGDC_id,\
E77_HDR_ANOM_FAA,fstats[MGD77_RLS_CORR],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (faa) Recomputed anomaly regression correlation (%s) outside %s%% limits.\n",\
- list[argno],fstats[MGD77_RLS_CORR],fpercent_limit);
+ M.NGDC_id,fstats[MGD77_RLS_CORR],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -2063,7 +2055,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
npts = decimate (GMT, new_anom, old_anom, n, mgd77snifferdefs[MGD77_MAG].minValue, mgd77snifferdefs[MGD77_MAG].maxValue,\
mgd77snifferdefs[MGD77_MAG].delta, &decimated_new, &decimated_orig, &extreme, "nmag");
if ((1.0*extreme)/n > .05) { /* Many outliers - decimate again */
- GMT_Report (API, GMT_MSG_NORMAL, "%s (mag) warning: > 5%% of records outside normal data range - using max bounds for regression\n",list[argno]);
+ GMT_Report (API, GMT_MSG_NORMAL, "%s (mag) warning: > 5%% of records outside normal data range - using max bounds for regression\n",M.NGDC_id);
npts = decimate (GMT,new_anom, old_anom, n, mgd77snifferdefs[MGD77_MAG].binmin, mgd77snifferdefs[MGD77_MAG].binmax,\
mgd77snifferdefs[MGD77_MAG].delta, &decimated_new, &decimated_orig, &extreme, "nmag");
}
@@ -2103,32 +2095,32 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_SIG] == 1.0) {
if (((1.0 < (stats[MGD77_RLS_SLOPE]-range) || 1.0 > (stats[MGD77_RLS_SLOPE]+range)) || (0.0 < (stats[MGD77_RLS_ICEPT]-range2) || 0.0 > (stats[MGD77_RLS_ICEPT]+range2)))) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-mag-%.2d: Anomaly differs from mtf%d-IGRF (m: %s b: %s rms: %s r: %s sig: %d dec: %d). [Recompute]\n",E77_REVIEW,E77_ERROR,list[argno],\
+ fprintf (fpout, "%c-%c-%s-mag-%.2d: Anomaly differs from mtf%d-IGRF (m: %s b: %s rms: %s r: %s sig: %d dec: %d). [Recompute]\n",E77_REVIEW,E77_ERROR,M.NGDC_id,\
E77_HDR_ANOM_MAG,2-(int)mtf1,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (mag) anomaly differs from mtf%d-IGRF (m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",list[argno],2-(int)mtf1,\
+ sprintf (buffer, "%s (mag) anomaly differs from mtf%d-IGRF (m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",M.NGDC_id,2-(int)mtf1,\
fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
} else {
if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (mag) anomaly same as expected (m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",list[argno],fstats[MGD77_RLS_SLOPE],\
+ sprintf (buffer, "%s (mag) anomaly same as expected (m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",M.NGDC_id,fstats[MGD77_RLS_SLOPE],\
fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
else if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-mag-%.02d: Anomaly equivalent to mtf%d-IGRF (m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",E77_APPLY,E77_INFO,list[argno],\
+ fprintf (fpout, "%c-%c-%s-mag-%.02d: Anomaly equivalent to mtf%d-IGRF (m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",E77_APPLY,E77_INFO,M.NGDC_id,\
E77_HDR_ANOM_MAG,2-(int)mtf1,fstats[MGD77_RLS_SLOPE],fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
}
} else {
if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (mag) recalculated anomaly regression insignificant (m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",list[argno],fstats[MGD77_RLS_SLOPE],\
+ sprintf (buffer, "%s (mag) recalculated anomaly regression insignificant (m: %s b: %s rms: %s r: %s sig: %d dec: %d)\n",M.NGDC_id,fstats[MGD77_RLS_SLOPE],\
fstats[MGD77_RLS_ICEPT],fstats[MGD77_RLS_RMS],fstats[MGD77_RLS_CORR],(int)stats[MGD77_RLS_SIG],(int)decimated);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
} else {
- sprintf (buffer, "%s (mag) unable to recompute anomalies\n",list[argno]);
+ sprintf (buffer, "%s (mag) unable to recompute anomalies\n",M.NGDC_id);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
gmt_M_free (GMT, new_anom);
@@ -2142,10 +2134,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_SLOPE] < mag_v_newmag[j+1].m || stats[MGD77_RLS_SLOPE] > mag_v_newmag[k-1].m) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-mag-%.02d: Recomputed anomaly regression slope (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,\
- list[argno],E77_HDR_ANOM_MAG,fstats[MGD77_RLS_SLOPE],fpercent_limit);
+ M.NGDC_id,E77_HDR_ANOM_MAG,fstats[MGD77_RLS_SLOPE],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (mag) Recomputed anomaly regression slope (%s) outside %s%% limits.\n",\
- list[argno],fstats[MGD77_RLS_SLOPE],fpercent_limit);
+ M.NGDC_id,fstats[MGD77_RLS_SLOPE],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -2153,10 +2145,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_ICEPT] < mag_v_newmag[j+1].b || stats[MGD77_RLS_ICEPT] > mag_v_newmag[k-1].b) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-mag-%.02d: Recomputed anomaly regression intercept (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,\
- list[argno],E77_HDR_ANOM_MAG,fstats[MGD77_RLS_ICEPT],fpercent_limit);
+ M.NGDC_id,E77_HDR_ANOM_MAG,fstats[MGD77_RLS_ICEPT],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (mag) Recomputed anomaly regression intercept (%s) outside %s%% limits.\n",\
- list[argno],fstats[MGD77_RLS_ICEPT],fpercent_limit);
+ M.NGDC_id,fstats[MGD77_RLS_ICEPT],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -2165,10 +2157,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_RMS] > mag_v_newmag[k-1].rms) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-mag-%.02d: Recomputed anomaly regression rms (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,\
- list[argno],E77_HDR_ANOM_MAG,fstats[MGD77_RLS_RMS],fpercent_limit);
+ M.NGDC_id,E77_HDR_ANOM_MAG,fstats[MGD77_RLS_RMS],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (mag) Recomputed anomaly regression rms (%s) outside %s%% limits.\n",\
- list[argno],fstats[MGD77_RLS_RMS],fpercent_limit);
+ M.NGDC_id,fstats[MGD77_RLS_RMS],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -2177,10 +2169,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (stats[MGD77_RLS_CORR] < mag_v_newmag[j+1].r) {
if (!strcmp(display,"E77"))
fprintf (fpout, "%c-%c-%s-mag-%.02d: Recomputed anomaly regression correlation (%s) outside %s%% limits.\n",E77_APPLY,E77_WARN,\
- list[argno],E77_HDR_ANOM_MAG,fstats[MGD77_RLS_CORR],fpercent_limit);
+ M.NGDC_id,E77_HDR_ANOM_MAG,fstats[MGD77_RLS_CORR],fpercent_limit);
else if (warn[SUMMARY_WARN]) {
sprintf (buffer, "%s (mag) Recomputed anomaly regression correlation (%s) outside %s%% limits.\n",\
- list[argno],fstats[MGD77_RLS_CORR],fpercent_limit);
+ M.NGDC_id,fstats[MGD77_RLS_CORR],fpercent_limit);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -2225,7 +2217,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
gmt_ascii_format_col (GMT, timeStr, distance[curr], GMT_OUT, GMT_Z);
/* Create the location portion of the verbose data warning string (not for E77) */
- sprintf (placeStr,"%s %s %d",list[argno],timeStr,curr+1);
+ sprintf (placeStr,"%s %s %d",M.NGDC_id,timeStr,curr+1);
/* Check for time out of range */
if (D[curr].time > maxTime || D[curr].time < \
@@ -2605,10 +2597,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
sprintf (buffer, "%s\n",text); gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-%s-%.2d: Extended offset from grid [%d-%d]\n",E77_REVIEW,E77_ERROR,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.2d: Extended offset from grid [%d-%d]\n",E77_REVIEW,E77_ERROR,M.NGDC_id,\
this_grid[i].abbrev,E77_HDR_GRID_OFFSET,offsetStart[i]+1,curr+1);
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (%s) extended offset from grid (%d-%d)\n",list[argno],this_grid[i].abbrev,\
+ sprintf (buffer, "%s (%s) extended offset from grid (%d-%d)\n",M.NGDC_id,this_grid[i].abbrev,\
offsetStart[i]+1,curr+1);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
@@ -2685,6 +2677,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
}
}
#endif
+ gmt_M_free (GMT, out[curr]);
}
#ifdef FIX
@@ -2739,10 +2732,10 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
/* Test for PDR wrap */
if (n_wrap > 0) {
if (!strcmp(display,"E77"))
- fprintf (fpout, "%c-%c-%s-%s-%.2d: Encountered possible PDR wrap errors (%.1f) [%.1f]\n",E77_REVIEW,E77_ERROR,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.2d: Encountered possible PDR wrap errors (%.1f) [%.1f]\n",E77_REVIEW,E77_ERROR,M.NGDC_id,\
mgd77defs[MGD77_TWT].abbrev,E77_HDR_PDR, wrapsum/n_wrap, 5.0 * rint ((wrapsum/n_wrap)/5.0));
else if (warn[SUMMARY_WARN]) {
- sprintf (buffer, "%s (%s) encountered possible PDR wrap errors (%.1f) [%.1f]\n",list[argno],mgd77defs[MGD77_TWT].abbrev,\
+ sprintf (buffer, "%s (%s) encountered possible PDR wrap errors (%.1f) [%.1f]\n",M.NGDC_id,mgd77defs[MGD77_TWT].abbrev,\
wrapsum/n_wrap, 5.0 * rint ((wrapsum/n_wrap)/5.0));
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
@@ -2788,19 +2781,19 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
}
if (!strcmp(display,"E77")) {
if (MGD77_sign_bit[i] == (MGD77_ZERO_BIT))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: all anomalies are zero\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: all anomalies are zero\n",E77_APPLY,E77_WARN,M.NGDC_id,\
mgd77defs[i].abbrev,E77_HDR_SIGN);
else if (MGD77_sign_bit[i] == (MGD77_NEG_BIT))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: only found negative values\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: only found negative values\n",E77_APPLY,E77_WARN,M.NGDC_id,\
mgd77defs[i].abbrev,E77_HDR_SIGN);
else if (MGD77_sign_bit[i] == (MGD77_NEG_BIT + MGD77_ZERO_BIT))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: all values less than or equal to zero\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: all values less than or equal to zero\n",E77_APPLY,E77_WARN,M.NGDC_id,\
mgd77defs[i].abbrev,E77_HDR_SIGN);
else if (MGD77_sign_bit[i] == (MGD77_POS_BIT))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: only found positive values\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: only found positive values\n",E77_APPLY,E77_WARN,M.NGDC_id,\
mgd77defs[i].abbrev,E77_HDR_SIGN);
else if (MGD77_sign_bit[i] == (MGD77_POS_BIT + MGD77_ZERO_BIT))
- fprintf (fpout, "%c-%c-%s-%s-%.02d: all values greater than or equal to zero\n",E77_APPLY,E77_WARN,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: all values greater than or equal to zero\n",E77_APPLY,E77_WARN,M.NGDC_id,\
mgd77defs[i].abbrev,E77_HDR_SIGN);
}
}
@@ -2812,31 +2805,31 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_VERBOSE, "Generating errata table %s.e77\n",M.NGDC_id);
/* Echo out the user-specified invalid data records */
for (i = 0; i < n_bad_sections; i++) {
- fprintf (fpout, "%c-%c-%s-%s-%.02d: Invalid data records: [%d-%d]\n",E77_APPLY,E77_ERROR,list[argno],\
+ fprintf (fpout, "%c-%c-%s-%s-%.02d: Invalid data records: [%d-%d]\n",E77_APPLY,E77_ERROR,M.NGDC_id,\
BadSection[i].abbrev,E77_HDR_FLAGRANGE,BadSection[i].start,BadSection[i].stop);
}
/* E77 HEADER MESSAGES */
if ((bccCode != 63 && bccCode != 88 && (M.bit_pattern[0] & MGD77_TWT_BIT)) OR_TRUE)
- fprintf (fpout, "%c-%c-%s-twt-%.2d: More recent bathymetry correction table available\n",E77_APPLY,E77_WARN,list[argno],E77_HDR_BCC);
+ fprintf (fpout, "%c-%c-%s-twt-%.2d: More recent bathymetry correction table available\n",E77_APPLY,E77_WARN,M.NGDC_id,E77_HDR_BCC);
if ((bccCode > 0 && bccCode < 56 && !(M.bit_pattern[0] & MGD77_TWT_BIT)) OR_TRUE)
- fprintf (fpout, "%c-%c-%s-twt-%.2d: twt may be extracted from depth for Carter correction\n",E77_APPLY,E77_WARN,list[argno],E77_HDR_BCC);
+ fprintf (fpout, "%c-%c-%s-twt-%.2d: twt may be extracted from depth for Carter correction\n",E77_APPLY,E77_WARN,M.NGDC_id,E77_HDR_BCC);
/* Output data precision warnings */
if (lowPrecision || lowPrecision5 OR_TRUE) {
for (k = MGD77_LATITUDE; k < MGD77_N_NUMBER_FIELDS; k++) {
if (lowPrecision5 & (1 << k) OR_TRUE)
- fprintf(fpout, "%c-%c-%s-%s-%.02d: Integer multiple of 5 precision\n",E77_APPLY,E77_WARN,list[argno],mgd77defs[k].abbrev,\
+ fprintf(fpout, "%c-%c-%s-%s-%.02d: Integer multiple of 5 precision\n",E77_APPLY,E77_WARN,M.NGDC_id,mgd77defs[k].abbrev,\
E77_HDR_PRECISION);
if (!(lowPrecision5 & (1 << k) OR_TRUE) && lowPrecision & (1 << k) OR_TRUE)
- fprintf(fpout, "%c-%c-%s-%s-%.02d: Integer precision\n",E77_APPLY,E77_WARN,list[argno],mgd77defs[k].abbrev,E77_HDR_PRECISION);
+ fprintf(fpout, "%c-%c-%s-%s-%.02d: Integer precision\n",E77_APPLY,E77_WARN,M.NGDC_id,mgd77defs[k].abbrev,E77_HDR_PRECISION);
}
}
/* E77 ERROR RECORDS */
fprintf (fpout,"# Errata: Data\n");
for (rec = 0; rec < curr; rec++) {
- sprintf (placeStr, "%s%s%s%s%d%s",list[argno],GMT->current.setting.io_col_separator,timeStr,GMT->current.setting.io_col_separator,rec+1,\
+ sprintf (placeStr, "%s%s%s%s%d%s",M.NGDC_id,GMT->current.setting.io_col_separator,timeStr,GMT->current.setting.io_col_separator,rec+1,\
GMT->current.setting.io_col_separator);
errorStr[0]='\0';
for (type = 0; type < N_ERROR_CLASSES; type++) {
@@ -2857,13 +2850,13 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
else
gmt_ascii_format_col (GMT, timeStr, distance[rec], GMT_OUT, GMT_Z);
/* Version 1 data corrections apply crucial nav errors and not value and gradient errors */
- sprintf (placeStr, "%s%s%s%s%d%s",list[argno],GMT->current.setting.io_col_separator,timeStr,GMT->current.setting.io_col_separator,rec+1,\
+ sprintf (placeStr, "%s%s%s%s%d%s",M.NGDC_id,GMT->current.setting.io_col_separator,timeStr,GMT->current.setting.io_col_separator,rec+1,\
GMT->current.setting.io_col_separator);
if ((!D[rec].keep_nav && E[rec].flags[E77_NAV]) || E[rec].utc_offset OR_TRUE)
- sprintf (placeStr, "%c%s%s%s%s%s%d%s",E77_APPLY,GMT->current.setting.io_col_separator,list[argno],GMT->current.setting.io_col_separator,\
+ sprintf (placeStr, "%c%s%s%s%s%s%d%s",E77_APPLY,GMT->current.setting.io_col_separator,M.NGDC_id,GMT->current.setting.io_col_separator,\
timeStr,GMT->current.setting.io_col_separator,rec+1,GMT->current.setting.io_col_separator);
else
- sprintf (placeStr, "%c%s%s%s%s%s%d%s",E77_REVIEW,GMT->current.setting.io_col_separator,list[argno],GMT->current.setting.io_col_separator,\
+ sprintf (placeStr, "%c%s%s%s%s%s%d%s",E77_REVIEW,GMT->current.setting.io_col_separator,M.NGDC_id,GMT->current.setting.io_col_separator,\
timeStr,GMT->current.setting.io_col_separator,rec+1,GMT->current.setting.io_col_separator);
fprintf (fpout, "%s%s%s",placeStr,errorStr,GMT->current.setting.io_col_separator);
prevType = false;
@@ -2936,35 +2929,35 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
/* Print Error Summary */
if (warn[SUMMARY_WARN]) {
if (noTimeCount == curr - 1) { /* no valid time in data */
- sprintf (buffer, "%s (time) Cruise contains no time record\n", list[argno]);
+ sprintf (buffer, "%s (time) Cruise contains no time record\n", M.NGDC_id);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
if (noTimeCount >0 && noTimeCount < curr) { /* print the first and number of nine-filled time records */
- sprintf (buffer, "%s (time) %d records contain no time starting at record #%d\n",list[argno],\
+ sprintf (buffer, "%s (time) %d records contain no time starting at record #%d\n",M.NGDC_id,\
noTimeCount, noTimeStart);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
if (timeErrorCount > 0 && timeErrorCount < curr) {/* print the first and number of time errors */
- sprintf (buffer, "%s (time) %d records had time errors starting at record #%d\n",list[argno],\
+ sprintf (buffer, "%s (time) %d records had time errors starting at record #%d\n",M.NGDC_id,\
timeErrorCount, timeErrorStart);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
if (distanceErrorCount > 0) { /* print the first and number of distance errors */
- sprintf (buffer, "%s (dist) %d records had distance errors starting at record #%d\n",list[argno],\
+ sprintf (buffer, "%s (dist) %d records had distance errors starting at record #%d\n",M.NGDC_id,\
distanceErrorCount,distanceErrorStart);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
for (i = MGD77_LATITUDE; i < MGD77_N_NUMBER_FIELDS; i++) {
if ((lowPrecision & (1 << i)) && !(lowPrecision5 & (1 << i))) {
- sprintf (buffer, "%s (%s) Data Precision Warning: only integer values found\n",list[argno],mgd77defs[i].abbrev);
+ sprintf (buffer, "%s (%s) Data Precision Warning: only integer values found\n",M.NGDC_id,mgd77defs[i].abbrev);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
if (lowPrecision5 & (1 << i)) { /* low precision data */
- sprintf (buffer, "%s (%s) Data Precision Warning: only integer multiples of 5 found\n",list[argno], mgd77defs[i].abbrev);
+ sprintf (buffer, "%s (%s) Data Precision Warning: only integer multiples of 5 found\n",M.NGDC_id, mgd77defs[i].abbrev);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -2972,7 +2965,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (n_grids) {
for (i = 0; i < n_grids; i++) {
sprintf (text, GMT->current.setting.format_float_out, MaxDiff[i]);
- sprintf (buffer, "%s (%s) Max ship-grid difference [%s] at record %d\n",list[argno],\
+ sprintf (buffer, "%s (%s) Max ship-grid difference [%s] at record %d\n",M.NGDC_id,\
mgd77defs[this_grid[i].col].abbrev,text,iMaxDiff[i]);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
@@ -2980,7 +2973,7 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
if (landcruise) { /* vessel went over land (GPS error or other gross navigation) */
sprintf (buffer, "%s (nav) Navigation Warning: %d records went over land starting at record %d\n",\
- list[argno], overLandCount, overLandStart);
+ M.NGDC_id, overLandCount, overLandStart);
gmt_M_fputs (buffer, GMT->session.std[GMT_OUT]);
}
}
@@ -3016,6 +3009,5 @@ int GMT_mgd77sniffer (void *V_API, int mode, void *args) {
MGD77_Path_Free (GMT, n_paths, list);
MGD77_end (GMT, &M);
MGD77_end (GMT, &Out);
- gmt_M_free (GMT, GMT_cpy);
- bailout (GMT_NOERROR);
+ Return (GMT_NOERROR);
}
diff --git a/src/mgd77/mgd77sniffer.h b/src/mgd77/mgd77sniffer.h
index ed5d277..313b51e 100644
--- a/src/mgd77/mgd77sniffer.h
+++ b/src/mgd77/mgd77sniffer.h
@@ -1,8 +1,8 @@
/* -------------------------------------------------------------------
- * $Id: mgd77sniffer.h 16544 2016-06-14 00:15:52Z pwessel $
+ * $Id: mgd77sniffer.h 17449 2017-01-16 21:27:04Z pwessel $
* See LICENSE.TXT file for copying and redistribution conditions.
*
- * Copyright (c) 2004-2016 by P. Wessel and M. T. Chandler
+ * Copyright (c) 2004-2017 by P. Wessel and M. T. Chandler
* File: mgd77sniffer.h
*
* Include file for mgd77sniffer
diff --git a/src/mgd77/mgd77snifferdefaults.h b/src/mgd77/mgd77snifferdefaults.h
index 62b7836..5ea5d2f 100644
--- a/src/mgd77/mgd77snifferdefaults.h
+++ b/src/mgd77/mgd77snifferdefaults.h
@@ -1,8 +1,8 @@
/* -------------------------------------------------------------------
- * $Id: mgd77snifferdefaults.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: mgd77snifferdefaults.h 17449 2017-01-16 21:27:04Z pwessel $
* See LICENSE.TXT file for copying and redistribution conditions.
*
- * Copyright (c) 2004-2016 by P. Wessel and M. T. Chandler
+ * Copyright (c) 2004-2017 by P. Wessel and M. T. Chandler
* File: mgd77snifferdefaults.h
*
* Include file for mgd77sniffer
diff --git a/src/mgd77/mgd77track.c b/src/mgd77/mgd77track.c
index cbc11bf..b00ad82 100644
--- a/src/mgd77/mgd77track.c
+++ b/src/mgd77/mgd77track.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: mgd77track.c 16950 2016-08-19 05:17:22Z remko $
+ * $Id: mgd77track.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2004-2016 by P. Wessel
+ * Copyright (c) 2004-2017 by P. Wessel
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/*
@@ -16,7 +16,7 @@
*
* Author: Paul Wessel
* Date: 19-AUG-2004
- * Version: 1.0 Based alot on the old gmttrack.c
+ * Version: 1.0 Based a lot on the old gmttrack.c
*
*
*/
@@ -583,7 +583,7 @@ int GMT_mgd77track (void *V_API, int mode, void *args) {
struct MGD77TRACK_CTRL *Ctrl = NULL;
struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL;
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
diff --git a/src/misc/CMakeLists.txt b/src/misc/CMakeLists.txt
index 118cbe5..f50e4d1 100644
--- a/src/misc/CMakeLists.txt
+++ b/src/misc/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/misc/dimfilter.c b/src/misc/dimfilter.c
index 2133324..590e7d3 100644
--- a/src/misc/dimfilter.c
+++ b/src/misc/dimfilter.c
@@ -1,5 +1,5 @@
/*
- * $Id: dimfilter.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: dimfilter.c 17560 2017-02-17 22:05:42Z pwessel $
*
* dimfilter.c reads a grdfile and creates filtered grd file
*
@@ -973,6 +973,9 @@ int GMT_dimfilter (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
gmt_set_cartesian (GMT, GMT_OUT); /* No coordinates here */
/* Check the crucial condition to run the program*/
@@ -1017,7 +1020,7 @@ int GMT_dimfilter (void *V_API, int mode, void *args) {
out[2] = (Ctrl->Q.err_cols) ? err_sum / Ctrl->Q.err_cols : 0.0;
/* print out the results */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
GMT_Report (API, GMT_MSG_DEBUG, "line %d passed\n", err_l);
err_l++;
diff --git a/src/nearneighbor.c b/src/nearneighbor.c
index efb0f92..57e923f 100644
--- a/src/nearneighbor.c
+++ b/src/nearneighbor.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: nearneighbor.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: nearneighbor.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -352,7 +352,7 @@ int GMT_nearneighbor (void *V_API, int mode, void *args) {
do { /* Keep returning records until we reach EOF */
n_read++;
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all table and segment headers */
diff --git a/src/postscriptlight.c b/src/postscriptlight.c
index 75f995b..cf771a4 100644
--- a/src/postscriptlight.c
+++ b/src/postscriptlight.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: postscriptlight.c 16872 2016-07-27 21:36:11Z jluis $
+ * $Id: postscriptlight.c 17507 2017-01-31 23:21:54Z pwessel $
*
- * Copyright (c) 2009-2016 by P. Wessel and R. Scharroo
+ * Copyright (c) 2009-2017 by P. Wessel and R. Scharroo
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -65,7 +65,7 @@
* PSL_plotsymbol : Plots a geometric symbol and [optionally] fills it
* PSL_plottext : Plots textstring
* PSL_plottextbox : Draw a filled box around a textstring
- * PSL_plottextline : Place labels along paths (straigt or curved), set clip path, draw line
+ * PSL_plottextline : Place labels along paths (straight or curved), set clip path, draw line
* PSL_loadimage : Read image file of supported type
* PSL_command : Writes a given PostScript statement to the plot file
* PSL_comment : Writes a comment statement to the plot file
@@ -245,7 +245,7 @@ struct PSL_COLOR {
typedef struct
{
- int ncolors;
+ size_t ncolors;
unsigned char colors[PSL_MAX_COLORS][3];
} *psl_colormap_t;
@@ -256,7 +256,7 @@ typedef struct
} *psl_indexed_image_t;
typedef struct {
- int nbytes;
+ size_t nbytes;
int depth;
unsigned char *buffer;
} *psl_byte_stream_t;
@@ -299,7 +299,7 @@ static void *psl_memory (struct PSL_CTRL *PSL, void *prev_addr, size_t nelem, si
mem = (double)(nelem * size);
k = 0;
while (mem >= 1024.0 && k < 3) mem /= 1024.0, k++;
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Could not reallocate more memory [%.2f %s, %" PRIuS " items of %" PRIuS " bytes]\n",
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Could not reallocate more memory [%.2f %s, %" PRIuS " items of %" PRIuS " bytes]\n",
mem, m_unit[k], nelem, size);
return (NULL);
}
@@ -310,7 +310,7 @@ static void *psl_memory (struct PSL_CTRL *PSL, void *prev_addr, size_t nelem, si
mem = (double)(nelem * size);
k = 0;
while (mem >= 1024.0 && k < 3) mem /= 1024.0, k++;
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Could not allocate memory [%.2f %s, %" PRIuS " items of %" PRIuS " bytes]\n",
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Could not allocate memory [%.2f %s, %" PRIuS " items of %" PRIuS " bytes]\n",
mem, m_unit[k], nelem, size);
return (NULL);
}
@@ -320,10 +320,10 @@ static void *psl_memory (struct PSL_CTRL *PSL, void *prev_addr, size_t nelem, si
/* This one is NOT static since needed in psimage, at least for now */
-unsigned char *psl_gray_encode (struct PSL_CTRL *PSL, int *nbytes, unsigned char *input) {
+unsigned char *psl_gray_encode (struct PSL_CTRL *PSL, size_t *nbytes, unsigned char *input) {
/* Recode RGB stream as gray-scale stream */
- int in, out, nout;
+ size_t in, out, nout;
unsigned char *output = NULL;
nout = *nbytes / 3;
@@ -540,7 +540,7 @@ static void psl_set_reducedpath_arrays (struct PSL_CTRL *PSL, double *x, double
PSL_command (PSL, "] def\n");
PSL_comment (PSL, "Set array with number of points per line segments:\n");
psl_set_int_array (PSL, "path_n", new_n, npath);
- if (k > 100000) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: PSL array placed has %d items - may exceed gs_init.ps MaxOpStack setting\n", k);
+ if (k > 100000) PSL_message (PSL, PSL_MSG_VERBOSE, "Warning: PSL array placed has %d items - may exceed gs_init.ps MaxOpStack setting\n", k);
/* Free up temp arrays */
PSL_free (use);
@@ -654,10 +654,10 @@ static void psl_rgb_to_cmyk (double rgb[], double cmyk[]) {
}
}
-static unsigned char *psl_cmyk_encode (struct PSL_CTRL *PSL, int *nbytes, unsigned char *input) {
+static unsigned char *psl_cmyk_encode (struct PSL_CTRL *PSL, size_t *nbytes, unsigned char *input) {
/* Recode RGB stream as CMYK stream */
- int in, out, nout;
+ size_t in, out, nout;
unsigned char *output = NULL;
nout = *nbytes / 3 * 4;
@@ -845,16 +845,16 @@ static void psl_rle_decode (struct PSL_CTRL *PSL, struct imageinfo *h, unsigned
}
}
- if (i != len) PSL_message (PSL, PSL_MSG_FATAL, "Warning: psl_rle_decode has wrong # of outbytes (%d versus expected %d)\n", i, len);
+ if (i != len) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: psl_rle_decode has wrong # of outbytes (%d versus expected %d)\n", i, len);
PSL_free (*in);
*in = out;
}
-static unsigned char *psl_rle_encode (struct PSL_CTRL *PSL, int *nbytes, unsigned char *input) {
+static unsigned char *psl_rle_encode (struct PSL_CTRL *PSL, size_t *nbytes, unsigned char *input) {
/* Run Length Encode a buffer of nbytes. */
- int count = 0, out = 0, in = 0, i;
+ size_t count = 0, out = 0, in = 0, i;
unsigned char pixel, *output = NULL;
i = MAX (512, *nbytes) + 136; /* Maximum output length */
@@ -883,13 +883,13 @@ static unsigned char *psl_rle_encode (struct PSL_CTRL *PSL, int *nbytes, unsigne
/* Drop the compression when end result is bigger than original */
if (out > in) {
- PSL_message (PSL, PSL_MSG_NORMAL, "RLE inflated %d to %d bytes. No compression done.\n", in, out);
+ PSL_message (PSL, PSL_MSG_LONG_VERBOSE, "RLE inflated %d to %d bytes. No compression done.\n", in, out);
PSL_free (output);
return (NULL);
}
/* Return number of output bytes and output buffer */
- PSL_message (PSL, PSL_MSG_NORMAL, "RLE compressed %d to %d bytes (%.1f%% savings)\n", in, out, 100.0f*(1.0f-(float)out/in));
+ PSL_message (PSL, PSL_MSG_LONG_VERBOSE, "RLE compressed %d to %d bytes (%.1f%% savings)\n", in, out, 100.0f*(1.0f-(float)out/in));
*nbytes = out;
return (output);
}
@@ -917,18 +917,19 @@ static psl_byte_stream_t psl_lzw_putcode (psl_byte_stream_t stream, short int in
return (stream);
}
-static unsigned char *psl_lzw_encode (struct PSL_CTRL *PSL, int *nbytes, unsigned char *input) {
+static unsigned char *psl_lzw_encode (struct PSL_CTRL *PSL, size_t *nbytes, unsigned char *input) {
/* LZW compress a buffer of nbytes. */
static int ncode = 4096*256;
- int i, index, in = 0;
+ int i, index;
+ size_t in = 0;
static short int clear = 256, eod = 257;
short int table = 4095; /* Initial value forces clearing of table on first byte */
short int bmax = 0, pre, oldpre, ext, *code = NULL;
psl_byte_stream_t output;
unsigned char *buffer = NULL;
- i = MAX (512, *nbytes) + 8; /* Maximum output length */
+ i = (int)MAX (512, *nbytes) + 8; /* Maximum output length */
output = (psl_byte_stream_t)psl_memory (PSL, NULL, 1U, sizeof (*output));
output->buffer = PSL_memory (PSL, NULL, i, unsigned char);
code = PSL_memory (PSL, NULL, ncode, short int);
@@ -970,7 +971,7 @@ static unsigned char *psl_lzw_encode (struct PSL_CTRL *PSL, int *nbytes, unsigne
/* Drop the compression when end result is bigger than original */
if (output->nbytes > in) {
- PSL_message (PSL, PSL_MSG_NORMAL, "LZW inflated %d to %d bytes. No compression done.\n", in, output->nbytes);
+ PSL_message (PSL, PSL_MSG_LONG_VERBOSE, "LZW inflated %d to %d bytes. No compression done.\n", in, output->nbytes);
PSL_free (code);
PSL_free (output->buffer);
PSL_free (output);
@@ -978,7 +979,7 @@ static unsigned char *psl_lzw_encode (struct PSL_CTRL *PSL, int *nbytes, unsigne
}
/* Return number of output bytes and output buffer; release code table */
- PSL_message (PSL, PSL_MSG_NORMAL, "LZW compressed %d to %d bytes (%.1f%% savings)\n", in, output->nbytes, 100.0f*(1.0f-(float)output->nbytes/in));
+ PSL_message (PSL, PSL_MSG_LONG_VERBOSE, "LZW compressed %d to %d bytes (%.1f%% savings)\n", in, output->nbytes, 100.0f*(1.0f-(float)output->nbytes/in));
*nbytes = output->nbytes;
buffer = output->buffer;
PSL_free (code);
@@ -986,11 +987,11 @@ static unsigned char *psl_lzw_encode (struct PSL_CTRL *PSL, int *nbytes, unsigne
return (buffer);
}
-static unsigned char *psl_deflate_encode (struct PSL_CTRL *PSL, int *nbytes, unsigned char *input) {
+static unsigned char *psl_deflate_encode (struct PSL_CTRL *PSL, size_t *nbytes, unsigned char *input) {
/* DEFLATE a buffer of nbytes using ZLIB. */
#ifdef HAVE_ZLIB
- const unsigned int ilen = *nbytes;
- unsigned int olen = *nbytes - 1; /* Output buffer is 1 smaller than input */
+ const size_t ilen = *nbytes;
+ size_t olen = *nbytes - 1; /* Output buffer is 1 smaller than input */
unsigned char *output;
int level = PSL->internal.deflate_level == 0 ? Z_DEFAULT_COMPRESSION : PSL->internal.deflate_level; /* Compression level */
int zstatus;
@@ -1007,30 +1008,30 @@ static unsigned char *psl_deflate_encode (struct PSL_CTRL *PSL, int *nbytes, uns
output = PSL_memory (PSL, NULL, olen, unsigned char); /* Allocate output buffer */
- strm.avail_in = ilen; /* number of bytes in input buffer */
- strm.next_in = input; /* input buffer */
- strm.avail_out = olen; /* number of bytes available in output buffer */
- strm.next_out = output; /* output buffer */
+ strm.avail_in = (int)ilen; /* number of bytes in input buffer */
+ strm.next_in = input; /* input buffer */
+ strm.avail_out = (int)olen; /* number of bytes available in output buffer */
+ strm.next_out = output; /* output buffer */
zstatus = deflate (&strm, Z_FINISH); /* deflate whole chunk */
deflateEnd (&strm); /* deallocate zlib memory */
if (zstatus != Z_STREAM_END) {
/* "compressed" size is larger or other failure */
- PSL_message (PSL, PSL_MSG_NORMAL, "Warning: no deflate compression done.\n");
+ PSL_message (PSL, PSL_MSG_VERBOSE, "Warning: no deflate compression done.\n");
PSL_free (output);
return NULL;
}
/* Return number of output bytes and output buffer */
olen = olen - strm.avail_out; /* initial size - size left */
- PSL_message (PSL, PSL_MSG_NORMAL, "DEFLATE compressed %u to %u bytes (%.1f%% savings at compression level %d)\n", ilen, olen, 100.0f*(1.0f-(float)olen/ilen), level == Z_DEFAULT_COMPRESSION ? 6 : level);
+ PSL_message (PSL, PSL_MSG_LONG_VERBOSE, "DEFLATE compressed %" PRIu64 " to %" PRIu64 " bytes (%.1f%% savings at compression level %d)\n", ilen, olen, 100.0f*(1.0f-(float)olen/ilen), level == Z_DEFAULT_COMPRESSION ? 6 : level);
*nbytes = olen;
return output;
#else /* HAVE_ZLIB */
/* ZLIB not available */
- PSL_message (PSL, PSL_MSG_NORMAL, "Cannot DEFLATE because ZLIB is not available.\n");
+ PSL_message (PSL, PSL_MSG_VERBOSE, "Cannot DEFLATE because ZLIB is not available.\n");
return NULL;
#endif /* HAVE_ZLIB */
}
@@ -1045,14 +1046,14 @@ static void psl_stream_dump (struct PSL_CTRL *PSL, unsigned char *buffer, int nx
* encode = ascii85 (0) or hex (1)
* mask = image (0), imagemask (1), or neither (2)
*/
- int nbytes, i;
+ size_t nbytes, i;
unsigned line_length = 0;
unsigned char *buffer1 = NULL, *buffer2 = NULL;
const char *kind_compress[] = {"", "/RunLengthDecode filter", "/LZWDecode filter", "/FlateDecode filter"};
const char *kind_mask[] = {"image", "imagemask"};
nx = abs (nx);
- nbytes = ((int)nbits * (int)nx + 7) / (int)8 * (int)ny;
+ nbytes = ((size_t)nbits * (size_t)nx + 7) / (size_t)8 * (size_t)ny;
/* Transform RGB stream to CMYK or Gray stream */
if (PSL->internal.color_mode == PSL_CMYK && nbits == 24)
@@ -1114,7 +1115,7 @@ static int psl_encodefont (struct PSL_CTRL *PSL, int font_no) {
if (PSL->init.encoding == NULL) return (PSL_NO_ERROR); /* Already have StandardEncoding by default */
if (PSL->internal.font[font_no].encoded) return (PSL_NO_ERROR); /* Already reencoded or should not be reencoded ever */
- /* Reencode fonts with Standard+ or ISOLatin1[+] encodings */
+ /* Re-encode fonts with Standard+ or ISOLatin1[+] encodings */
PSL_command (PSL, "PSL_font_encode %d get 0 eq {%s_Encoding /%s /%s PSL_reencode PSL_font_encode %d 1 put} if", font_no, PSL->init.encoding, PSL->internal.font[font_no].name, PSL->internal.font[font_no].name, font_no);
(PSL->internal.comments) ? PSL_command (PSL, "\t%% Set this font\n") : PSL_command (PSL, "\n");
PSL->internal.font[font_no].encoded = true;
@@ -1366,7 +1367,7 @@ static void psl_bulkcopy (struct PSL_CTRL *PSL, const char *fname) {
psl_getsharepath (PSL, "postscriptlight", fname, ".ps", fullname);
if ((in = fopen (fullname, "r")) == NULL) {
- PSL_message (PSL, PSL_MSG_FATAL, "Fatal Error: ");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Fatal Error: ");
perror (fullname);
PSL_exit (EXIT_FAILURE);
}
@@ -1690,13 +1691,13 @@ static int psl_paragraphprocess (struct PSL_CTRL *PSL, double y, double fontsize
} /* End of word loop */
- if (sub_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Sub-scripting not terminated [%s]\n", paragraph);
- if (super_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Super-scripting not terminated [%s]\n", paragraph);
- if (scaps_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Small-caps not terminated [%s]\n", paragraph);
- if (symbol_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Symbol font change not terminated [%s]\n", paragraph);
- if (size_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Font-size change not terminated [%s]\n", paragraph);
- if (color_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Font-color change not terminated [%s]\n", paragraph);
- if (under_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Text underline not terminated [%s]\n", paragraph);
+ if (sub_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Sub-scripting not terminated [%s]\n", paragraph);
+ if (super_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Super-scripting not terminated [%s]\n", paragraph);
+ if (scaps_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Small-caps not terminated [%s]\n", paragraph);
+ if (symbol_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Symbol font change not terminated [%s]\n", paragraph);
+ if (size_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Font-size change not terminated [%s]\n", paragraph);
+ if (color_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Font-color change not terminated [%s]\n", paragraph);
+ if (under_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Text underline not terminated [%s]\n", paragraph);
PSL_free (text); /* Reclaim this memory */
n_alloc_txt = k; /* Number of items in word array that might have text allocations */
@@ -1927,7 +1928,7 @@ static int psl_matharc (struct PSL_CTRL *PSL, double x, double y, double param[]
if (heads & (i+1)) tangle[i] += off[i]; /* Change arc angle by headlength or half-circle arc */
}
side[PSL_BEGIN] = -side[PSL_BEGIN]; /* Because of it was initially implemented */
- /* rshift kicks in when we want a half-arrow head. In that case we dont want it to be
+ /* rshift kicks in when we want a half-arrow head. In that case we don't want it to be
* exactly half since the vector line will then stick out 1/2 line thickness. So we adjust
* for this half-thickness by adding/subtracting from the radius accordingly, using r2,
* but only if the two heads agree. */
@@ -2071,7 +2072,7 @@ static int psl_pattern_init (struct PSL_CTRL *PSL, int image_no, char *imagefile
#define FIN_SLANT_COS 0.707106781187 /* I.e., 45 degrees slant */
#define FIN_LENGTH_SCALE 0.66666667 /* 2/3 the length of the vector */
-#define FIN_HEIGTH_SCALE 0.5 /* 1/2 the width of the vector */
+#define FIN_HEIGHT_SCALE 0.5 /* 1/2 the width of the vector */
static int psl_vector (struct PSL_CTRL *PSL, double x, double y, double param[]) {
/* Will make sure that arrow has a finite width in PS coordinates.
@@ -2195,13 +2196,13 @@ static int psl_vector (struct PSL_CTRL *PSL, double x, double y, double param[])
case PSL_VEC_TAIL:
xx[0] = xp + tailwidth + off[PSL_BEGIN]; yy[0] = -yshift[PSL_BEGIN]; n = 1; /* Vector tip */
if (asymmetry[PSL_BEGIN] != +1) { /* Need left side */
- xx[n] = xp + tailwidth - FIN_SLANT_COS * headwidth + off[PSL_BEGIN]; yy[n++] = -FIN_HEIGTH_SCALE * headwidth;
- xx[n] = xx[n-1] - FIN_LENGTH_SCALE * headlength; yy[n++] = -FIN_HEIGTH_SCALE * headwidth;
+ xx[n] = xp + tailwidth - FIN_SLANT_COS * headwidth + off[PSL_BEGIN]; yy[n++] = -FIN_HEIGHT_SCALE * headwidth;
+ xx[n] = xx[n-1] - FIN_LENGTH_SCALE * headlength; yy[n++] = -FIN_HEIGHT_SCALE * headwidth;
}
xx[n] = xp + tailwidth - FIN_LENGTH_SCALE * headlength + off[PSL_BEGIN]; yy[n++] = -yshift[PSL_BEGIN];
if (asymmetry[PSL_BEGIN] != -1) { /* Need right side */
- xx[n] = xp + tailwidth - FIN_SLANT_COS * headwidth - FIN_LENGTH_SCALE * headlength + off[PSL_BEGIN]; yy[n++] = FIN_HEIGTH_SCALE * headwidth;
- xx[n] = xx[n-1] + FIN_LENGTH_SCALE * headlength; yy[n++] = FIN_HEIGTH_SCALE * headwidth;
+ xx[n] = xp + tailwidth - FIN_SLANT_COS * headwidth - FIN_LENGTH_SCALE * headlength + off[PSL_BEGIN]; yy[n++] = FIN_HEIGHT_SCALE * headwidth;
+ xx[n] = xx[n-1] + FIN_LENGTH_SCALE * headlength; yy[n++] = FIN_HEIGHT_SCALE * headwidth;
}
PSL_plotline (PSL, xx, yy, n, PSL_MOVE); /* Set up path */
PSL_command (PSL, "P clip %s %s ", dump[fill], line[outline]);
@@ -2306,13 +2307,13 @@ static int psl_vector (struct PSL_CTRL *PSL, double x, double y, double param[])
case PSL_VEC_TAIL:
xx[0] = xp - tailwidth - off[PSL_BEGIN]; yy[0] = -yshift[PSL_END]; n = 1; /* Vector tip */
if (asymmetry[PSL_END] != +1) { /* Need left side */
- xx[n] = xp - tailwidth + FIN_SLANT_COS * headwidth - off[PSL_BEGIN]; yy[n++] = -FIN_HEIGTH_SCALE * headwidth;
- xx[n] = xx[n-1] + FIN_LENGTH_SCALE * headlength; yy[n++] = -FIN_HEIGTH_SCALE * headwidth;
+ xx[n] = xp - tailwidth + FIN_SLANT_COS * headwidth - off[PSL_BEGIN]; yy[n++] = -FIN_HEIGHT_SCALE * headwidth;
+ xx[n] = xx[n-1] + FIN_LENGTH_SCALE * headlength; yy[n++] = -FIN_HEIGHT_SCALE * headwidth;
}
xx[n] = xp - tailwidth + FIN_LENGTH_SCALE * headlength - off[PSL_BEGIN]; yy[n++] = -yshift[PSL_END];
if (asymmetry[PSL_END] != -1) { /* Need right side */
- xx[n] = xp - tailwidth + FIN_SLANT_COS * headwidth + FIN_LENGTH_SCALE * headlength - off[PSL_BEGIN]; yy[n++] = FIN_HEIGTH_SCALE * headwidth;
- xx[n] = xx[n-1] - FIN_LENGTH_SCALE * headlength; yy[n++] = FIN_HEIGTH_SCALE * headwidth;
+ xx[n] = xp - tailwidth + FIN_SLANT_COS * headwidth + FIN_LENGTH_SCALE * headlength - off[PSL_BEGIN]; yy[n++] = FIN_HEIGHT_SCALE * headwidth;
+ xx[n] = xx[n-1] - FIN_LENGTH_SCALE * headlength; yy[n++] = FIN_HEIGHT_SCALE * headwidth;
}
PSL_plotline (PSL, xx, yy, n, PSL_MOVE); /* Set up path */
PSL_command (PSL, "P clip %s %s ", dump[fill], line[outline]);
@@ -2450,7 +2451,7 @@ static void psl_def_font_encoding (struct PSL_CTRL *PSL) {
for (i = 0; i < PSL->internal.N_FONTS; i++) PSL_command (PSL, "/F%d {/%s Y}!\n", i, PSL->internal.font[i].name);
}
-static int psl_bitreduce (struct PSL_CTRL *PSL, unsigned char *buffer, int nx, int ny, int ncolors) {
+static int psl_bitreduce (struct PSL_CTRL *PSL, unsigned char *buffer, int nx, int ny, size_t ncolors) {
/* Reduce an 8-bit stream to 1-, 2- or 4-bit stream */
int in, out, i, j, nout, nbits;
@@ -2491,7 +2492,7 @@ static int psl_bitreduce (struct PSL_CTRL *PSL, unsigned char *buffer, int nx, i
}
}
- PSL_message (PSL, PSL_MSG_NORMAL, "Image depth reduced to %d bits\n", nbits);
+ PSL_message (PSL, PSL_MSG_VERBOSE, "Image depth reduced to %d bits\n", nbits);
return (nbits);
}
@@ -2568,7 +2569,7 @@ static int psl_read_rasheader (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo
for (i = i0; i <= i1; i++) {
if (fread (&value, sizeof (int32_t), 1, fp) != 1) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Failure reading rasterfile header\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Failure reading rasterfile header\n");
return (-1);
}
#ifndef WORDS_BIGENDIAN
@@ -2621,16 +2622,16 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
unsigned char *buffer = NULL, *entry = NULL, *red = NULL, *green = NULL, *blue = NULL;
if (psl_read_rasheader (PSL, fp, header, 0, 7)) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading Sun rasterfile header!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading Sun rasterfile header!\n");
return (PSL_READ_FAILURE);
}
if (header->magic != RAS_MAGIC) { /* Not a Sun rasterfile */
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Raster is not a Sun rasterfile (Magic # = 0x%x)!\n", header->magic);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Raster is not a Sun rasterfile (Magic # = 0x%x)!\n", header->magic);
return (PSL_READ_FAILURE);
}
if (header->type < RT_OLD || header->type > RT_FORMAT_RGB) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Can only read Sun rasterfiles types %d - %d (your type = %d)!\n", RT_OLD, RT_FORMAT_RGB, header->type);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Can only read Sun rasterfiles types %d - %d (your type = %d)!\n", RT_OLD, RT_FORMAT_RGB, header->type);
return (PSL_READ_FAILURE);
}
@@ -2640,7 +2641,7 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
ny = header->height;
buffer = PSL_memory (PSL, NULL, header->length, unsigned char);
if (fread (buffer, 1U, (size_t)header->length, fp) != (size_t)header->length) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading 1-bit Sun rasterfile!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading 1-bit Sun rasterfile!\n");
Return (PSL_READ_FAILURE);
}
if (header->type == RT_BYTE_ENCODED) psl_rle_decode (PSL, header, &buffer);
@@ -2662,13 +2663,13 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
n += (int)fread (green, 1U, (size_t)get, fp);
n += (int)fread (blue, 1U, (size_t)get, fp);
if (n != header->maplength) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading colormap!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading colormap!\n");
Return (PSL_READ_FAILURE);
}
odd = (int)header->width%2;
entry = PSL_memory (PSL, NULL, header->length, unsigned char);
if (fread (entry, 1U, (size_t)header->length, fp) != (size_t)header->length) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading 8-bit Sun rasterfile!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading 8-bit Sun rasterfile!\n");
Return (PSL_READ_FAILURE);
}
if (header->type == RT_BYTE_ENCODED) psl_rle_decode (PSL, header, &entry);
@@ -2687,7 +2688,7 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
else if (header->depth == 8U) { /* 8-bit without color table (implicit grayramp) */
buffer = PSL_memory (PSL, NULL, header->length, unsigned char);
if (fread (buffer, 1U, (size_t)header->length, fp) != (size_t)header->length) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading 8-bit Sun rasterfile!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading 8-bit Sun rasterfile!\n");
Return (PSL_READ_FAILURE);
}
if (header->type == RT_BYTE_ENCODED) psl_rle_decode (PSL, header, &buffer);
@@ -2703,12 +2704,12 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
n += (int)fread (green, 1U, (size_t)get, fp);
n += (int)fread (blue, 1U, (size_t)get, fp);
if ((size_t)n != (size_t)header->maplength) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading colormap!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading colormap!\n");
Return (PSL_READ_FAILURE);
}
buffer = PSL_memory (PSL, NULL, header->length, unsigned char);
if (fread (buffer, 1U, (size_t)header->length, fp) != (size_t)header->length) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading 24-bit Sun rasterfile!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading 24-bit Sun rasterfile!\n");
Return (PSL_READ_FAILURE);
}
if (header->type == RT_BYTE_ENCODED) psl_rle_decode (PSL, header, &buffer);
@@ -2729,7 +2730,7 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
unsigned char r, b;
buffer = PSL_memory (PSL, NULL, header->length, unsigned char);
if (fread (buffer, 1U, (size_t)header->length, fp) != (size_t)header->length) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading 24-bit Sun rasterfile!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading 24-bit Sun rasterfile!\n");
Return (PSL_READ_FAILURE);
}
if (header->type == RT_BYTE_ENCODED) psl_rle_decode (PSL, header, &buffer);
@@ -2757,12 +2758,12 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
n += (int)fread (green, 1U, (size_t)get, fp);
n += (int)fread (blue, 1U, (size_t)get, fp);
if ((size_t)n != (size_t)header->maplength) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading colormap!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading colormap!\n");
Return (PSL_READ_FAILURE);
}
buffer = PSL_memory (PSL, NULL, header->length, unsigned char);
if (fread (buffer, 1U, (size_t)header->length, fp) != (size_t)header->length) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading 32-bit Sun rasterfile!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading 32-bit Sun rasterfile!\n");
Return (PSL_READ_FAILURE);
}
if (header->type == RT_BYTE_ENCODED) psl_rle_decode (PSL, header, &buffer);
@@ -2783,7 +2784,7 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
unsigned char b;
buffer = PSL_memory (PSL, NULL, header->length, unsigned char);
if (fread (buffer, 1U, (size_t)header->length, fp) != (size_t)header->length) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading 32-bit Sun rasterfile!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading 32-bit Sun rasterfile!\n");
Return (PSL_READ_FAILURE);
}
if (header->type == RT_BYTE_ENCODED) psl_rle_decode (PSL, header, &buffer);
@@ -2801,7 +2802,7 @@ static int psl_load_raster (struct PSL_CTRL *PSL, FILE *fp, struct imageinfo *he
header->depth = 24;
}
else { /* Unrecognized format */
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Unrecognized file format!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Unrecognized file format!\n");
Return (PSL_READ_FAILURE);
}
@@ -2849,7 +2850,7 @@ static int psl_get_boundingbox (struct PSL_CTRL *PSL, FILE *fp, int *llx, int *l
}
}
- PSL_message (PSL, PSL_MSG_NORMAL, "Warning: No proper BoundingBox, defaults assumed: %d %d %d %d\n", *llx, *lly, *trx, *try);
+ PSL_message (PSL, PSL_MSG_VERBOSE, "Warning: No proper BoundingBox, defaults assumed: %d %d %d %d\n", *llx, *lly, *trx, *try);
return 1;
}
@@ -2906,7 +2907,7 @@ static void psl_init_fonts (struct PSL_CTRL *PSL) {
psl_getsharepath (PSL, "postscriptlight", "PSL_standard_fonts", ".txt", fullname);
if ((in = fopen (fullname, "r")) == NULL) {
- PSL_message (PSL, PSL_MSG_FATAL, "Fatal Error: ");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Fatal Error: ");
perror (fullname);
PSL_exit (EXIT_FAILURE);
}
@@ -2916,7 +2917,7 @@ static void psl_init_fonts (struct PSL_CTRL *PSL) {
while (fgets (buf, PSL_BUFSIZ, in)) {
if (buf[0] == '#' || buf[0] == '\n' || buf[0] == '\r') continue;
if (sscanf (buf, "%s %lf %d", fullname, &PSL->internal.font[i].height, &PSL->internal.font[i].encoded) != 3) {
- PSL_message (PSL, PSL_MSG_FATAL, "Fatal Error: Trouble decoding font info for font %d\n", i);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Fatal Error: Trouble decoding font info for font %d\n", i);
PSL_exit (EXIT_FAILURE);
}
PSL->internal.font[i].name = PSL_memory (PSL, NULL, strlen (fullname)+1, char);
@@ -2937,7 +2938,7 @@ static void psl_init_fonts (struct PSL_CTRL *PSL) {
if ((in = fopen (fullname, "r")) == NULL)
{
- PSL_message (PSL, PSL_MSG_FATAL, "Fatal Error: ");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Fatal Error: ");
perror (fullname);
PSL_exit (EXIT_FAILURE);
}
@@ -2946,7 +2947,7 @@ static void psl_init_fonts (struct PSL_CTRL *PSL) {
if (buf[0] == '#' || buf[0] == '\n' || buf[0] == '\r') continue;
PSL->internal.font[i].name = PSL_memory (PSL, NULL, strlen (buf), char);
if (sscanf (buf, "%s %lf %d", PSL->internal.font[i].name, &PSL->internal.font[i].height, &PSL->internal.font[i].encoded) != 3) {
- PSL_message (PSL, PSL_MSG_FATAL, "Fatal Error: Trouble decoding custom font info for font %d\n", i - n_PSL_fonts);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Fatal Error: Trouble decoding custom font info for font %d\n", i - n_PSL_fonts);
PSL_exit (EXIT_FAILURE);
}
i++;
@@ -3047,13 +3048,13 @@ static psl_indexed_image_t psl_makecolormap (struct PSL_CTRL *PSL, unsigned char
* It is important that the first RGB tuple is mapped to index 0.
* This is used for color masked images.
*/
- int i, j, npixels;
+ size_t i, j, npixels; /* Need 64-bit ints to avoid overflow of int */
psl_colormap_t colormap;
psl_indexed_image_t image;
if (abs (nbits) != 24) return (NULL); /* We only index into the RGB colorspace. */
- npixels = abs (nx) * ny;
+ npixels = ((size_t)abs (nx)) * ((size_t)ny);
colormap = psl_memory (PSL, NULL, 1U, sizeof (*colormap));
colormap->ncolors = 0;
@@ -3082,7 +3083,7 @@ static psl_indexed_image_t psl_makecolormap (struct PSL_CTRL *PSL, unsigned char
PSL_free (image->buffer);
PSL_free (image);
PSL_free (colormap);
- PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Too many colors to make colormap - using 24-bit direct color instead.\n");
+ PSL_message (PSL, PSL_MSG_LONG_VERBOSE, "Warning: Too many colors to make colormap - using 24-bit direct color instead.\n");
return (NULL);
}
image->buffer[i] = (unsigned char)j;
@@ -3100,11 +3101,11 @@ static psl_indexed_image_t psl_makecolormap (struct PSL_CTRL *PSL, unsigned char
PSL_free (image->buffer);
PSL_free (image);
PSL_free (colormap);
- PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Use of colormap is inefficient - using 24-bit direct color instead.\n");
+ PSL_message (PSL, PSL_MSG_VERBOSE, "Warning: Use of colormap is inefficient - using 24-bit direct color instead.\n");
return (NULL);
}
- PSL_message (PSL, PSL_MSG_NORMAL, "Colormap of %d colors created\n", colormap->ncolors);
+ PSL_message (PSL, PSL_MSG_VERBOSE, "Colormap of %" PRIu64 " colors created\n", colormap->ncolors);
return (image);
}
@@ -3197,7 +3198,7 @@ int PSL_beginsession (struct PSL_CTRL *PSL, unsigned int flags, char *sharedir,
if (PSL->init.err == NULL) PSL->init.err = stderr; /* Possible redirect of error messages */
if (PSL->init.unit < 0 || PSL->init.unit > 3) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Measure unit %d is not in valid range (0-3)! Using 0 (cm)\n", PSL->init.unit);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Measure unit %d is not in valid range (0-3)! Using 0 (cm)\n", PSL->init.unit);
PSL->init.unit = PSL_CM;
}
if (PSL->init.copies == 0) PSL->init.copies = 1; /* Once copy of each plot */
@@ -3213,12 +3214,12 @@ int PSL_beginsession (struct PSL_CTRL *PSL, unsigned int flags, char *sharedir,
PSL->internal.SHAREDIR = strdup (this_c);
gmt_dos_path_fix (PSL->internal.SHAREDIR);
if (access(PSL->internal.SHAREDIR, R_OK)) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Could not access PSL_SHAREDIR %s.\n", PSL->internal.SHAREDIR);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Could not access PSL_SHAREDIR %s.\n", PSL->internal.SHAREDIR);
PSL_exit (EXIT_FAILURE);
}
}
else { /* No sharedir found */
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Could not locate PSL_SHAREDIR.\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Could not locate PSL_SHAREDIR.\n");
PSL_exit (EXIT_FAILURE);
}
@@ -3229,7 +3230,7 @@ int PSL_beginsession (struct PSL_CTRL *PSL, unsigned int flags, char *sharedir,
PSL->internal.USERDIR = strdup (this_c);
gmt_dos_path_fix (PSL->internal.USERDIR);
if (access (PSL->internal.USERDIR, R_OK)) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Could not access PSL_USERDIR %s.\n", PSL->internal.USERDIR);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Could not access PSL_USERDIR %s.\n", PSL->internal.USERDIR);
PSL_free (PSL->internal.USERDIR);
}
}
@@ -3299,7 +3300,7 @@ int PSL_plotaxis (struct PSL_CTRL *PSL, double annotation_int, char *label, doub
val0 = MIN(PSL->internal.axis_limit[k], PSL->internal.axis_limit[k+1]);
val1 = MAX(PSL->internal.axis_limit[k], PSL->internal.axis_limit[k+1]);
if ((val1 - val0) == 0.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Axis val0 == val1!\n");
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Axis val0 == val1!\n");
return (PSL_BAD_RANGE);
}
reverse = (PSL->internal.axis_limit[k] > PSL->internal.axis_limit[k+1]);
@@ -3485,8 +3486,8 @@ int PSL_plotcolorimage (struct PSL_CTRL *PSL, double x, double y, double xsize,
nbits = psl_bitreduce (PSL, image->buffer, nx, ny, image->colormap->ncolors);
PSL_comment (PSL, "Start of indexed %s image [%d bit]\n", colorspace[id], nbits);
- PSL_command (PSL, "V N %d %d T %d %d scale [/Indexed /Device%s %d <\n", psl_ix(PSL, x), psl_iy(PSL, y), psl_iz (PSL, xsize), psl_iz (PSL, ysize), colorspace[id], image->colormap->ncolors - 1);
- psl_stream_dump (PSL, &image->colormap->colors[0][0], image->colormap->ncolors, 1, 24, 0, PSL_HEX, 2);
+ PSL_command (PSL, "V N %d %d T %d %d scale [/Indexed /Device%s %" PRIu64 " <\n", psl_ix(PSL, x), psl_iy(PSL, y), psl_iz (PSL, xsize), psl_iz (PSL, ysize), colorspace[id], image->colormap->ncolors - 1);
+ psl_stream_dump (PSL, &image->colormap->colors[0][0], (int)image->colormap->ncolors, 1, 24, 0, PSL_HEX, 2);
PSL_command (PSL, ">] setcolorspace\n<< /ImageType %s /Decode [0 %d] ", type[it], (1<<nbits)-1);
psl_stream_dump (PSL, image->buffer, nx, ny, nbits, PSL->internal.compress, PSL_ASCII85, 0);
PSL_command (PSL, "U\n");
@@ -3595,7 +3596,7 @@ int PSL_plotsymbol (struct PSL_CTRL *PSL, double x, double y, double size[], int
PSL_command (PSL, "%d %g %g %d %d Sw\n", psl_iz (PSL, size[0]), size[1], size[2], psl_ix (PSL, x), psl_iy (PSL, y));
#endif
break;
- case PSL_MARC: /* An arc with optional arrows. size[0] = radius, size[1..2] = azimuth range of arc, size[3] = shape, size[4] = arrows (0 = none, 1 = backward, 2 = foreward, 3 = both) */
+ case PSL_MARC: /* An arc with optional arrows. size[0] = radius, size[1..2] = azimuth range of arc, size[3] = shape, size[4] = arrows (0 = none, 1 = backward, 2 = forward, 3 = both) */
psl_matharc (PSL, x, y, size);
break;
case PSL_ELLIPSE: /* An ellipse. size[0] = angle of major axis, size[1..2] = length of major and minor axis */
@@ -3615,7 +3616,7 @@ int PSL_plotsymbol (struct PSL_CTRL *PSL, double x, double y, double size[], int
break;
default:
status = PSL_BAD_SYMBOL;
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Unknown symbol code %c\n", (int)symbol);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Unknown symbol code %c\n", (int)symbol);
break;
}
return (status);
@@ -3639,7 +3640,7 @@ int PSL_settransparencymode (struct PSL_CTRL *PSL, const char *mode) {
if (!mode || !mode[0]) return (PSL_NO_ERROR); /* Quietly returned if not given an argument */
for (k = ok = 0; !ok && k < N_PDF_TRANSPARENCY_MODES; k++)
if (!strcmp (PDF_transparency_modes[k], mode)) ok = 1;
- if (!ok) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Unknown PDF transparency mode %s - ignored\n", mode);
+ if (!ok) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Unknown PDF transparency mode %s - ignored\n", mode);
strncpy (PSL->current.transparency_mode, mode, 15U); /* Keep one character for null terminator */
return (PSL_NO_ERROR);
@@ -4267,7 +4268,7 @@ int PSL_setdash (struct PSL_CTRL *PSL, char *style, double offset) {
int PSL_setfont (struct PSL_CTRL *PSL, int font_no) {
if (font_no == PSL->current.font_no) return (PSL_NO_ERROR); /* Already set */
if (font_no < 0 || font_no >= PSL->internal.N_FONTS) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Selected font (%d) out of range (0-%d); reset to 0\n", font_no, PSL->internal.N_FONTS-1);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Selected font (%d) out of range (0-%d); reset to 0\n", font_no, PSL->internal.N_FONTS-1);
font_no = 0;
}
PSL->current.font_no = font_no;
@@ -4281,25 +4282,25 @@ int PSL_setfont (struct PSL_CTRL *PSL, int font_no) {
int PSL_setfontdims (struct PSL_CTRL *PSL, double supsub, double scaps, double sup_lc, double sup_uc, double sdown) {
/* Adjust settings of sub/super/small caps attributes */
if (supsub <= 0.0 || supsub >= 1.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Size of sub/super-script (%g) exceed allowable range, reset to %^g\n", supsub, PSL_SUBSUP_SIZE);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Size of sub/super-script (%g) exceed allowable range, reset to %^g\n", supsub, PSL_SUBSUP_SIZE);
supsub = PSL_SUBSUP_SIZE;
}
if (scaps <= 0.0 || scaps >= 1.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Size of small caps text (%g) exceed allowable range, reset to %^g\n", scaps, PSL_SCAPS_SIZE);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Size of small caps text (%g) exceed allowable range, reset to %^g\n", scaps, PSL_SCAPS_SIZE);
scaps = PSL_SUBSUP_SIZE;
}
if (sup_lc <= 0.0 || sup_lc >= 1.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Amount of baseline shift for lower-case super-scripts (%g) exceed allowable range, reset to %^g\n",
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Amount of baseline shift for lower-case super-scripts (%g) exceed allowable range, reset to %^g\n",
sup_lc, PSL_SUP_UP_LC);
sup_lc = PSL_SUBSUP_SIZE;
}
if (sup_uc <= 0.0 || sup_uc >= 1.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Amount of baseline shift for upper-case super-scripts (%g) exceed allowable range, reset to %^g\n",
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Amount of baseline shift for upper-case super-scripts (%g) exceed allowable range, reset to %^g\n",
sup_uc, PSL_SUP_UP_UC);
sup_uc = PSL_SUBSUP_SIZE;
}
if (sdown <= 0.0 || sdown >= 1.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Amount of baseline shift for sub-scripts (%g) exceed allowable range, reset to %^g\n",
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Amount of baseline shift for sub-scripts (%g) exceed allowable range, reset to %^g\n",
sdown, PSL_SUB_DOWN);
sdown = PSL_SUBSUP_SIZE;
}
@@ -4315,7 +4316,7 @@ int PSL_setfontdims (struct PSL_CTRL *PSL, double supsub, double scaps, double s
int PSL_setformat (struct PSL_CTRL *PSL, int n_decimals) {
/* Sets nmber of decimals used for rgb/gray specifications [3] */
if (n_decimals < 1 || n_decimals > 3)
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Selected decimals for color out of range (%d), ignored\n", n_decimals);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Selected decimals for color out of range (%d), ignored\n", n_decimals);
else {
sprintf (PSL->current.bw_format, "%%.%df A", n_decimals);
sprintf (PSL->current.rgb_format, "%%.%df %%.%df %%.%df C", n_decimals, n_decimals, n_decimals);
@@ -4327,7 +4328,7 @@ int PSL_setformat (struct PSL_CTRL *PSL, int n_decimals) {
int PSL_setlinewidth (struct PSL_CTRL *PSL, double linewidth) {
if (linewidth < 0.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Selected linewidth is negative (%g), ignored\n", linewidth);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Selected linewidth is negative (%g), ignored\n", linewidth);
return (PSL_BAD_WIDTH);
}
if (linewidth == PSL->current.linewidth) return (PSL_NO_ERROR);
@@ -4435,7 +4436,7 @@ int PSL_plottextbox (struct PSL_CTRL *PSL, double x, double y, double fontsize,
fontsize = fabs (fontsize);
if (strlen (text) >= (PSL_BUFSIZ-1)) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: text_item > %d long!\n", PSL_BUFSIZ);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: text_item > %d long!\n", PSL_BUFSIZ);
return (PSL_BAD_TEXT);
}
@@ -4504,7 +4505,7 @@ int PSL_deftextdim (struct PSL_CTRL *PSL, const char *dim, double fontsize, char
double orig_size, small_size, size, scap_size, ustep[2], dstep;
if (strlen (text) >= (PSL_BUFSIZ-1)) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: text_item > %d long!\n", PSL_BUFSIZ);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: text_item > %d long!\n", PSL_BUFSIZ);
return (PSL_BAD_TEXT);
}
@@ -4686,13 +4687,13 @@ int PSL_deftextdim (struct PSL_CTRL *PSL, const char *dim, double fontsize, char
PSL_free (piece2);
PSL_free (string);
- if (sub_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Sub-scripting not terminated [%s]\n", text);
- if (super_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Super-scripting not terminated [%s]\n", text);
- if (scaps_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Small-caps not terminated [%s]\n", text);
- if (symbol_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Symbol font change not terminated [%s]\n", text);
- if (size_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Font-size change not terminated [%s]\n", text);
- if (color_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Font-color change not terminated [%s]\n", text);
- if (under_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Text underline not terminated [%s]\n", text);
+ if (sub_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Sub-scripting not terminated [%s]\n", text);
+ if (super_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Super-scripting not terminated [%s]\n", text);
+ if (scaps_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Small-caps not terminated [%s]\n", text);
+ if (symbol_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Symbol font change not terminated [%s]\n", text);
+ if (size_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Font-size change not terminated [%s]\n", text);
+ if (color_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Font-color change not terminated [%s]\n", text);
+ if (under_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Text underline not terminated [%s]\n", text);
return (sub_on|super_on|scaps_on|symbol_on|font_on|size_on|color_on|under_on);
}
@@ -4754,7 +4755,7 @@ int PSL_plottext (struct PSL_CTRL *PSL, double x, double y, double fontsize, cha
if (text) {
if (strlen (text) >= (PSL_BUFSIZ-1)) { /* We gotta have some limit on how long a single string can be... */
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: text_item > %d long - text not plotted!\n", PSL_BUFSIZ);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: text_item > %d long - text not plotted!\n", PSL_BUFSIZ);
return (PSL_BAD_TEXT);
}
if (justify < 0) { /* Strip leading and trailing blanks */
@@ -4973,7 +4974,7 @@ int PSL_plottext (struct PSL_CTRL *PSL, double x, double y, double fontsize, cha
}
}
else { /* Got crap */
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Bad color change (%s) - ignored\n", ptr);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Bad color change (%s) - ignored\n", ptr);
error++;
}
@@ -5025,13 +5026,13 @@ int PSL_plottext (struct PSL_CTRL *PSL, double x, double y, double fontsize, cha
PSL_free (piece2);
PSL_free (string);
- if (sub_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Sub-scripting not terminated [%s]\n", text);
- if (super_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Super-scripting not terminated [%s]\n", text);
- if (scaps_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Small-caps not terminated [%s]\n", text);
- if (symbol_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Symbol font change not terminated [%s]\n", text);
- if (size_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Font-size change not terminated [%s]\n", text);
- if (color_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Font-color change not terminated [%s]\n", text);
- if (under_on) PSL_message (PSL, PSL_MSG_FATAL, "Warning: Text underline not terminated [%s]\n", text);
+ if (sub_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Sub-scripting not terminated [%s]\n", text);
+ if (super_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Super-scripting not terminated [%s]\n", text);
+ if (scaps_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Small-caps not terminated [%s]\n", text);
+ if (symbol_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Symbol font change not terminated [%s]\n", text);
+ if (size_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Font-size change not terminated [%s]\n", text);
+ if (color_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Font-color change not terminated [%s]\n", text);
+ if (under_on) PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Text underline not terminated [%s]\n", text);
return (sub_on|super_on|scaps_on|symbol_on|font_on|size_on|color_on|under_on);
}
@@ -5144,15 +5145,15 @@ int PSL_setparagraph (struct PSL_CTRL *PSL, double line_space, double par_width,
/* Initializes PSL parameters used to typeset paragraphs with PSL_plotparagraph */
if (par_just < PSL_BL || par_just > PSL_JUST) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Bad paragraph justification (%d)\n", par_just);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Bad paragraph justification (%d)\n", par_just);
return (PSL_BAD_JUST);
}
if (line_space <= 0.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Bad line spacing (%g)\n", line_space);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Bad line spacing (%g)\n", line_space);
return (PSL_BAD_VALUE);
}
if (par_width <= 0.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Bad paragraph width (%g)\n", par_width);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Bad paragraph width (%g)\n", par_width);
return (PSL_BAD_VALUE);
}
@@ -5169,11 +5170,11 @@ int PSL_plotparagraphbox (struct PSL_CTRL *PSL, double x, double y, double fonts
*/
int error = 0;
if (offset[0] < 0.0 || offset[1] < 0.0) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Bad paragraphbox text offset (%g/%g)\n", offset[0], offset[1]);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Bad paragraphbox text offset (%g/%g)\n", offset[0], offset[1]);
return (PSL_BAD_VALUE);
}
if (mode < PSL_RECT_STRAIGHT || mode > PSL_RECT_CONCAVE) {
- PSL_message (PSL, PSL_MSG_FATAL, "Warning: Bad paragraphbox mode (%d)\n", mode);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Warning: Bad paragraphbox mode (%d)\n", mode);
return (PSL_BAD_VALUE);
}
@@ -5267,7 +5268,7 @@ int PSL_plotparagraph (struct PSL_CTRL *PSL, double x, double y, double fontsize
if (fontsize == 0.0) return (PSL_NO_ERROR); /* Nothing to do if text has zero size */
- /* If paragraph is NULL then PSL_plotparagraphbox has been called so we dont need to write the paragraph info to the PS file */
+ /* If paragraph is NULL then PSL_plotparagraphbox has been called so we don't need to write the paragraph info to the PS file */
if (paragraph && (error = psl_paragraphprocess (PSL, y, fontsize, paragraph)) != PSL_NO_ERROR) return (error);
PSL_command (PSL, "V ");
@@ -5348,14 +5349,14 @@ int PSL_loadimage (struct PSL_CTRL *PSL, char *file, struct imageinfo *h, unsign
/* Open PostScript or Sun raster file */
if ((fp = fopen (file, "rb")) == NULL) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Cannot open image file %s!\n", file);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Cannot open image file %s!\n", file);
return (PSL_READ_FAILURE);
}
/* Read magic number to determine image type */
if (psl_read_rasheader (PSL, fp, h, 0, 0)) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading magic number of image file %s!\n", file);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading magic number of image file %s!\n", file);
Return1 (PSL_READ_FAILURE);
}
fseek (fp, (off_t)0, SEEK_SET);
@@ -5382,29 +5383,29 @@ int PSL_loadimage (struct PSL_CTRL *PSL, char *file, struct imageinfo *h, unsign
if (system (cmd)) { /* convert failed, try ImageMagic's "convert" */
sprintf (cmd, "convert %s %s 2> %s", file, tmp_file, null_dev);
if (system (cmd)) { /* convert failed, give up */
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Automatic conversion of file %s to Sun rasterfile failed\n", file);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Automatic conversion of file %s to Sun rasterfile failed\n", file);
remove (tmp_file); /* Remove the temp file */
return (PSL_READ_FAILURE);
}
}
if ((fp = fopen (tmp_file, "rb")) == NULL) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Cannot open image file %s!\n", tmp_file);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Cannot open image file %s!\n", tmp_file);
remove (tmp_file);
return (PSL_READ_FAILURE);
}
if (psl_read_rasheader (PSL, fp, h, 0, 0)) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Trouble reading magic number of image file %s!\n", tmp_file);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Trouble reading magic number of image file %s!\n", tmp_file);
Return2 (PSL_READ_FAILURE);
}
fseek (fp, (off_t)0, SEEK_SET);
if (h->magic != RAS_MAGIC) {
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Unrecognised magic number 0x%x in file %s!\n", h->magic, tmp_file);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Unrecognised magic number 0x%x in file %s!\n", h->magic, tmp_file);
Return2 (PSL_READ_FAILURE);
}
Return2 (psl_load_raster (PSL, fp, h, picture));
}
- PSL_message (PSL, PSL_MSG_FATAL, "Error: Unrecognised magic number 0x%x in file %s!\n", h->magic, file);
+ PSL_message (PSL, PSL_MSG_NORMAL, "Error: Unrecognised magic number 0x%x in file %s!\n", h->magic, file);
Return1 (PSL_READ_FAILURE);
}
diff --git a/src/postscriptlight.h b/src/postscriptlight.h
index 3629576..339c4b6 100644
--- a/src/postscriptlight.h
+++ b/src/postscriptlight.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: postscriptlight.h 16589 2016-06-21 01:06:47Z jluis $
+ * $Id: postscriptlight.h 17460 2017-01-22 22:55:48Z pwessel $
*
- * Copyright (c) 2009-2016 by P. Wessel and R. Scharroo
+ * Copyright (c) 2009-2017 by P. Wessel and R. Scharroo
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -198,11 +198,11 @@ enum PSL_enum_txt {PSL_TXT_INIT = 1,
/* Verbosity levels */
enum PSL_enum_verbose {PSL_MSG_QUIET = 0, /* No messages whatsoever */
- PSL_MSG_FATAL, /* Fatal errors */
+ PSL_MSG_NORMAL, /* Default output, e.g., warnings and errors only */
PSL_MSG_TICTOC, /* To print a tic-toc elapsed time message */
PSL_MSG_COMPAT, /* Compatibility warnings */
- PSL_MSG_NORMAL, /* Warnings level -V */
- PSL_MSG_VERBOSE, /* Longer verbose, -Vl in some programs */
+ PSL_MSG_VERBOSE, /* Warnings level -V */
+ PSL_MSG_LONG_VERBOSE, /* Longer verbose, -Vl in some programs */
PSL_MSG_DEBUG}; /* Debug messages for developers mostly */
/* Color spaces */
@@ -243,7 +243,7 @@ struct PSL_CTRL {
FILE *err; /* Error stream (NULL means stderr) */
char *encoding; /* The encoding name. e.g. ISO-8859-1 */
char *session; /* The session name (NULL) */
- int runmode; /* Nonzero if we are being called from a multi-module enviroment (0 for commandline) */
+ int runmode; /* Nonzero if we are being called from a multi-module environment (0 for commandline) */
int unit; /* 0 = cm, 1 = inch, 2 = meter */
int copies; /* Number of copies for this plot */
double page_rgb[4]; /* RGB color for background paper [white] */
@@ -274,7 +274,7 @@ struct PSL_CTRL {
struct INTERNAL { /* Variables used internally only */
char *SHAREDIR; /* Pointer to path of directory with postscriptlight subdirectory */
char *USERDIR; /* Pointer to path of directory with user definitions */
- char *buffer; /* Pointer to buffer where PS will be "writen" when memory == 1 */
+ char *buffer; /* Pointer to buffer where PS will be "written" when memory == 1 */
char *user_image[PSL_N_PATTERNS]; /* Name of user patterns */
char origin[2]; /* 'r', 'a', 'f', 'c' depending on reference for new origin x and y coordinate */
double offset[2]; /* Origin offset [1/1] */
@@ -313,8 +313,8 @@ struct PSL_CTRL {
struct PSL_FONT {
double height; /* Height of A for unit fontsize */
char *name; /* Name of this font */
- int encoded; /* true if we never should reencode this font (e.g. symbols) */
- /* This is also changed to true after we do reencode a font */
+ int encoded; /* true if we never should re-encode this font (e.g. symbols) */
+ /* This is also changed to true after we do re-encode a font */
} *font; /* Pointer to array of font structures */
struct PSL_PATTERN {
int nx, ny; /* Dimension of pattern image */
@@ -406,7 +406,7 @@ EXTERN_MSC int PSL_defcolor (struct PSL_CTRL *PSL, const char *param, double rgb
EXTERN_MSC int PSL_deftextdim (struct PSL_CTRL *PSL, const char *dim, double fontsize, char *text);
EXTERN_MSC int PSL_defunits (struct PSL_CTRL *PSL, const char *param, double value);
-EXTERN_MSC unsigned char *psl_gray_encode (struct PSL_CTRL *PSL, int *nbytes, unsigned char *input);
+EXTERN_MSC unsigned char *psl_gray_encode (struct PSL_CTRL *PSL, size_t *nbytes, unsigned char *input);
EXTERN_MSC void psl_set_txt_array (struct PSL_CTRL *PSL, const char *param, char *array[], int n);
EXTERN_MSC void psl_set_int_array (struct PSL_CTRL *PSL, const char *param, int *array, int n);
diff --git a/src/postscriptlight_f77.c b/src/postscriptlight_f77.c
index 33769a0..7383037 100644
--- a/src/postscriptlight_f77.c
+++ b/src/postscriptlight_f77.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: postscriptlight_f77.c 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: postscriptlight_f77.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 2009-2016 by P. Wessel and R. Scharroo
+ * Copyright (c) 2009-2017 by P. Wessel and R. Scharroo
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -57,7 +57,7 @@
* PSL_plotsymbol : Plots a geometric symbol and [optionally] fills it
* PSL_plottext : Plots textstring
* PSL_plottextbox : Draw a filled box around a textstring
- * PSL_plottextline : Place labels along paths (straigt or curved), set clip path, draw line
+ * PSL_plottextline : Place labels along paths (straight or curved), set clip path, draw line
* PSL_loadimage : Read image file of supported type
* PSL_command : Writes a given PostScript statement to the plot file
* PSL_comment : Writes a comment statement to the plot file
diff --git a/src/potential/CMakeLists.txt b/src/potential/CMakeLists.txt
index 987f98e..6d6b251 100644
--- a/src/potential/CMakeLists.txt
+++ b/src/potential/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/potential/gmtflexure.c b/src/potential/gmtflexure.c
index 80a2116..d426cce 100644
--- a/src/potential/gmtflexure.c
+++ b/src/potential/gmtflexure.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtflexure.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmtflexure.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -455,7 +455,7 @@ GMT_LOCAL int lu_solver (struct GMT_CTRL *GMT, double *a, int n, double *x, doub
* The equation is
* d2/dx2 (D * d2/dx2 w(x)) + T * d2/dx2 w(x) + k(x) * w(x) = p (x)
* Various boundary conditions may be imposed by setting the
- * variables bc_left and bc_right to on of the permissable values:
+ * variables bc_left and bc_right to on of the permissible values:
* 0: 'infinity' condition. w' = w'' = 0.
* 1: 'periodic'. w' = w''' = 0. (Reflection)
* 2: 'clamped'. w = const. w' = 0. The value of w must be
@@ -655,13 +655,13 @@ GMT_LOCAL int flx1d (struct GMT_CTRL *GMT, double *w, double *d, double *p, int
* a restoring force that depends on the sign of the deflection. After each
* iteration, we recompute k(x) so that k(x) = G * (rho_m - rho_infill (or rho_load)) where
* deflections are positive (i.e. down), whereas k(x) = G * (rho_m - rho_w)
- * at the bulges. We iterate untill rms of difference is < LIMIT (1 cm)
+ * at the bulges. We iterate until rms of difference is < LIMIT (1 cm)
* The equation we solve is
*
* d2/dx2 (D * d2/dx2 w(x)) + T * d2/dx2 w(x) + k(x) * w(x) = p (x)
*
* Various boundary conditions may be imposed by setting the
- * variables bc_left and bc_right to on of the permissable values:
+ * variables bc_left and bc_right to on of the permissible values:
* 0: 'infinity' condition. w' = w'' = 0.
* 1: 'periodic'. w' = w''' = 0. (Reflection)
* 2: 'clamped'. w = const. w' = 0. The value of w must be
@@ -764,7 +764,7 @@ GMT_LOCAL int flx1dk (struct GMT_CTRL *GMT, double w[], double d[], double p[],
* d2/dx2 (D * d2/dx2 w(x)) + T * d2/dx2 [w(x) + w0(x)] + k(x) * w(x) = p (x)
*
* Various boundary conditions may be imposed by setting the
- * variables bc_left and bc_right to on of the permissable values:
+ * variables bc_left and bc_right to on of the permissible values:
* 0: 'infinity' condition. w' = w'' = 0.
* 1: 'periodic'. w' = w''' = 0. (Reflection)
* 2: 'clamped'. w = const. w' = 0. The value of w must be
diff --git a/src/potential/gmtgravmag3d.c b/src/potential/gmtgravmag3d.c
index 7b276ed..eb7be81 100644
--- a/src/potential/gmtgravmag3d.c
+++ b/src/potential/gmtgravmag3d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtgravmag3d.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: gmtgravmag3d.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -286,6 +286,7 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct XYZOKB_CTRL *Ctrl, struct GMT_
else if (pch && pch[0] == '3') Ctrl->T.m_var3 = true;
else if (pch && pch[0] == '4') Ctrl->T.m_var4 = true;
else Ctrl->T.m_var1 = true;
+ Ctrl->T.xyz_file[strlen(Ctrl->T.xyz_file)-2] = '\0'; /* In any case the "+m" must go out of fname */
}
}
else if (opt->arg[0] == 'v') {
@@ -468,7 +469,7 @@ int GMT_gmtgravmag3d (void *V_API, int mode, void *args) {
ndata_t = retval;
t_center = gmt_M_memory (GMT, NULL, ndata_t, struct TRI_CENTER);
- /* compute aproximate center of each triangle */
+ /* compute approximate center of each triangle */
n_swap = check_triang_cw (ndata_t, 0);
set_center (ndata_t);
}
@@ -543,7 +544,7 @@ int GMT_gmtgravmag3d (void *V_API, int mode, void *args) {
body_desc.ind[14] = 0; body_desc.ind[15] = 2; body_desc.ind[16] = 5; body_desc.ind[17] = 3;
/* Actually, for the gravity case we can save lots of computations because the flux
- through the vertical walls does not contibute to gravity anomaly, which is vertical */
+ through the vertical walls does not contribute to gravity anomaly, which is vertical */
if (Ctrl->C.active)
body_desc.n_f = 2; /* Number of prism facets that count */
}
@@ -650,7 +651,7 @@ int GMT_gmtgravmag3d (void *V_API, int mode, void *args) {
j++;
}
km = (int)((Ctrl->T.m_var) ? i : 0); /* Variable magnetization (intensity) */
- pm = (int)((Ctrl->T.m_var4) ? i : 0); /* When al 5 paremeters (F, Mag) may be variable (undocumented) */
+ pm = (int)((Ctrl->T.m_var4) ? i : 0); /* When al 5 parameters (F, Mag) may be variable (undocumented) */
/* Don't waste time with zero mag triangles */
if (Ctrl->H.active && Ctrl->T.m_var && okabe_mag_var[i].rk[0] == 0 && okabe_mag_var[i].rk[1] == 0 && okabe_mag_var[i].rk[2] == 0)
@@ -727,13 +728,17 @@ int GMT_gmtgravmag3d (void *V_API, int mode, void *args) {
gmt_M_free (GMT, loc_or); gmt_M_free (GMT, y_obs); gmt_M_free (GMT, body_verts);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, loc_or); gmt_M_free (GMT, y_obs); gmt_M_free (GMT, body_verts);
+ Return (API->error);
+ }
strcpy (save, GMT->current.setting.format_float_out);
strcpy (GMT->current.setting.format_float_out, "%.9g"); /* Make sure we use enough decimals */
for (k = 0; k < ndata_p; k++) {
out[GMT_X] = point->segment[0]->data[GMT_X][k];
out[GMT_Y] = point->segment[0]->data[GMT_Y][k];
out[GMT_Z] = g[k];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
strcpy (GMT->current.setting.format_float_out, save);
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data input */
@@ -992,7 +997,7 @@ GMT_LOCAL int read_stl (struct GMT_CTRL *GMT, char *fname, double z_dir) {
/* -----------------------------------------------------------------*/
GMT_LOCAL int facet_triangulate (struct XYZOKB_CTRL *Ctrl, struct BODY_VERTS *body_verts, unsigned int i, bool bat) {
- /* Sets coodinates for the facet whose effect is beeing calculated */
+ /* Sets coordinates for the facet whose effect is being calculated */
double x_a, x_b, x_c, y_a, y_b, y_c, z_a, z_b, z_c;
gmt_M_unused (bat);
x_a = triang[vert[i].a].x; x_b = triang[vert[i].b].x; x_c = triang[vert[i].c].x;
@@ -1071,7 +1076,7 @@ GMT_LOCAL int facet_triangulate (struct XYZOKB_CTRL *Ctrl, struct BODY_VERTS *bo
/* -----------------------------------------------------------------*/
GMT_LOCAL int facet_raw (struct XYZOKB_CTRL *Ctrl, struct BODY_VERTS *body_verts, unsigned int i, bool geo) {
- /* Sets coodinates for the facet in the RAW format */
+ /* Sets coordinates for the facet in the RAW format */
double cos_a, cos_b, cos_c, x_a, x_b, x_c, y_a, y_b, y_c, z_a, z_b, z_c;
x_a = raw_mesh[i].t1[0]; x_b = raw_mesh[i].t2[0]; x_c = raw_mesh[i].t3[0];
@@ -1090,12 +1095,12 @@ GMT_LOCAL int facet_raw (struct XYZOKB_CTRL *Ctrl, struct BODY_VERTS *body_verts
body_verts[0].z = z_a;
body_verts[1].z = z_b;
body_verts[2].z = z_c;
- return 1; /* Allways return 1 */
+ return 1; /* Always return 1 */
}
/* ---------------------------------------------------------------------- */
GMT_LOCAL void set_center (unsigned int n_triang) {
- /* Calculates triangle center by an aproximate (iterative) formula */
+ /* Calculates triangle center by an approximate (iterative) formula */
unsigned int i, j, k = 5;
double x, y, z, xa[6], ya[6], xb[6], yb[6], xc[6], yc[6];
diff --git a/src/potential/gpsgridder.c b/src/potential/gpsgridder.c
index ccbdb65..321cb8e 100644
--- a/src/potential/gpsgridder.c
+++ b/src/potential/gpsgridder.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gpsgridder.c 17161 2016-10-03 18:52:32Z pwessel $
+ * $Id: gpsgridder.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -101,9 +101,9 @@ enum Gpsgridded_enum { /* Indices for coeff array for normalization */
GMT_WV = 3,
GPS_TREND = 1, /* Remove/Restore linear trend */
GPS_NORM = 2, /* Normalize residual data to 0-1 range */
- GPS_FUNC_Q = 0, /* Next 3 are indicies into G[] */
- GPS_FUNC_P = 1, /* Next 3 are indicies into G[] */
- GPS_FUNC_W = 2, /* Next 3 are indicies into G[] */
+ GPS_FUNC_Q = 0, /* Next 3 are indices into G[] */
+ GPS_FUNC_P = 1, /* Next 3 are indices into G[] */
+ GPS_FUNC_W = 2, /* Next 3 are indices into G[] */
};
GMT_LOCAL void *New_Ctrl (struct GMT_CTRL *GMT) { /* Allocate and initialize a new control structure */
@@ -523,7 +523,7 @@ int GMT_gpsgridder (void *V_API, int mode, void *args) {
/*---------------------------- This is the gpsgridder main code ----------------------------*/
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "gpsgridder IS NOT A WORKING MODULE YET!\n");
+ GMT_Report (GMT->parent, GMT_MSG_NORMAL, "gpsgridder is considered experimental - use at your own rist!\n");
gmt_enable_threads (GMT); /* Set number of active threads, if supported */
GMT_Report (API, GMT_MSG_VERBOSE, "Processing input table data\n");
@@ -569,7 +569,7 @@ int GMT_gpsgridder (void *V_API, int mode, void *args) {
n_uv = n_read = 0;
r_min = DBL_MAX; r_max = -DBL_MAX;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, X);
Return (GMT_RUNTIME_ERROR);
@@ -621,7 +621,7 @@ int GMT_gpsgridder (void *V_API, int mode, void *args) {
X[n_uv][GMT_WV] = 1.0 / X[n_uv][GMT_WV];
}
else /* Must unscramble sigmas */
- err_sum += pow (X[n_uv][GMT_WU], -1.0) + pow (X[n_uv][GMT_WV], -2.0);
+ err_sum += pow (X[n_uv][GMT_WU], -2.0) + pow (X[n_uv][GMT_WV], -2.0);
}
n_uv++; /* Added a new data constraint */
if (n_uv == n_alloc) { /* Get more memory */
@@ -747,23 +747,19 @@ int GMT_gpsgridder (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_VERBOSE, "Build linear system Ax = b\n");
weight_u = weight_v = 1.0;
- for (j = 0; j < n_uv; j++) { /* For each data constraint pair (u,v): j refers to a row */
+ for (row = 0; row < n_uv; row++) { /* For each data constraint pair (u,v)_row */
if (Ctrl->W.active) { /* Apply any weights */
- weight_u = X[j][GMT_WU];
- weight_v = X[j][GMT_WV];
- u[j] *= weight_u;
- v[j] *= weight_v;
+ weight_u = X[row][GMT_WU];
+ weight_v = X[row][GMT_WV];
+ u[row] *= weight_u;
+ v[row] *= weight_v;
}
- for (i = 0; i < n_uv; i++) { /* i refers to a column */
- if (Ctrl->W.active) {
- weight_u = X[i][GMT_WU];
- weight_v = X[i][GMT_WV];
- }
- Gu_ij = j * n_params + i; /* Index for Gu term */
- Guv_ij = Gu_ij + n_uv; /* Index for Guv term */
- Gvu_ij = (j+n_uv) * n_params + i; /* Index for Gvu term */
- Gv_ij = Gvu_ij + n_uv; /* Index for Gv term */
- get_gps_dxdy (GMT, X[i], X[j], &dx, &dy, geo);
+ for (col = 0; col < n_uv; col++) { /* For each data constraint pair (u,v)_col */
+ Gu_ij = row * n_params + col; /* Index for Gu term */
+ Guv_ij = Gu_ij + n_uv; /* Index for Guv term */
+ Gvu_ij = (row+n_uv) * n_params + col; /* Index for Gvu term */
+ Gv_ij = Gvu_ij + n_uv; /* Index for Gv term */
+ get_gps_dxdy (GMT, X[col], X[row], &dx, &dy, geo);
evaluate_greensfunctions (dx, dy, par, G);
A[Gu_ij] = weight_u * G[GPS_FUNC_Q];
A[Gv_ij] = weight_v * G[GPS_FUNC_P];
@@ -771,6 +767,19 @@ int GMT_gpsgridder (void *V_API, int mode, void *args) {
A[Gvu_ij] = weight_v * G[GPS_FUNC_W];
}
}
+#if 0 /* Dump the A | b matrices */
+ fprintf (stderr, "Weight | Matrix row | obs\n");
+ for (row = 0; row < n_params; row++) {
+ if (Ctrl->W.active)
+ fprintf (stderr, "%12.6f\t|\t", (row < n_uv) ? X[row][GMT_WU] : X[row-n_uv][GMT_WV]);
+ else
+ fprintf (stderr, "%12.6f\t|\t", 1.0);
+ ij = row * n_params;
+ fprintf (stderr, "%12.6f", A[ij++]);
+ for (col = 1; col < n_params; col++, ij++) fprintf (stderr, "\t%12.6f", A[ij]);
+ fprintf (stderr, "\t|\t%12.6f\n", (row < n_uv) ? u[row] : v[row-n_uv]);
+ }
+#endif
gmt_M_memcpy (&u[n_uv], v, n_uv, double); /* Place v array at end of u array */
obs = u; /* Use obs to refer to this combined u,v array */
@@ -829,7 +838,7 @@ int GMT_gpsgridder (void *V_API, int mode, void *args) {
if (Ctrl->C.mode == 2)
GMT_Report (API, GMT_MSG_VERBOSE, "Eigen-value ratios s(i)/s(0) saved to %s\n", Ctrl->C.file);
else
- GMT_Report (API, GMT_MSG_VERBOSE, "Eigen-values saved to %s\n", Ctrl->C.file);
+ GMT_Report (API, GMT_MSG_VERBOSE, "Eigen-values s(i) saved to %s\n", Ctrl->C.file);
gmt_M_free (GMT, eig);
if (Ctrl->C.value < 0.0) { /* We are done */
@@ -973,6 +982,9 @@ int GMT_gpsgridder (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if ((error = gmt_set_cols (GMT, GMT_OUT, 4)) != GMT_NOERROR) {
Return (error);
}
@@ -992,7 +1004,7 @@ int GMT_gpsgridder (void *V_API, int mode, void *args) {
out[GMT_V] += (alpha_y[p] * G[GPS_FUNC_P] + alpha_x[p] * G[GPS_FUNC_W]);
}
undo_gps_normalization (out, normalize, norm);
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
diff --git a/src/potential/gravfft.c b/src/potential/gravfft.c
index 8d292af..41178ff 100644
--- a/src/potential/gravfft.c
+++ b/src/potential/gravfft.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gravfft.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: gravfft.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -363,7 +363,7 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct GRAVFFT_CTRL *Ctrl, struct GMT
else
Ctrl->N.info->trend_mode = override_mode;
}
- if (!n_errors && Ctrl->N.info->trend_mode == GMT_FFT_REMOVE_NOT_SET) /* No explict detrending mode, so apply default */
+ if (!n_errors && Ctrl->N.info->trend_mode == GMT_FFT_REMOVE_NOT_SET) /* No explicit detrending mode, so apply default */
Ctrl->N.info->trend_mode = override_mode;
}
@@ -998,7 +998,7 @@ GMT_LOCAL int do_admittance (struct GMT_CTRL *GMT, struct GMT_GRID *GridA, struc
nused[ifreq]++;
}
- for (k = k_0; k < nk; k++) /* Coherence is allways needed for error bar computing */
+ for (k = k_0; k < nk; k++) /* Coherence is always needed for error bar computing */
coh[k] = (co_spec[k]*co_spec[k] + quad[k]*quad[k]) / (b_pow[k]*g_pow[k]);
for (k = k_0; k < nk; k++) {
@@ -1069,7 +1069,7 @@ Lfree:
GMT_LOCAL void compute_only_admitts(struct GMT_CTRL *GMT, struct GRAVFFT_CTRL *Ctrl, struct GMT_FFT_WAVENUMBER *K, double *z_top_or_bot, double delta_pt) {
- /* Calls the apropriate function to compute the theoretical admittance. */
+ /* Calls the appropriate function to compute the theoretical admittance. */
K->delta_kx = K->delta_ky = delta_pt;
K->nx2 = K->ny2 = Ctrl->C.n_pt * 2;
diff --git a/src/potential/grdflexure.c b/src/potential/grdflexure.c
index 1b96993..12b151e 100644
--- a/src/potential/grdflexure.c
+++ b/src/potential/grdflexure.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdflexure.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: grdflexure.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -245,9 +245,9 @@ unsigned int gmt_modeltime_array (struct GMT_CTRL *GMT, char *arg, bool *log, st
e_time = gmt_get_modeltime (B, &e_unit, &e_scale);
i_time = gmt_get_modeltime (C, &i_unit, &i_scale);
if (e_time > s_time) { /* Enforce that old time is larger */
- double_swap (s_time, e_time);
- double_swap (s_scale, e_scale);
- char_swap (s_unit, e_unit);
+ gmt_M_double_swap (s_time, e_time);
+ gmt_M_double_swap (s_scale, e_scale);
+ gmt_M_char_swap (s_unit, e_unit);
}
if (*log) { /* Equidistant spacing in log10(time). Here we got number of output points directly, compute log10 (increment) */
n_eval_times = urint (i_time);
@@ -891,7 +891,7 @@ int GMT_grdflexure (void *V_API, int mode, void *args) {
else /* With a single load -> flexure operation we can just recycle the input grid for the output */
Out = Load[0]->Grid;
- /* Here, Load[] contains all the input load grids and their laod times, ready to go as H(kx,ky) */
+ /* Here, Load[] contains all the input load grids and their load times, ready to go as H(kx,ky) */
if (Ctrl->L.active) { /* Must create a textset to hold names of all output grids */
uint64_t dim[3] = {1, 1, Ctrl->T.n_eval_times};
diff --git a/src/potential/grdgravmag3d.c b/src/potential/grdgravmag3d.c
index 37d036d..47f2e83 100644
--- a/src/potential/grdgravmag3d.c
+++ b/src/potential/grdgravmag3d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdgravmag3d.c 17121 2016-09-21 23:07:26Z jluis $
+ * $Id: grdgravmag3d.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -199,7 +199,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
if (level == GMT_SYNOPSIS) return (GMT_MODULE_SYNOPSIS);
GMT_Message (API, GMT_TIME_NONE, "\tgrdfile_top is the grdfile whose gravity effect is to be computed.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t If two grids are provided then the gravity/magnetic efect of the\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t If two grids are provided then the gravity/magnetic effect of the\n");
GMT_Message (API, GMT_TIME_NONE, "\t volume between them is computed\n\n");
GMT_Message (API, GMT_TIME_NONE, "\t-C Sets body density in SI.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-F Passes file with locations where anomaly is going to be computed.\n");
@@ -659,12 +659,6 @@ int GMT_grdgravmag3d (void *V_API, int mode, void *args) {
Return (GMT_RUNTIME_ERROR);
}
- if ((GridA->header->z_scale_factor != GridS->header->z_scale_factor) ||
- (GridA->header->z_add_offset != GridS->header->z_add_offset)) {
- GMT_Report(API, GMT_MSG_NORMAL, "Up surface and source grid scale/offset not compatible!\n");
- Return(GMT_RUNTIME_ERROR);
- }
-
if (fabs (GridA->header->inc[GMT_X] - GridS->header->inc[GMT_X]) > 1.0e-6 ||
fabs(GridA->header->inc[GMT_Y] - GridS->header->inc[GMT_Y]) > 1.0e-6) {
GMT_Report(API, GMT_MSG_NORMAL, "Up surface and source grid increments do not match!\n");
@@ -974,12 +968,14 @@ L1:
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) /* Enables data output and sets access mode */
Return (API->error);
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) /* Sets output geometry */
+ Return (API->error);
for (k = 0; k < ndata; k++) {
out[GMT_X] = point->segment[0]->data[GMT_X][k];
out[GMT_Y] = point->segment[0]->data[GMT_Y][k];
out[GMT_Z] = g[k];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) /* Disables further data input */
@@ -1071,7 +1067,7 @@ GMT_LOCAL int grdgravmag3d_body_desc_prism(struct GMT_CTRL *GMT, struct GRDOKB_C
body_desc->ind = gmt_M_memory (GMT, NULL, body_desc->n_v[0], unsigned int);
if (*body_verts == NULL) *body_verts = gmt_M_memory (GMT, NULL, 2, struct BODY_VERTS);
- body_desc->ind[0] = 0; body_desc->ind[1] = 1; /* NOT USED REALY AREN'T THEY? */
+ body_desc->ind[0] = 0; body_desc->ind[1] = 1; /* NOT USED REALLY AREN'T THEY? */
return(0);
}
@@ -1207,7 +1203,7 @@ GMT_LOCAL void grdgravmag3d_calc_surf_ (struct THREAD_STRUCT *t) {
d_func[2] = bhatta;
indf = (Ctrl->H.pirtt) ? 1 + Ctrl->H.bhatta : 0;
- rho_or_mag = (Ctrl->C.active) ? Ctrl->C.rho : Ctrl->H.m_int; /* What are we computing? (But it may be overriden below) */
+ rho_or_mag = (Ctrl->C.active) ? Ctrl->C.rho : Ctrl->H.m_int; /* What are we computing? (But it may be overridden below) */
/* For Bhattacharya, select which component */
pm = (Ctrl->H.f_tot) ? 0 : ((Ctrl->H.x_comp) ? 1 : ((Ctrl->H.y_comp) ? 2 : ((Ctrl->H.z_comp) ? 3 : ((Ctrl->H.h_comp) ? 4 : 0)) ));
diff --git a/src/potential/grdredpol.c b/src/potential/grdredpol.c
index 93ad84b..55d7bb5 100644
--- a/src/potential/grdredpol.c
+++ b/src/potential/grdredpol.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdredpol.c 17121 2016-09-21 23:07:26Z jluis $
+ * $Id: grdredpol.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/potential/grdseamount.c b/src/potential/grdseamount.c
index 7f6260c..d550271 100644
--- a/src/potential/grdseamount.c
+++ b/src/potential/grdseamount.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdseamount.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: grdseamount.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -485,7 +485,7 @@ GMT_LOCAL int parse_the_record (struct GMT_CTRL *GMT, struct GRDSEAMOUNT_CTRL *C
}
if (Ctrl->T.active && in[n_expected-2] < in[n_expected-1])
- double_swap (in[n_expected-2], in[n_expected-1]); /* Ensure start time is always larger */
+ gmt_M_double_swap (in[n_expected-2], in[n_expected-1]); /* Ensure start time is always larger */
return 0; /* OK */
}
@@ -661,7 +661,7 @@ int GMT_grdseamount (void *V_API, int mode, void *args) {
out[col++] = area;
out[col++] = volume;
out[col++] = height;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
GMT_Report (API, GMT_MSG_VERBOSE, "Seamount %" PRIu64 " area, volume, mean height: %g %g %g\n", n_smts, area, volume, height);
}
diff --git a/src/potential/okbfuns.c b/src/potential/okbfuns.c
index 4967e9e..695cf64 100644
--- a/src/potential/okbfuns.c
+++ b/src/potential/okbfuns.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: okbfuns.c 16594 2016-06-21 19:05:47Z jluis $
+ * $Id: okbfuns.c 17543 2017-02-09 14:14:29Z jluis $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -60,15 +60,13 @@ double okabe (struct GMT_CTRL *GMT, double x_o, double y_o, double z_o, double r
|_______________________________________________________________|
_____________________________________________________________________
| |
- | Ifac decrit le corps (ATTN : Integer*2) : |
- | - Il y a Nff facettes qui sont decrites dans le sens des |
- | aiguilles d'une montre si on regarde le corps de |
- | l'exterieur. Mxsomf = Max de sommets / face |
- | - Le premier nombre indique le nombre de factettes. Suivent |
- | alors des groupes de nombres dont le premier de chaque |
- | groupe est le nombre de sommets de la facette, suivi par |
- | les indices (pointeurs) des sommets (rang dans Xx,Yy,Zz) |
- | correspondant a la facette. |
+ | Ifac describes the body (ATTN : Integer*2) : |
+ | - There are Nff facets that are described clockwise when seen |
+ | from outside. Mxsomf = Max corners / facet |
+ | - First number indicates the number of facets. Than follow |
+ | groups of numbers, the first of each group is the number |
+ | of vertices of the facet, followed by the indices (pointers) |
+ | vertices (stored in Xx, Yy, Zz) corresponding to the facet. |
| |
| Par exemple pour un cube _________________ |
| (Nff=6; 4 sommets /face) /| X (Nord) |
@@ -111,7 +109,7 @@ double okabe (struct GMT_CTRL *GMT, double x_o, double y_o, double z_o, double r
/* ---------------------------------------------------------------------- */
GMT_LOCAL void rot_17 (unsigned int n_vert, bool top, struct LOC_OR *loc_or,
double *c_tet, double *s_tet, double *c_phi, double *s_phi) {
- /* Rotates coordinates by teta and phi acording to equation (17) of Okabe */
+ /* Rotates coordinates by teta and phi according to equation (17) of Okabe */
/* store the result in external structure loc_or and angles c_tet s_tet c_phi s_phi */
double xi, xj, xk, yi, yj, yk, zi, zj, zk, v, x, y, z;
double r, r2, r_3d, Sxy, Szx, Syz;
diff --git a/src/potential/okbfuns.h b/src/potential/okbfuns.h
index 2d14d2d..551c11f 100644
--- a/src/potential/okbfuns.h
+++ b/src/potential/okbfuns.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: okbfuns.h 15819 2016-03-06 20:54:48Z pwessel $
+ * $Id: okbfuns.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/potential/talwani2d.c b/src/potential/talwani2d.c
index 5c2b91e..0ea528c 100644
--- a/src/potential/talwani2d.c
+++ b/src/potential/talwani2d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: talwani2d.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: talwani2d.c 17580 2017-02-23 06:35:24Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -29,12 +29,14 @@
*
* Chapman, M. E. (1979), Techniques for interpretation of geoid
* anomalies, J. Geophys. Res., 84(B8), 3793–3801.
+ * Kim, S.-S., and P. Wessel, New analytic solutions for modeling
+ * vertical gravity gradient anomalies, Geochem. Geophys. Geosyst.,
+ * 17, 2016, doi:10.1002/2016GC006263. [for VGG]
* Rasmussen, R., and L. B. Pedersen (1979), End corrections in
* potential field modeling, Geophys. Prospect., 27, 749–760.
* Talwani, M., J. L. Worzel, and M. Landisman (1959), Rapid gravity
* computations for two-dimensional bodies with application to
* the Mendocino submarine fracture zone, J. Geophys. Res., 64, 49–59.
- * Kim, S.-S., and P. Wessel, 2015, in prep.
*
* Accelerated with OpenMP; see -x.
*/
@@ -584,14 +586,14 @@ int GMT_talwani2d (void *V_API, int mode, void *args) {
for (row = 0; row < dim[GMT_ROW]; row++) S->data[GMT_X][row] = (row == (S->n_rows-1)) ? Ctrl->T.max: Ctrl->T.min + row * Ctrl->T.inc;
}
else { /* Got a dataset with output locations */
- geometry = GMT_IS_PLP; /* We dont really know */
+ geometry = GMT_IS_PLP; /* We don't really know */
gmt_disable_i_opt (GMT); /* Do not want any -i to affect the reading from -C,-F,-L files */
if ((Out = GMT_Read_Data (API, GMT_IS_DATASET, GMT_IS_FILE, GMT_IS_PLP, GMT_READ_NORMAL, NULL, Ctrl->N.file, NULL)) == NULL) {
Return (API->error);
}
- if (Out->n_columns < 2) {
- GMT_Report (API, GMT_MSG_NORMAL, "Input file %s has %d column(s) but at least 2 are needed\n", Ctrl->N.file, (int)Out->n_columns);
- Return (GMT_DIM_TOO_SMALL);
+ if (Out->n_columns < 2) { /* Only got x, must allocate output space for prediction in the 2nd column */
+ gmt_adjust_dataset (GMT, Out, 2U);
+ geometry = GMT_IS_LINE; /* Since we are making from scratch */
}
gmt_reenable_i_opt (GMT); /* Recover settings provided by user (if -i was used at all) */
}
@@ -620,7 +622,7 @@ int GMT_talwani2d (void *V_API, int mode, void *args) {
/* Read the sliced model */
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, body);
Return (GMT_RUNTIME_ERROR);
@@ -672,6 +674,24 @@ int GMT_talwani2d (void *V_API, int mode, void *args) {
dup_node = n;
}
else {
+ if (first) { /* Had no header record at all */
+ if (!Ctrl->D.active) {
+ GMT_Report (API, GMT_MSG_VERBOSE, "Found no segment header and -D not set - must quit\n");
+ gmt_M_free (GMT, body);
+ Return (API->error);
+ }
+ first = false;
+ if (Ctrl->D.active) rho = Ctrl->D.rho;
+ /* Allocate array for this body */
+ n_alloc = GMT_CHUNK;
+ x = gmt_M_memory (GMT, NULL, n_alloc, double);
+ z = gmt_M_memory (GMT, NULL, n_alloc, double);
+ n = 0;
+ if (n_bodies == n_alloc1) {
+ n_alloc1 <<= 1;
+ body = gmt_M_memory (GMT, body, n_alloc1, struct BODY2D);
+ }
+ }
x[n] = in[GMT_X]; z[n] = in[GMT_Y];
if (Ctrl->M.active[TALWANI2D_HOR]) x[n] *= METERS_IN_A_KM; /* Change distances to m */
if (Ctrl->M.active[TALWANI2D_VER]) z[n] *= METERS_IN_A_KM; /* Change distances to m */
diff --git a/src/potential/talwani3d.c b/src/potential/talwani3d.c
index 95960ee..5beeba6 100644
--- a/src/potential/talwani3d.c
+++ b/src/potential/talwani3d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: talwani3d.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: talwani3d.c 17580 2017-02-23 06:35:24Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -32,10 +32,12 @@
*
* Based on methods by
*
+ * Kim, S.-S., and P. Wessel, New analytic solutions for modeling
+ * vertical gravity gradient anomalies, Geochem. Geophys. Geosyst.,
+ * 17, 2016, doi:10.1002/2016GC006263. [for VGG and geoid]
* M. Talwani and M. Ewing, Rapid Computation of gravitational
* attraction of three-dimensional bodies of arbitrary shape,
* Geophysics, 25, 203-225, 1960. [for gravity]
- * Kim, S.-S. and P. Wessel, 2015, in prep. [for VGG and geoid]
*
* Accelerated with OpenMP; see -x.
*/
@@ -43,7 +45,7 @@
#define THIS_MODULE_NAME "talwani3d"
#define THIS_MODULE_LIB "potential"
#define THIS_MODULE_PURPOSE "Compute geopotential anomalies over 3-D bodies by the method of Talwani"
-#define THIS_MODULE_KEYS "<D{,ND(,ZG(,GG),G-<,>D}"
+#define THIS_MODULE_KEYS "<D{,ND(,ZG(,G?},GDN"
#include "gmt_dev.h"
@@ -214,12 +216,13 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct TALWANI3D_CTRL *Ctrl, struct G
break;
}
}
- if (GMT->common.R.active && Ctrl->I.active)
- gmt_check_lattice (GMT, Ctrl->I.inc, &GMT->common.r.registration, &Ctrl->I.active);
+ if (GMT->common.R.active) {
+ gmt_check_lattice (GMT, Ctrl->I.inc, &GMT->common.r.registration, &Ctrl->I.active); /* If -R<grdfile> was given we may get incs unless -I was used */
+ n_errors += gmt_M_check_condition (GMT, !Ctrl->I.active,
+ "Syntax error -R option: Must specify both -R and -I (and optionally -r)\n");
+ }
n_errors += gmt_M_check_condition (GMT, (GMT->common.R.active && Ctrl->I.active) && Ctrl->Z.mode == 1,
"Syntax error -Z option: Cannot also specify -R -I\n");
- n_errors += gmt_M_check_condition (GMT, (GMT->common.R.active + Ctrl->I.active) == 1,
- "Syntax error -R option: Must specify both -R and -I (and optionally -r)\n");
n_errors += gmt_M_check_condition (GMT, !Ctrl->N.active && !Ctrl->G.active,
"Syntax error -G option: Must specify output gridfile name.\n");
n_errors += gmt_M_check_condition (GMT, Ctrl->G.active && !Ctrl->G.file,
@@ -247,7 +250,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t f = Free-air anomalies (mGal) [Default].\n");
GMT_Message (API, GMT_TIME_NONE, "\t n = Geoid anomalies (meter).\n");
GMT_Message (API, GMT_TIME_NONE, "\t v = Vertical Gravity Gradient anomalies (VGG; 1 Eovtos = 0.1 mGal/km).\n");
- GMT_Message (API, GMT_TIME_NONE, "\t-G Set output grid file name (i.e., when -N is not specified).\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-G Output data. Give name of output file.\n");
GMT_Option (API, "I");
GMT_Message (API, GMT_TIME_NONE, "\t-M Set units used, as follows:\n");
GMT_Message (API, GMT_TIME_NONE, "\t -Mh indicates all x/y-distances are in km [meters]\n");
@@ -757,7 +760,7 @@ int GMT_talwani3d (void *V_API, int mode, void *args) {
/* Read the sliced model */
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, cake);
Return (GMT_RUNTIME_ERROR);
@@ -822,6 +825,12 @@ int GMT_talwani3d (void *V_API, int mode, void *args) {
continue;
}
}
+ if (first_slice) { /* Did not have the recquired header record */
+ GMT_Report (API, GMT_MSG_VERBOSE, "No segment header with depth [and optional densithy contrast] - must quit\n");
+ gmt_M_free (GMT, cake);
+ Return (API->error);
+ }
+
/* Clean data record to process */
if (n && (x[n-1] == x[n] && y[n-1] == y[n])) { /* Maybe a duplicate point - or it could be the repeated last = first */
@@ -864,7 +873,7 @@ int GMT_talwani3d (void *V_API, int mode, void *args) {
if (n_duplicate) GMT_Report (API, GMT_MSG_VERBOSE, "Ignored %u duplicate vertices\n", n_duplicate);
if (Ctrl->Z.mode == 1) { /* Got grid with observation levels which also sets output locations */
- if (GMT_Read_Data (API, GMT_IS_GRID, GMT_IS_FILE, GMT_IS_SURFACE, GMT_GRID_ALL, NULL, Ctrl->Z.file, G) == NULL) {
+ if ((G = GMT_Read_Data (API, GMT_IS_GRID, GMT_IS_FILE, GMT_IS_SURFACE, GMT_GRID_ALL, NULL, Ctrl->Z.file, NULL)) == NULL) {
gmt_M_free (GMT, cake);
Return (API->error);
}
@@ -876,7 +885,7 @@ int GMT_talwani3d (void *V_API, int mode, void *args) {
Return (API->error);
}
}
- else { /* Got a dataset with output locations */
+ else { /* Got a dataset with output locations via -N */
gmt_disable_i_opt (GMT); /* Do not want any -i to affect the reading from -C,-F,-L files */
if ((D = GMT_Read_Data (API, GMT_IS_DATASET, GMT_IS_FILE, GMT_IS_POINT, GMT_READ_NORMAL, NULL, Ctrl->N.file, NULL)) == NULL) {
gmt_M_free (GMT, cake);
@@ -909,13 +918,21 @@ int GMT_talwani3d (void *V_API, int mode, void *args) {
depths = gmt_M_memory (GMT, NULL, ndepths, double);
for (k = 0; k < ndepths; k++) depths[k] = cake[k].depth; /* Used by the parabolic integrator */
if (Ctrl->N.active) { /* Single loop over specified output locations */
+ unsigned int wmode = GMT_ADD_DEFAULT;
double scl = (!(flat_earth || Ctrl->M.active[TALWANI3D_HOR])) ? METERS_IN_A_MILE : 1.0; /* Perhaps convert to km */
double out[4];
+ /* Must register Ctrl->G.file first since we are going to writing rec-by-rec */
+ if (Ctrl->G.active) {
+ int out_ID;
+ if ((out_ID = GMT_Register_IO (API, GMT_IS_DATASET, GMT_IS_FILE, GMT_IS_POINT, GMT_OUT, NULL, Ctrl->G.file)) == GMT_NOTSET)
+ Return (API->error);
+ wmode = GMT_ADD_EXISTING;
+ }
if ((error = gmt_set_cols (GMT, GMT_OUT, 4)) != GMT_NOERROR) {
gmt_M_free (GMT, depths);
Return (error);
}
- if (GMT_Init_IO (API, GMT_IS_DATASET, GMT_IS_POINT, GMT_OUT, GMT_ADD_DEFAULT, 0, options) != GMT_NOERROR) { /* Registers default output destination, unless already set */
+ if (GMT_Init_IO (API, GMT_IS_DATASET, GMT_IS_POINT, GMT_OUT, wmode, 0, options) != GMT_NOERROR) { /* Registers default output destination, unless already set */
gmt_M_free (GMT, depths);
Return (API->error);
}
@@ -923,6 +940,10 @@ int GMT_talwani3d (void *V_API, int mode, void *args) {
gmt_M_free (GMT, depths);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, depths);
+ Return (API->error);
+ }
if (D->n_segments > 1) gmt_set_segmentheader (GMT, GMT_OUT, true);
for (tbl = 0; tbl < D->n_tables; tbl++) {
for (seg = 0; seg < D->table[tbl]->n_segments; seg++) {
@@ -947,7 +968,7 @@ int GMT_talwani3d (void *V_API, int mode, void *args) {
out[GMT_Y] = S->data[GMT_Y][row];
if (S->n_columns == 3 && !Ctrl->Z.active) out[GMT_Z] = S->data[GMT_Z][row];
out[3] = GMT->hidden.mem_coord[GMT_X][row];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
}
}
diff --git a/src/project.c b/src/project.c
index 6080ccb..c6cd3e9 100644
--- a/src/project.c
+++ b/src/project.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: project.c 16811 2016-07-15 23:02:04Z pwessel $
+ * $Id: project.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -57,7 +57,7 @@ struct PROJECT_CTRL { /* All control options for this program (except common arg
} F;
struct G { /* -G<inc>[/<colat>][+] */
bool active;
- bool header;
+ unsigned int header;
unsigned int mode;
double inc;
double colat;
@@ -462,8 +462,8 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct PROJECT_CTRL *Ctrl, struct GMT
case 'G':
Ctrl->G.active = true;
len = strlen (opt->arg) - 1;
- if (len > 0 && opt->arg[len] == '+') {
- Ctrl->G.header = true; /* Wish to place a segment header on output */
+ if (len > 0 && opt->arg[len] == '+') { /* Old-style + only */
+ Ctrl->G.header = len; /* Wish to place a segment header on output */
opt->arg[len] = 0; /* Temporarily remove the trailing + sign */
}
if (sscanf (opt->arg, "%[^/]/%s", txt_a, txt_b) == 2) { /* Got dist/colat */
@@ -473,7 +473,7 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct PROJECT_CTRL *Ctrl, struct GMT
}
else
Ctrl->G.inc = atof (opt->arg);
- if (Ctrl->G.header) opt->arg[len] = '+'; /* Restore it */
+ if (Ctrl->G.header) opt->arg[Ctrl->G.header] = '+'; /* Restore the plus-sign */
break;
case 'L':
Ctrl->L.active = true;
@@ -613,7 +613,7 @@ GMT_LOCAL int write_one_segment (struct GMT_CTRL *GMT, struct PROJECT_CTRL *Ctrl
else
out[k++] = p_data[rec].a[P->output_choice[col]];
}
- GMT_Put_Record (GMT->parent, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (GMT->parent, GMT_WRITE_DATA, out); /* Write this to output */
}
}
gmt_M_free (GMT, out);
@@ -900,6 +900,9 @@ int GMT_project (void *V_API, int mode, void *args) {
Return (API->error);
}
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_LINE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
for (rec = 0; rec < P.n_used; rec++) {
gmt_M_free (GMT, p_data[rec].t); gmt_M_free (GMT, p_data[rec].z);
}
@@ -916,7 +919,7 @@ int GMT_project (void *V_API, int mode, void *args) {
}
for (rec = 0; rec < P.n_used; rec++) {
for (col = 0; col < P.n_outputs; col++) out[col] = p_data[rec].a[P.output_choice[col]];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
else { /* Must read input file */
@@ -939,7 +942,7 @@ int GMT_project (void *V_API, int mode, void *args) {
}
pure_ascii = gmt_is_ascii_record (GMT, options);
- rmode = (pure_ascii && gmt_get_cols (GMT, GMT_IN) >= 2) ? GMT_READ_MIXED : GMT_READ_DOUBLE;
+ rmode = (pure_ascii && gmt_get_cols (GMT, GMT_IN) >= 2) ? GMT_READ_MIXED : GMT_READ_DATA;
family = (pure_ascii) ? GMT_IS_TEXTSET : GMT_IS_DATASET;
geometry = (pure_ascii) ? GMT_IS_NONE : GMT_IS_POINT;
@@ -952,6 +955,9 @@ int GMT_project (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, family, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
do { /* Keep returning records until we reach EOF */
if ((in = GMT_Get_Record (API, rmode, NULL)) == NULL) { /* Read next record, get NULL if special case */
diff --git a/src/psbasemap.c b/src/psbasemap.c
index de831f5..83aca9c 100644
--- a/src/psbasemap.c
+++ b/src/psbasemap.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psbasemap.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: psbasemap.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -215,8 +215,8 @@ int GMT_psbasemap (void *V_API, int mode, void *args) {
int error;
struct PSBASEMAP_CTRL *Ctrl = NULL; /* Control structure specific to program */
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMT_OPTION *options = NULL;
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
diff --git a/src/psclip.c b/src/psclip.c
index 298b3c7..3e93465 100644
--- a/src/psclip.c
+++ b/src/psclip.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psclip.c 16835 2016-07-19 03:18:51Z pwessel $
+ * $Id: psclip.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -198,9 +198,9 @@ int GMT_psclip (void *V_API, int mode, void *args) {
double x0, y0;
struct PSCLIP_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -247,7 +247,7 @@ int GMT_psclip (void *V_API, int mode, void *args) {
if (!Ctrl->C.active) { /* Start new clip_path */
unsigned int tbl, first = (Ctrl->N.active) ? 0 : 1;
bool duplicate;
- uint64_t row, seg;
+ uint64_t row, seg, n_new;
struct GMT_DATASET *D = NULL;
struct GMT_DATASEGMENT *S = NULL;
@@ -279,7 +279,11 @@ int GMT_psclip (void *V_API, int mode, void *args) {
S = gmt_duplicate_segment (GMT, D->table[tbl]->segment[seg]);
}
if (GMT->current.map.path_mode == GMT_RESAMPLE_PATH) { /* Resample if spacing is too coarse or stair-case is requested */
- S->n_rows = gmt_fix_up_path (GMT, &S->data[GMT_X], &S->data[GMT_Y], S->n_rows, Ctrl->A.step, Ctrl->A.mode);
+ if ((n_new = gmt_fix_up_path (GMT, &S->data[GMT_X], &S->data[GMT_Y], S->n_rows, Ctrl->A.step, Ctrl->A.mode)) == 0) {
+ Return (GMT_RUNTIME_ERROR);
+ }
+ S->n_rows = n_new;
+ gmt_set_seg_minmax (GMT, D->geometry, S); /* Update min/max */
GMT_Report (API, GMT_MSG_DEBUG, "Resample polygon, now has %d points\n", S->n_rows);
}
diff --git a/src/pscoast.c b/src/pscoast.c
index a54ee50..5aa4432 100644
--- a/src/pscoast.c
+++ b/src/pscoast.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pscoast.c 17156 2016-10-01 02:40:53Z pwessel $
+ * $Id: pscoast.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -528,6 +528,9 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct PSCOAST_CTRL *Ctrl, struct GMT
if (GMT_Begin_IO (API, GMT_IS_TEXTSET, GMT_OUT, GMT_HEADER_OFF) != GMT_NOERROR) {
return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ return (API->error);
+ }
GMT_Put_Record (API, GMT_WRITE_TEXT, record); /* Write text record to output destination */
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
return (API->error);
@@ -688,9 +691,9 @@ int GMT_pscoast (void *V_API, int mode, void *args) {
struct GMT_BR b, r;
struct GMT_GSHHS_POL *p = NULL;
struct PSCOAST_CTRL *Ctrl = NULL; /* Control structure specific to program */
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -798,6 +801,9 @@ int GMT_pscoast (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_LINE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if (Ctrl->W.active) {
version = c.version; title = c.title; source = c.source;
}
@@ -1044,7 +1050,7 @@ int GMT_pscoast (void *V_API, int mode, void *args) {
for (k = 0; k < p[i].n; k++) {
out[GMT_X] = p[i].lon[k];
out[GMT_Y] = p[i].lat[k];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
else if (Ctrl->W.use[p[i].level-1]) {
@@ -1073,7 +1079,7 @@ int GMT_pscoast (void *V_API, int mode, void *args) {
gmt_shore_cleanup (GMT, &c);
}
- (void)gmt_DCW_operation (GMT, &Ctrl->E.info, NULL, Ctrl->M.active ? GMT_DCW_DUMP : GMT_DCW_PLOT);
+ if (Ctrl->E.info.mode > GMT_DCW_REGION) (void)gmt_DCW_operation (GMT, &Ctrl->E.info, NULL, Ctrl->M.active ? GMT_DCW_DUMP : GMT_DCW_PLOT);
if (clipping) PSL_beginclipping (PSL, xtmp, ytmp, 0, GMT->session.no_rgb, 2); /* End clippath */
@@ -1107,7 +1113,7 @@ int GMT_pscoast (void *V_API, int mode, void *args) {
for (k = 0; k < p[i].n; k++) {
out[GMT_X] = p[i].lon[k];
out[GMT_Y] = p[i].lat[k];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
else {
@@ -1168,7 +1174,7 @@ int GMT_pscoast (void *V_API, int mode, void *args) {
for (k = 0; k < p[i].n; k++) {
out[GMT_X] = p[i].lon[k];
out[GMT_Y] = p[i].lat[k];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
else {
diff --git a/src/pscontour.c b/src/pscontour.c
index dc16243..67e7456 100644
--- a/src/pscontour.c
+++ b/src/pscontour.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pscontour.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: pscontour.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -752,9 +752,9 @@ int GMT_pscontour (void *V_API, int mode, void *args) {
struct GMT_PALETTE *P = NULL;
struct SAVE *save = NULL;
struct PSCONTOUR_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -816,7 +816,7 @@ int GMT_pscontour (void *V_API, int mode, void *args) {
skip_triangles = (Ctrl->S.active && Ctrl->S.mode == 1);
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, x); gmt_M_free (GMT, y); gmt_M_free (GMT, z);
Return (GMT_RUNTIME_ERROR);
@@ -950,7 +950,7 @@ int GMT_pscontour (void *V_API, int mode, void *args) {
n_skipped++;
}
}
- if (n_skipped) GMT_Report (API, GMT_MSG_VERBOSE, "Skipped %u triangles whose verticies are all outside the domain.\n", n_skipped);
+ if (n_skipped) GMT_Report (API, GMT_MSG_VERBOSE, "Skipped %u triangles whose vertices are all outside the domain.\n", n_skipped);
}
if (Ctrl->C.cpt) { /* We already read the CPT */
diff --git a/src/psconvert.c b/src/psconvert.c
index 71aa433..ff9df43 100644
--- a/src/psconvert.c
+++ b/src/psconvert.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psconvert.c 17114 2016-09-21 00:34:29Z jluis $
+ * $Id: psconvert.c 17519 2017-02-02 04:18:12Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -55,6 +55,7 @@
#define GMT_PROG_OPTIONS "-V"
EXTERN_MSC void gmt_str_toupper (char *string);
+EXTERN_MSC void gmt_handle5_plussign (struct GMT_CTRL *GMT, char *in, char *mods, unsigned way);
#ifdef WIN32 /* Special for Windows */
# include <windows.h>
@@ -297,6 +298,7 @@ GMT_LOCAL int parse_GE_settings (struct GMT_CTRL *GMT, char *arg, struct PS2RAST
C->W.active = true;
strncpy (txt, arg, GMT_BUFSIZ-1);
+ gmt_handle5_plussign (GMT, txt, "agklnt", 0); /* Hide any plus signs unless a recognized modifier */
while (!error && (gmt_strtok (txt, "+", &pos, p))) {
switch (p[0]) {
case 'a': /* Altitude setting */
@@ -340,6 +342,7 @@ GMT_LOCAL int parse_GE_settings (struct GMT_CTRL *GMT, char *arg, struct PS2RAST
case 'n': /* Set KML document layer name */
gmt_M_str_free (C->W.overlayname); /* Already set, free then reset */
C->W.overlayname = strdup (&p[1]);
+ gmt_handle5_plussign (GMT, C->W.overlayname, NULL, 1); /* Recover any non-modifier plus signs */
break;
case 'o': /* Produce a KML overlay as a folder subset */
C->W.folder = true;
@@ -348,6 +351,7 @@ GMT_LOCAL int parse_GE_settings (struct GMT_CTRL *GMT, char *arg, struct PS2RAST
case 't': /* Set KML document title */
gmt_M_str_free (C->W.doctitle); /* Already set, free then reset */
C->W.doctitle = strdup (&p[1]);
+ gmt_handle5_plussign (GMT, C->W.doctitle, NULL, 1); /* Recover any non-modifier plus signs */
break;
case 'u': /* Specify a remote address for image */
gmt_M_str_free (C->W.URL); /* Already set, free then reset */
@@ -914,7 +918,7 @@ GMT_LOCAL int pipe_HR_BB(struct GMTAPI_CTRL *API, struct PS2RASTER_CTRL *Ctrl, c
/* Find where is the setpagedevice line */
if ((pch = strstr(PS->data, "setpagedevice")) != NULL) {
- while (pch[c_begin] != '\n') c_begin--; c_begin++; /* It receeded one too much */
+ while (pch[c_begin] != '\n') c_begin--; c_begin++; /* It receded one too much */
/* So now we know where the line starts. Put a 'translate' command in its place. */
(r == 0) ? sprintf(buf, "%.3f %.3f translate", xt, yt) : sprintf(buf, "%d rotate\n%.3f %.3f translate", r, xt, yt);
for (n = 0; n < strlen(buf); n++, c_begin++) pch[c_begin] = buf[n];
@@ -923,7 +927,7 @@ GMT_LOCAL int pipe_HR_BB(struct GMTAPI_CTRL *API, struct PS2RASTER_CTRL *Ctrl, c
else {
if ((pch = strstr(PS->data, " translate")) != NULL) { /* If user runs through this function twice 'setpagedevice' was changed to 'translate' */
double old_xt, old_yt;
- while (pch[c_begin] != '\n') c_begin--; c_begin++; /* Goto line start but it receeded one too much */
+ while (pch[c_begin] != '\n') c_begin--; c_begin++; /* Goto line start but it receded one too much */
sscanf (&pch[c_begin], "%lf %lf", &old_xt, &old_yt);
(r == 0) ? sprintf(buf, "%.3f %.3f translate", xt + old_xt, yt + old_xt) : sprintf(buf, "%d rotate\n%.3f %.3f translate", r, xt + old_xt, yt + old_xt);
for (n = 0; n < strlen(buf); n++, c_begin++) pch[c_begin] = buf[n];
@@ -1147,6 +1151,11 @@ int GMT_psconvert (void *V_API, int mode, void *args) {
/*---------------------------- This is the psconvert main code ----------------------------*/
+ if (!Ctrl->L.active && Ctrl->In.n_files == 0) { /* No files given, bail */
+ GMT_Report (API, GMT_MSG_NORMAL, "No PostScript files specified - exiting.\n");
+ Return (GMT_NOERROR);
+ }
+
/* Test if GhostScript can be executed (version query) */
sprintf(cmd, "%s --version", Ctrl->G.file);
if ((fp = popen(cmd, "r")) != NULL) {
@@ -1363,6 +1372,7 @@ int GMT_psconvert (void *V_API, int mode, void *args) {
if (!Ctrl->L.active) /* Otherwise ps_names contents are the Garbageman territory */
for (kk = 0; kk < Ctrl->In.n_files; kk++) gmt_M_str_free (ps_names[kk]);
gmt_M_free (GMT, ps_names);
+ gmt_M_free (GMT, PS);
Return (GMT_RUNTIME_ERROR);
}
while (read_source (GMT, &line, &line_size, fp, PS->data, &pos) != EOF) {
@@ -1412,11 +1422,13 @@ int GMT_psconvert (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_NORMAL, "System call [%s] returned error %d.\n", cmd, sys_retval);
remove (BB_file);
if (delete) remove (ps_file); /* Since we created a temporary file from the memdata */
+ gmt_M_free (GMT, PS);
Return (GMT_RUNTIME_ERROR);
}
if ((fpb = fopen (BB_file, "r")) == NULL) {
GMT_Report (API, GMT_MSG_NORMAL, "Unable to open file %s\n", BB_file);
if (delete) remove (ps_file); /* Since we created a temporary file from the memdata */
+ gmt_M_free (GMT, PS);
Return (GMT_ERROR_ON_FOPEN);
}
while ((file_line_reader (GMT, &line, &line_size, fpb, NULL, NULL) != EOF) && !got_BB) {
@@ -1448,6 +1460,7 @@ int GMT_psconvert (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_NORMAL, "System call [%s] returned error %d.\n", cmd, sys_retval);
remove (tmp_file);
if (delete) remove (ps_file); /* Since we created a temporary file from the memdata */
+ gmt_M_free (GMT, PS);
Return (GMT_RUNTIME_ERROR);
}
/* must leave loop because fpb has been closed and read_source would
@@ -1503,7 +1516,7 @@ int GMT_psconvert (void *V_API, int mode, void *args) {
else if (!got_BB && strstr (line, "%%BoundingBox:")) {
sscanf (&line[14], "%s %s %s %s",c1,c2,c3,c4);
if (strncmp (c1, "(atend)", 7)) { /* Got actual numbers */
- if (!got_HRBB) { /* Only assign values if we havent seen the high-res version yet */
+ if (!got_HRBB) { /* Only assign values if we haven't seen the high-res version yet */
x0 = atoi (c1); y0 = atoi (c2);
x1 = atoi (c3); y1 = atoi (c4);
}
@@ -1863,22 +1876,25 @@ int GMT_psconvert (void *V_API, int mode, void *args) {
strncpy (tag, &ext[Ctrl->T.device][1], 16U);
gmt_str_toupper (tag);
- if (transparency) {
+ if (transparency) { /* Get here when PDF is _NOT_ the final output format but an intermediate format */
GMT_Report (API, GMT_MSG_LONG_VERBOSE, "PS file with transparency must be converted to PDF before creating %s\n", tag);
/* Temporarily change output device to PDF to get the PDF tmp file */
Ctrl->T.device = GS_DEV_PDF;
- /* After conversion, convert the tmp PDF file to desired format via a 2nd gs call */
- GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Convert to PDF...\n");
+ /* After conversion, we convert the tmp PDF file to desired format via a 2nd gs call */
+ GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Convert to intermediate PDF...\n");
+ strncat (out_file, &ps_file[pos_file], (size_t)(pos_ext - pos_file));
+ strcat (out_file, "_intermediate");
}
- else
- GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Convert to %s...\n", tag);
+ else { /* Output is the final result */
+ GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Convert to %s...\n", tag);
- if (!Ctrl->F.active || return_image) {
- if (Ctrl->D.active) sprintf (out_file, "%s/", Ctrl->D.dir); /* Use specified output directory */
- strncat (out_file, &ps_file[pos_file], (size_t)(pos_ext - pos_file));
+ if (!Ctrl->F.active || return_image) {
+ if (Ctrl->D.active) sprintf (out_file, "%s/", Ctrl->D.dir); /* Use specified output directory */
+ strncat (out_file, &ps_file[pos_file], (size_t)(pos_ext - pos_file));
+ }
+ else
+ strncpy (out_file, Ctrl->F.file, GMT_BUFSIZ-1);
}
- else
- strncpy (out_file, Ctrl->F.file, GMT_BUFSIZ-1);
strcat (out_file, ext[Ctrl->T.device]);
if (Ctrl->A.new_dpi_x) { /* We have a resize request (was Ctrl->A.resize = true;) */
@@ -1925,7 +1941,7 @@ int GMT_psconvert (void *V_API, int mode, void *args) {
ps_file, out_file);
/* else: Either a good closed GMT PS file or one of unknown origin */
}
- if (transparency) { /* Now convert PDF to desired format */
+ if (transparency) { /* Now convert temporary PDF to desired format */
char pdf_file[GMT_BUFSIZ] = {""};
GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Convert PDF with transparency to %s...\n", tag);
Ctrl->T.device = dest_device; /* Reset output device type */
diff --git a/src/pshistogram.c b/src/pshistogram.c
index 1ca11af..bdbd4a4 100644
--- a/src/pshistogram.c
+++ b/src/pshistogram.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pshistogram.c 17220 2016-10-19 02:56:33Z pwessel $
+ * $Id: pshistogram.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -644,9 +644,9 @@ int GMT_pshistogram (void *V_API, int mode, void *args) {
struct PSHISTOGRAM_INFO F;
struct PSHISTOGRAM_CTRL *Ctrl = NULL;
struct GMT_PALETTE *P = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -704,7 +704,7 @@ int GMT_pshistogram (void *V_API, int mode, void *args) {
x_min = DBL_MAX; x_max = -DBL_MAX;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, data);
Return (GMT_RUNTIME_ERROR);
@@ -861,11 +861,14 @@ int GMT_pshistogram (void *V_API, int mode, void *args) {
gmt_M_free (GMT, data); gmt_M_free (GMT, F.boxh);
Return (API->error); /* Enables data output and sets access mode */
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
sprintf (format, "xmin\txmax\tymin\tymax from pshistogram -I -W%g -Z%u", Ctrl->W.inc, Ctrl->Z.mode);
if (Ctrl->F.active) strcat (format, " -F");
out[0] = x_min; out[1] = x_max; out[2] = F.yy0; out[3] = F.yy1;
GMT_Put_Record (API, GMT_WRITE_TABLE_HEADER, format); /* Write this to output if -ho */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
gmt_M_free (GMT, data); gmt_M_free (GMT, F.boxh);
Return (API->error);
diff --git a/src/psimage.c b/src/psimage.c
index 8dbe012..4f02bf9 100644
--- a/src/psimage.c
+++ b/src/psimage.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psimage.c 17224 2016-10-19 16:14:30Z remko $
+ * $Id: psimage.c 17460 2017-01-22 22:55:48Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -102,16 +102,16 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t<imagefile> is an EPS or image file.\n");
GMT_Message (API, GMT_TIME_NONE, "\n\tOPTIONS:\n");
GMT_Option (API, "B");
- gmt_refpoint_syntax (API->GMT, 'D', "Specify reference point for the image", GMT_ANCHOR_IMAGE, 3);
+ gmt_refpoint_syntax (API->GMT, "D", "Specify reference point for the image", GMT_ANCHOR_IMAGE, 3);
GMT_Message (API, GMT_TIME_NONE, "\t Set width (and height) of image with +w<width>/[/<height>]. If <height> = 0\n");
GMT_Message (API, GMT_TIME_NONE, "\t then the original aspect ratio is maintained. If <width> < 0\n");
GMT_Message (API, GMT_TIME_NONE, "\t then we use absolute value as width and interpolate image in PostScript.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Alternatively, set image dpi (dots per inch) with +r.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Use +n to replicate image <n_columns> by <n_rows> times [Default is no replication].\n");
gmt_mappanel_syntax (API->GMT, 'F', "Specify a rectangular panel behind the image", 1);
- GMT_Message (API, GMT_TIME_NONE, "\t-Gb and -Gf (1-bit images only) sets the background and foreground color,\n");
- GMT_Message (API, GMT_TIME_NONE, "\t respectively. Set <color> = - for transparency [Default is black and white].\n");
- GMT_Message (API, GMT_TIME_NONE, "\t-Gt (not for 1-bit images) indicate which color to be made transparent\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-Gb and -Gf (1-bit images only) set the background and foreground color,\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t respectively. Use <color> = - for transparency [Default is black and white].\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-Gt (not for 1-bit images) indicate which color should be made transparent\n");
GMT_Message (API, GMT_TIME_NONE, "\t [Default no transparency].\n");
GMT_Message (API, GMT_TIME_NONE, "\t-I Invert 1-bit images (does not affect 8 or 24-bit images).\n");
GMT_Option (API, "J-Z,K");
@@ -372,11 +372,12 @@ GMT_LOCAL int find_unique_color (struct GMT_CTRL *GMT, unsigned char *rgba, size
#define bailout(code) {gmt_M_free_options (mode); return (code);}
#define Return(code) {Free_Ctrl (GMT, Ctrl); gmt_end_module (GMT, GMT_cpy); bailout (code);}
-EXTERN_MSC unsigned char *psl_gray_encode (struct PSL_CTRL *PSL, int *nbytes, unsigned char *input);
+EXTERN_MSC unsigned char *psl_gray_encode (struct PSL_CTRL *PSL, size_t *nbytes, unsigned char *input);
int GMT_psimage (void *V_API, int mode, void *args) {
- int i, j, n, PS_interpolate = 1, PS_transparent = 1, known = 0, error = 0;
+ int i, j, PS_interpolate = 1, PS_transparent = 1, known = 0, error = 0;
unsigned int row, col;
+ size_t n;
bool free_GMT = false, did_gray = false;
double x, y, wesn[4];
@@ -388,9 +389,9 @@ int GMT_psimage (void *V_API, int mode, void *args) {
struct imageinfo header;
struct PSIMAGE_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
#ifdef HAVE_GDAL
int k, r = 0, g = 0, b = 0, has_trans = 0;
unsigned char colormap[4*256];
diff --git a/src/psldemo.h.in b/src/psldemo.h.in
index 7ef5405..8bf52cc 100644
--- a/src/psldemo.h.in
+++ b/src/psldemo.h.in
@@ -1,6 +1,6 @@
-/* $Id: psldemo.h.in 15944 2016-03-26 08:43:39Z pwessel $
+/* $Id: psldemo.h.in 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo,
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo,
* F. Wobbe, and J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
diff --git a/src/pslegend.c b/src/pslegend.c
index 4faeda7..98f9585 100644
--- a/src/pslegend.c
+++ b/src/pslegend.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pslegend.c 17035 2016-08-30 17:24:18Z pwessel $
+ * $Id: pslegend.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -86,10 +86,10 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
if (level == GMT_SYNOPSIS) return (GMT_MODULE_SYNOPSIS);
- gmt_refpoint_syntax (API->GMT, 'D', "Specify position and size of the legend rectangle", GMT_ANCHOR_LEGEND, 1);
+ gmt_refpoint_syntax (API->GMT, "D", "Specify position and size of the legend rectangle", GMT_ANCHOR_LEGEND, 1);
GMT_Message (API, GMT_TIME_NONE, "\t Specify legend width with +w<width>; <height> is optional [estimated from <specfile>].\n");
GMT_Message (API, GMT_TIME_NONE, "\t The remaining arguments are optional:\n");
- gmt_refpoint_syntax (API->GMT, 'D', NULL, GMT_ANCHOR_LEGEND, 2);
+ gmt_refpoint_syntax (API->GMT, "D", NULL, GMT_ANCHOR_LEGEND, 2);
GMT_Message (API, GMT_TIME_NONE, "\t +l sets the linespacing factor in units of the current annotation font size [1.1].\n");
GMT_Message (API, GMT_TIME_NONE, "\n\tOPTIONS:\n");
GMT_Message (API, GMT_TIME_NONE, "\t<specfile> is one or more ASCII specification files with legend commands.\n");
@@ -356,7 +356,7 @@ int GMT_pslegend (void *V_API, int mode, void *args) {
struct PSLEGEND_CTRL *Ctrl = NULL;
struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL;
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMT_OPTION *r_ptr = NULL, *j_ptr = NULL;
struct GMT_FONT ifont;
struct GMT_PEN current_pen;
@@ -736,7 +736,7 @@ int GMT_pslegend (void *V_API, int mode, void *args) {
if (d_line_half_width > 0.0) PSL_plotsegment (PSL, Ctrl->D.refpoint->x + d_line_hor_offset, row_base_y, Ctrl->D.refpoint->x + Ctrl->D.dim[GMT_X] - d_line_hor_offset, row_base_y);
d_line_after_gap = (txt_c[0] == '+' || txt_c[0] == '=') ? 0.0 : quarter_line_spacing;
row_base_y -= d_line_after_gap;
- d_line_after_gap -= d_line_half_width; /* Shrink the gap fill-height after a D line by half the line width so we dont overwrite the line */
+ d_line_after_gap -= d_line_half_width; /* Shrink the gap fill-height after a D line by half the line width so we don't overwrite the line */
column_number = 0; /* Reset to new row */
if (Ctrl->F.debug) drawbase (GMT, PSL, Ctrl->D.refpoint->x, Ctrl->D.refpoint->x + Ctrl->D.dim[GMT_X], row_base_y);
drawn = true;
diff --git a/src/psmask.c b/src/psmask.c
index 6542666..251ab05 100644
--- a/src/psmask.c
+++ b/src/psmask.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psmask.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: psmask.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -386,8 +386,8 @@ GMT_LOCAL void orient_contours (struct GMT_CTRL *GMT, struct GMT_GRID_HEADER *h,
if (reverse) { /* Must reverse order of contour */
GMT_Report (GMT->parent, GMT_MSG_LONG_VERBOSE, "Change orientation of closed polygon\n");
for (i = 0, j = n-1; i < n/2; i++, j--) {
- double_swap (x[i], x[j]);
- double_swap (y[i], y[j]);
+ gmt_M_double_swap (x[i], x[j]);
+ gmt_M_double_swap (y[i], y[j]);
}
}
}
@@ -618,9 +618,9 @@ int GMT_psmask (void *V_API, int mode, void *args) {
struct GMT_GRID *Grid = NULL;
struct PSMASK_INFO info;
struct PSMASK_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -737,7 +737,7 @@ int GMT_psmask (void *V_API, int mode, void *args) {
n_read = 0;
do { /* Keep returning records until we reach EOF */
n_read++;
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all table and segment headers */
@@ -760,6 +760,32 @@ int GMT_psmask (void *V_API, int mode, void *args) {
grd[ij] = 1;
}
else { /* Set coordinate of this node */
+ if (gmt_M_is_geographic (GMT, GMT_IN)) { /* Make special checks for N and S poles */
+ if (gmt_M_is_Npole (in[GMT_Y])) { /* N pole */
+ if (Ctrl->S.radius == 0.0) { /* Only set the N pole row */
+ gmt_M_col_loop (GMT, Grid, 0, col, ij) /* Set this entire N row */
+ grd[ij] = 1;
+ continue;
+ }
+ for (row = 0; row < Grid->header->n_rows && (distance = gmt_distance (GMT, 0.0, 90.0, grd_x0[0], grd_y0[row])) <= Ctrl->S.radius; row++) {
+ gmt_M_col_loop (GMT, Grid, row, col, ij) /* Set this entire row */
+ grd[ij] = 1;
+ }
+ continue;
+ }
+ else if (gmt_M_is_Spole (in[GMT_Y])) { /* S pole */
+ if (Ctrl->S.radius == 0.0) { /* Only set the S pole row */
+ gmt_M_col_loop (GMT, Grid, Grid->header->n_rows - 1, col, ij) /* Set this entire S row */
+ grd[ij] = 1;
+ continue;
+ }
+ for (row = Grid->header->n_rows; row > 0 && (distance = gmt_distance (GMT, 0.0, -90.0, grd_x0[0], grd_y0[row-1])) <= Ctrl->S.radius; row--) {
+ gmt_M_col_loop (GMT, Grid, row-1, col, ij) /* Set this entire row */
+ grd[ij] = 1;
+ }
+ continue;
+ }
+ }
x0 = gmt_M_grd_col_to_x (GMT, col, Grid->header);
y0 = gmt_M_grd_row_to_y (GMT, row, Grid->header);
diff --git a/src/psrose.c b/src/psrose.c
index 3d0a8aa..88cc3d9 100644
--- a/src/psrose.c
+++ b/src/psrose.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psrose.c 16615 2016-06-22 21:22:00Z pwessel $
+ * $Id: psrose.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -128,7 +128,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
gmt_show_name_and_purpose (API, THIS_MODULE_LIB, THIS_MODULE_NAME, THIS_MODULE_PURPOSE);
if (level == GMT_MODULE_PURPOSE) return (GMT_NOERROR);
- GMT_Message (API, GMT_TIME_NONE, "usage: psrose [<table>] [-A[r]<sector_angle>] [%s] [-C[m|<modefile>]] [-D] [-G<fill>] [-I] [-K]\n", GMT_B_OPT);
+ GMT_Message (API, GMT_TIME_NONE, "usage: psrose [<table>] [-A[r]<sector_angle>] [%s] [-C[m|<modefile>]] [-D] [-F] [-G<fill>] [-I] [-K]\n", GMT_B_OPT);
GMT_Message (API, GMT_TIME_NONE, "\t[-L[<wlab>/<elab>/<slab>/<nlab>]] [-M[<size>][<modifiers>]] [-N] [-O] [-P]\n");
GMT_Message (API, GMT_TIME_NONE, "\t[-R<r0>/<r1>/<theta0>/<theta1>] [-S[n]<scale>] [-T] [%s]\n", GMT_U_OPT);
GMT_Message (API, GMT_TIME_NONE, "\t[%s] [-W[v]<pen>] [%s] [%s]\n\t[-Zu|<scale>] [%s] [%s] [%s]\n\t[%s] [%s]\n\t[%s] [%s]\n\t[%s] [%s]\n\n",
@@ -141,12 +141,15 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t-A Sector width in degrees for sector diagram [Default is windrose];\n");
GMT_Message (API, GMT_TIME_NONE, "\t Use -Ar to get rose diagram.\n");
GMT_Option (API, "B-");
- if (gmt_M_showusage (API)) GMT_Message (API, GMT_TIME_NONE, "\t (Remember: radial is x-direction, azimuthal is y-direction).\n");
+ if (gmt_M_showusage (API)) {
+ GMT_Message (API, GMT_TIME_NONE, "\t The scale bar length is set to the radial gridline spacing.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t (Remember: radial is x-direction, azimuthal is y-direction).\n");
+ }
GMT_Message (API, GMT_TIME_NONE, "\t-C Plot vectors listed in the <modefile> file. To use mean direction, choose -Cm.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-D Will center the sectors.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-F Do not draw the scale length bar [Default plots scale in lower right corner].\n");
gmt_fill_syntax (API->GMT, 'G', "Specify color for diagram [Default is no fill].");
- GMT_Message (API, GMT_TIME_NONE, "\t-I Inquire mode; only compute statistics - no plot is created.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-I Inquire mode; only compute and report statistics - no plot is created.\n");
GMT_Option (API, "K");
GMT_Message (API, GMT_TIME_NONE, "\t-L Override default labels [Default is West/East/South/North (depending on GMT_LANGUAGE)\n");
GMT_Message (API, GMT_TIME_NONE, "\t for full circle and 90W/90E/-/0 for half-circle].\n");
@@ -162,14 +165,16 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t Specify <theta0>/<theta1> = -90/90 or 0/180 (half-circles) or 0/360 only).\n");
GMT_Message (API, GMT_TIME_NONE, "\t If <r0> = <r1> = 0, psrose will compute a reasonable <r1> value.\n");
r = (API->GMT->current.setting.proj_length_unit == GMT_CM) ? 7.5 : 3.0;
- GMT_Message (API, GMT_TIME_NONE, "\t-S Specify the radius of the unit circle in %s [%g]. Normalize r if -Sn is used.\n", API->GMT->session.unit_name[API->GMT->current.setting.proj_length_unit], r);
+ GMT_Message (API, GMT_TIME_NONE, "\t-S Specify the plot radius of the unit circle in %s [%g].\n", API->GMT->session.unit_name[API->GMT->current.setting.proj_length_unit], r);
+ GMT_Message (API, GMT_TIME_NONE, "\t Use -Sn to normalize data, i.e., divide all radii (or bin counts) by the maximum radius (or count).\n");
GMT_Message (API, GMT_TIME_NONE, "\t-T Indicate that the vectors are oriented (two-headed), not directed [Default].\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t This implies both <azimuth> and <azimuth> + 180 will be counted as inputs.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Ignored if -R sets a half-circle domain.\n");
GMT_Option (API, "U,V");
gmt_pen_syntax (API->GMT, 'W', "Set pen attributes for outline of rose [Default is no outline].", 0);
GMT_Message (API, GMT_TIME_NONE, "\t Use -Wv<pen> to set a different pen for the vector (requires -C) [Same as rose outline].\n");
GMT_Option (API, "X");
- GMT_Message (API, GMT_TIME_NONE, "\t-Z Multiply the radii by <scale> before plotting or use -Zu to give each item unit weight.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t-Z Multiply the radii by <scale> before plotting; use -Zu to set input radii to 1.\n");
GMT_Option (API, "c");
GMT_Message (API, GMT_TIME_NONE, "\t-: Expect (azimuth,radius) input rather than (radius,azimuth) [%s].\n", choice[API->GMT->current.setting.io_lonlat_toggle[GMT_IN]]);
GMT_Option (API, "bi2,di,h,i,p,s,t,.");
@@ -361,9 +366,9 @@ int GMT_psrose (void *V_API, int mode, void *args) {
struct PSROSE_CTRL *Ctrl = NULL;
struct GMT_DATASET *Cin = NULL;
struct GMT_DATATABLE *P = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -397,7 +402,7 @@ int GMT_psrose (void *V_API, int mode, void *args) {
if (Ctrl->A.rose) windrose = false;
sector_plot = (Ctrl->A.inc > 0.0);
if (sector_plot) windrose = false; /* Draw rose diagram instead of sector diagram */
- if (!Ctrl->S.normalize) Ctrl->N.active = false; /* Only do this is data is normalized for length also */
+ if (!Ctrl->S.normalize) Ctrl->N.active = false; /* Only do this if data is normalized for length also */
if (!Ctrl->I.active && !GMT->common.R.active) automatic = true;
if (Ctrl->T.active) one_or_two = 2.0;
half_bin_width = Ctrl->D.active * Ctrl->A.inc * 0.5;
@@ -442,7 +447,7 @@ int GMT_psrose (void *V_API, int mode, void *args) {
length = gmt_M_memory (GMT, NULL, n_alloc, double);
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, length); gmt_M_free (GMT, xx); gmt_M_free (GMT, sum);
gmt_M_free (GMT, azimuth); gmt_M_free (GMT, yy);
@@ -549,8 +554,58 @@ int GMT_psrose (void *V_API, int mode, void *args) {
sprintf (format, "Info for data: n = %% " PRIu64 " mean az = %s mean r = %s mean resultant length = %s max %s = %s scaled mean r = %s linear length sum = %s\n",
GMT->current.setting.format_float_out, GMT->current.setting.format_float_out, GMT->current.setting.format_float_out, kind[Ctrl->A.active],
GMT->current.setting.format_float_out, GMT->current.setting.format_float_out, GMT->current.setting.format_float_out);
- GMT_Report (API, GMT_MSG_NORMAL, format, n, mean_theta, mean_vector, mean_resultant, max, mean_radius, total);
+ GMT_Report (API, GMT_MSG_VERBOSE, format, n, mean_theta, mean_vector, mean_resultant, max, mean_radius, total);
if (Ctrl->I.active) { /* That was all we needed to do, wrap up */
+ double out[7];
+ unsigned int col_type[2];
+ gmt_M_memcpy (col_type, GMT->current.io.col_type[GMT_OUT], 2U, unsigned int); /* Save first 2 current output col types */
+ GMT->current.io.col_type[GMT_OUT][0] = GMT->current.io.col_type[GMT_OUT][1] = GMT_IS_FLOAT;
+ if ((error = gmt_set_cols (GMT, GMT_OUT, 7U)) != GMT_NOERROR) {
+ gmt_M_free (GMT, sum);
+ gmt_M_free (GMT, xx);
+ gmt_M_free (GMT, yy);
+ gmt_M_free (GMT, azimuth);
+ gmt_M_free (GMT, length);
+ Return (error);
+ }
+ if (GMT_Init_IO (API, GMT_IS_DATASET, GMT_IS_NONE, GMT_OUT, GMT_ADD_DEFAULT, 0, options) != GMT_NOERROR) { /* Establishes data output */
+ gmt_M_free (GMT, sum);
+ gmt_M_free (GMT, xx);
+ gmt_M_free (GMT, yy);
+ gmt_M_free (GMT, azimuth);
+ gmt_M_free (GMT, length);
+ Return (API->error);
+ }
+ if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) {
+ gmt_M_free (GMT, sum);
+ gmt_M_free (GMT, xx);
+ gmt_M_free (GMT, yy);
+ gmt_M_free (GMT, azimuth);
+ gmt_M_free (GMT, length);
+ Return (API->error); /* Enables data output and sets access mode */
+ }
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, sum);
+ gmt_M_free (GMT, xx);
+ gmt_M_free (GMT, yy);
+ gmt_M_free (GMT, azimuth);
+ gmt_M_free (GMT, length);
+ Return (API->error);
+ }
+ sprintf (format, "n\tmean_az\tmean_r\tmean_resultant_length\tmax\tscaled_mean_r\tlinear_length_sum");
+ out[0] = n; out[1] = mean_theta; out[2] = mean_vector; out[3] = mean_resultant;
+ out[4] = max; out[5] = mean_radius; out[6] = total;
+ GMT_Put_Record (API, GMT_WRITE_TABLE_HEADER, format); /* Write this to output if -ho */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
+ if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
+ gmt_M_free (GMT, sum);
+ gmt_M_free (GMT, xx);
+ gmt_M_free (GMT, yy);
+ gmt_M_free (GMT, azimuth);
+ gmt_M_free (GMT, length);
+ Return (API->error);
+ }
+ gmt_M_memcpy (GMT->current.io.col_type[GMT_OUT], col_type, 2U, unsigned int); /* Restore 2 current output col types */
gmt_M_free (GMT, sum);
gmt_M_free (GMT, xx);
gmt_M_free (GMT, yy);
@@ -588,7 +643,7 @@ int GMT_psrose (void *V_API, int mode, void *args) {
}
if (GMT->current.map.frame.paint) { /* Until psrose uses a polar projection we must bypass the basemap fill and do it ourself here */
- GMT->current.map.frame.paint = false; /* Turn off so gmt_plotinit wont fill */
+ GMT->current.map.frame.paint = false; /* Turn off so gmt_plotinit won't fill */
do_fill = true;
}
if ((PSL = gmt_plotinit (GMT, options)) == NULL) Return (GMT_RUNTIME_ERROR);
@@ -850,7 +905,7 @@ int GMT_psrose (void *V_API, int mode, void *args) {
else {
form = gmt_setfont (GMT, &GMT->current.setting.font_label);
PSL_plottext (PSL, 0.0, -off - 2.0 * GMT->current.setting.map_annot_offset[GMT_PRIMARY], GMT->current.setting.font_label.size, Ctrl->L.s, 0.0, PSL_TC, form);
- if (!Ctrl->F.active) { /* Draw scale bar */
+ if (!Ctrl->F.active && GMT->current.map.frame.axis[GMT_X].item[GMT_GRID_UPPER].interval > 0.0) { /* Draw scale bar but only if x-grid interval is set */
PSL_plotsegment (PSL, off, -off, (max_radius - GMT->current.map.frame.axis[GMT_X].item[GMT_GRID_UPPER].interval) * Ctrl->S.scale, -off);
PSL_plotsegment (PSL, off, -off, off, GMT->current.setting.map_tick_length[0] - off);
PSL_plotsegment (PSL, (max_radius - GMT->current.map.frame.axis[GMT_X].item[GMT_GRID_UPPER].interval) * Ctrl->S.scale, -off, (max_radius - GMT->current.map.frame.axis[GMT_X].item[GMT_GRID_UPPER].interval) * Ctrl->S.scale, GMT->current.setting.map_tick_length[0] - off);
diff --git a/src/psscale.c b/src/psscale.c
index 7fed775..8215c9a 100644
--- a/src/psscale.c
+++ b/src/psscale.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psscale.c 16793 2016-07-13 23:30:30Z pwessel $
+ * $Id: psscale.c 17582 2017-02-23 21:04:54Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -153,11 +153,11 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
if (level == GMT_SYNOPSIS) return (GMT_MODULE_SYNOPSIS);
- gmt_refpoint_syntax (API->GMT, 'D', "Specify position and dimensions of the scale bar", GMT_ANCHOR_COLORBAR, 1);
+ gmt_refpoint_syntax (API->GMT, "D", "Specify position and dimensions of the scale bar", GMT_ANCHOR_COLORBAR, 1);
GMT_Message (API, GMT_TIME_NONE, "\t Append +w<length>/<width> for the scale dimensions.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Give negative <length> to reverse the positive direction along the scale bar.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Append +h for a horizontal scale [Default is vertical].\n");
- gmt_refpoint_syntax (API->GMT, 'D', NULL, GMT_ANCHOR_COLORBAR, 2);
+ gmt_refpoint_syntax (API->GMT, "D", NULL, GMT_ANCHOR_COLORBAR, 2);
GMT_Message (API, GMT_TIME_NONE, "\t Append +e to add sidebar triangles for back- and foreground colors.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Specify b(ackground) or f(oreground) to get one only [Default is both].\n");
GMT_Message (API, GMT_TIME_NONE, "\t Optionally, append triangle height [Default is half the barwidth].\n");
@@ -175,7 +175,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t If a categorical CPT is given the -Li is set automatically.\n");
gmt_mappanel_syntax (API->GMT, 'F', "Specify a rectangular panel behind the scale", 3);
GMT_Message (API, GMT_TIME_NONE, "\t-G Truncate incoming CPT to be limited to the z-range <zlo>/<zhi>.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t To accept one if the incoming limits, set to other to NaN.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t To accept one of the incoming limits, set that limit to NaN.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-I Add illumination for +-<max_intens> or <low_i> to <high_i> [-1.0/1.0].\n");
GMT_Message (API, GMT_TIME_NONE, "\t Alternatively, specify <lower>/<upper> intensity values.\n");
GMT_Option (API, "J-Z,K");
@@ -697,6 +697,8 @@ GMT_LOCAL void gmt_draw_colorbar (struct GMT_CTRL *GMT, struct PSSCALE_CTRL *Ctr
}
}
+ /* Defeat the auto-repeat of axis info */
+ if (!strcmp (GMT->current.map.frame.axis[GMT_X].label, GMT->current.map.frame.axis[GMT_Y].label)) GMT->current.map.frame.axis[GMT_Y].label[0] = 0;
if (Ctrl->F.active) { /* Place rectangle behind the color bar */
double x_center, y_center, bar_tick_len, u_off = 0.0, v_off = 0.0, h_off = 0.0, dim[4] = {0.0, 0.0, 0.0, 0.0};
@@ -757,7 +759,7 @@ GMT_LOCAL void gmt_draw_colorbar (struct GMT_CTRL *GMT, struct PSSCALE_CTRL *Ctr
label_off = MAX (0.0, GMT->current.setting.map_label_offset) + GMT->current.setting.font_label.size / PSL_POINTS_PER_INCH;
/* If a unit then consider if its width exceeds the bar width; then use half the excess to adjust center and width of box, and its height to adjust the height of box */
if (GMT->current.map.frame.axis[GMT_Y].label[0]) {
- /* u_off is ~half-width of the label placed on top of the vertical bar, while v_off is the extra height needed to accomodate the label */
+ /* u_off is ~half-width of the label placed on top of the vertical bar, while v_off is the extra height needed to accommodate the label */
u_off = 0.5 * MAX (0.0, 1.3*strlen (GMT->current.map.frame.axis[GMT_Y].label) * GMT_LET_WIDTH * GMT->current.setting.font_annot[GMT_PRIMARY].size / PSL_POINTS_PER_INCH - width);
v_off = MAX (0.0, GMT->current.setting.map_annot_offset[GMT_PRIMARY]) + GMT->current.setting.font_annot[GMT_PRIMARY].size * GMT_LET_HEIGHT / PSL_POINTS_PER_INCH;
}
@@ -782,8 +784,6 @@ GMT_LOCAL void gmt_draw_colorbar (struct GMT_CTRL *GMT, struct PSSCALE_CTRL *Ctr
gmt_setpen (GMT, &GMT->current.setting.map_frame_pen);
unit[0] = label[0] = 0;
- /* Defeat the auto-repeat of axis info */
- if (!strcmp (GMT->current.map.frame.axis[GMT_X].label, GMT->current.map.frame.axis[GMT_Y].label)) GMT->current.map.frame.axis[GMT_Y].label[0] = 0;
/* Save label and unit, because we are going to switch them off in GMT->current.map.frame and do it ourselves */
strncpy (label, GMT->current.map.frame.axis[GMT_X].label, GMT_LEN256-1);
strncpy (unit, GMT->current.map.frame.axis[GMT_Y].label, GMT_LEN256-1);
@@ -1159,12 +1159,12 @@ GMT_LOCAL void gmt_draw_colorbar (struct GMT_CTRL *GMT, struct PSSCALE_CTRL *Ctr
gmt_linearx_grid (GMT, PSL, P->data[0].z_low, P->data[P->n_colors-1].z_high, 0.0, width, dx);
}
PSL_setorigin (PSL, 0.0, 0.0, -90.0, PSL_FWD); /* Rotate back so we can plot y-axis */
- /* Copy x-axis annotation and scale info to y-axis. We dont need to undo this since gmt_end_module will restore it for us */
+ /* Copy x-axis annotation and scale info to y-axis. We don't need to undo this since gmt_end_module will restore it for us */
custum = GMT->current.map.frame.axis[GMT_Y].file_custom; /* Need to remember what this was */
gmt_M_memcpy (&GMT->current.map.frame.axis[GMT_Y], &GMT->current.map.frame.axis[GMT_X], 1, struct GMT_PLOT_AXIS);
- double_swap (GMT->current.proj.scale[GMT_X], GMT->current.proj.scale[GMT_Y]);
- double_swap (GMT->current.proj.origin[GMT_X], GMT->current.proj.origin[GMT_Y]);
- uint_swap (GMT->current.proj.xyz_projection[GMT_X], GMT->current.proj.xyz_projection[GMT_Y]);
+ gmt_M_double_swap (GMT->current.proj.scale[GMT_X], GMT->current.proj.scale[GMT_Y]);
+ gmt_M_double_swap (GMT->current.proj.origin[GMT_X], GMT->current.proj.origin[GMT_Y]);
+ gmt_M_uint_swap (GMT->current.proj.xyz_projection[GMT_X], GMT->current.proj.xyz_projection[GMT_Y]);
tmp = GMT->current.proj.fwd_x; GMT->current.proj.fwd_y = GMT->current.proj.fwd_x; GMT->current.proj.fwd_x = tmp;
GMT->current.map.frame.axis[GMT_Y].id = GMT_Y;
for (i = 0; i < 5; i++) GMT->current.map.frame.axis[GMT_Y].item[i].parent = GMT_Y;
@@ -1296,9 +1296,9 @@ int GMT_psscale (void *V_API, int mode, void *args) {
struct GMT_PALETTE *P = NULL;
struct GMT_DATASET *D = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -1326,10 +1326,14 @@ int GMT_psscale (void *V_API, int mode, void *args) {
Return (API->error);
}
if (P->has_range) /* Convert from normalized to default CPT z-range */
- gmt_stretch_cpt (GMT, P, 0.0, 0.0, 0);
+ gmt_stretch_cpt (GMT, P, 0.0, 0.0);
- if (Ctrl->G.active)
- P = gmt_truncate_cpt (GMT, P, Ctrl->G.z_low, Ctrl->G.z_high); /* Possibly truncate the CPT */
+ if (Ctrl->G.active) { /* Attempt truncation */
+ struct GMT_PALETTE *Ptrunc = gmt_truncate_cpt (GMT, P, Ctrl->G.z_low, Ctrl->G.z_high); /* Possibly truncate the CPT */
+ if (Ptrunc == NULL)
+ Return (EXIT_FAILURE);
+ P = Ptrunc;
+ }
if (Ctrl->W.active) /* Scale all z values */
gmt_scale_cpt (GMT, P, Ctrl->W.scale);
@@ -1432,8 +1436,8 @@ int GMT_psscale (void *V_API, int mode, void *args) {
else {
dim[GMT_Y] = fabs (Ctrl->D.dim[GMT_X]); dim[GMT_X] = Ctrl->D.dim[GMT_Y];
GMT->current.map.frame.side[S_SIDE] = GMT->current.map.frame.side[N_SIDE] = 0;
- double_swap (GMT->current.proj.z_project.xmin, GMT->current.proj.z_project.ymin);
- double_swap (GMT->current.proj.z_project.xmax, GMT->current.proj.z_project.ymax);
+ gmt_M_double_swap (GMT->current.proj.z_project.xmin, GMT->current.proj.z_project.ymin);
+ gmt_M_double_swap (GMT->current.proj.z_project.xmax, GMT->current.proj.z_project.ymax);
}
gmt_adjust_refpoint (GMT, Ctrl->D.refpoint, dim, Ctrl->D.off, Ctrl->D.justify, PSL_BL); /* Adjust refpoint to BL corner */
GMT_Report (GMT->parent, GMT_MSG_DEBUG, "After shifts, Bar reference x = %g y = %g\n", Ctrl->D.refpoint->x, Ctrl->D.refpoint->y);
diff --git a/src/pssolar.c b/src/pssolar.c
index b6117ee..d303e60 100644
--- a/src/pssolar.c
+++ b/src/pssolar.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pssolar.c 16835 2016-07-19 03:18:51Z pwessel $
+ * $Id: pssolar.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -81,7 +81,6 @@ struct PSSOLAR_CTRL {
} T;
struct PSSOL_W { /* -W<pen> */
bool active;
- unsigned int mode; /* 0 = normal, 1 = -C applies to pen color only, 2 = -C applies to symbol fill & pen color */
struct GMT_PEN pen;
} W;
};
@@ -146,6 +145,8 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t c means civil twilight.\n");
GMT_Message (API, GMT_TIME_NONE, "\t n means nautical twilight.\n");
GMT_Message (API, GMT_TIME_NONE, "\t a means astronomical twilight.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t Add +d<date> in ISO format, e.g, +d2000-04-25, to compute terminators\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t for this date. If necessary, append time zone via +z<TZ>.\n");
GMT_Option (API, "U,V");
gmt_pen_syntax (API->GMT, 'W', "Specify outline pen attributes [Default is no outline].", 0);
GMT_Option (API, "X,c,o,p");
@@ -239,13 +240,8 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct PSSOLAR_CTRL *Ctrl, struct GMT
break;
case 'W': /* Pen */
Ctrl->W.active = true;
- j = 0;
- if (opt->arg[j] == '-') {Ctrl->W.mode = 1; j++;}
- if (opt->arg[j] == '+') {Ctrl->W.mode = 2; j++;}
- if (opt->arg[j] && gmt_getpen (GMT, &opt->arg[j], &Ctrl->W.pen)) {
- gmt_pen_syntax (GMT, 'W', "sets pen attributes [Default pen is %s]:", 3);
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "\t A leading + applies cpt color (-C) to both symbol fill and pen.\n");
- GMT_Report (GMT->parent, GMT_MSG_NORMAL, "\t A leading - applies cpt color (-C) to the pen only.\n");
+ if (gmt_getpen (GMT, opt->arg, &Ctrl->W.pen)) {
+ gmt_pen_syntax (GMT, 'W', " ", 0);
n_errors++;
}
break;
@@ -403,9 +399,9 @@ int GMT_pssolar (void *V_API, int mode, void *args) {
char record[GMT_LEN256] = {""};
struct PSSOLAR_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
struct SUN_PARAMS *Sun = NULL;
struct GMT_DATASEGMENT *S = NULL;
@@ -444,11 +440,15 @@ int GMT_pssolar (void *V_API, int mode, void *args) {
gmt_M_free (GMT, Sun);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, Sun);
+ Return (API->error);
+ }
out[0] = -Sun->HourAngle; out[1] = Sun->SolarDec; out[2] = Sun->SolarAzim;
out[3] = Sun->SolarElevation; out[4] = Sun->Sunrise; out[5] = Sun->Sunset;
out[6] = Sun->SolarNoon; out[7] = Sun->Sunlight_duration;out[8] = Sun->SolarElevationCorrected;
out[9] = Sun->EQ_time;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) {
gmt_M_free (GMT, Sun);
Return (API->error);
@@ -463,6 +463,10 @@ int GMT_pssolar (void *V_API, int mode, void *args) {
gmt_M_free (GMT, Sun);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, Sun);
+ Return (API->error);
+ }
sprintf (record, "\tSun current position: long = %f\tlat = %f", -Sun->HourAngle, Sun->SolarDec);
GMT_Put_Record (API, GMT_WRITE_TEXT, record);
@@ -502,6 +506,10 @@ int GMT_pssolar (void *V_API, int mode, void *args) {
gmt_M_free (GMT, Sun);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_LINE) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, Sun);
+ Return (API->error);
+ }
for (n = n_items = 0; n < 4; n++) if (Ctrl->T.radius[n] > 0.0) n_items++;
for (n = 0; n < 4; n++) { /* Loop over the number of requested terminators */
@@ -515,7 +523,7 @@ int GMT_pssolar (void *V_API, int mode, void *args) {
}
for (j = 0; j < n_pts; j++) {
out[GMT_X] = S->data[GMT_X][j]; out[GMT_Y] = S->data[GMT_Y][j];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
gmt_free_segment (GMT, &S);
}
diff --git a/src/pstext.c b/src/pstext.c
index d680e96..7914e9e 100644
--- a/src/pstext.c
+++ b/src/pstext.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pstext.c 16722 2016-07-06 13:46:09Z remko $
+ * $Id: pstext.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -653,9 +653,9 @@ int GMT_pstext (void *V_API, int mode, void *args) {
struct GMT_FONT *c_font = NULL;
struct PSTEXT_INFO T;
struct PSTEXT_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
diff --git a/src/pswiggle.c b/src/pswiggle.c
index 990b480..4eeeb7a 100644
--- a/src/pswiggle.c
+++ b/src/pswiggle.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pswiggle.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: pswiggle.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -43,8 +43,9 @@
int gmt_parse_g_option (struct GMT_CTRL *GMT, char *txt);
struct PSWIGGLE_CTRL {
- struct A { /* -A<azimuth> */
+ struct A { /* -A[<azimuth>] */
bool active;
+ unsigned int mode;
double value;
} A;
struct C { /* -C<center> */
@@ -80,7 +81,27 @@ struct PSWIGGLE_CTRL {
} Z;
};
-GMT_LOCAL void plot_wiggle (struct GMT_CTRL *GMT, struct PSL_CTRL *PSL, double *x, double *y, double *z, uint64_t n_in, double zscale, double start_az, double stop_az, int fixed, double fix_az, struct GMT_FILL *fill, struct GMT_PEN *pen_o, struct GMT_PEN *pen_t, int paint_wiggle, int negative, int outline, int track) {
+GMT_LOCAL void *New_Ctrl (struct GMT_CTRL *GMT) { /* Allocate and initialize a new control structure */
+ struct PSWIGGLE_CTRL *C;
+
+ C = gmt_M_memory (GMT, NULL, 1, struct PSWIGGLE_CTRL);
+
+ /* Initialize values whose defaults are not 0/false/NULL */
+ C->A.mode = 1; /* Default is -A0 */
+ C->T.pen = C->W.pen = GMT->current.setting.map_default_pen;
+ gmt_init_fill (GMT, &C->G.fill[0], GMT->current.setting.map_frame_pen.rgb[0], GMT->current.setting.map_frame_pen.rgb[1], GMT->current.setting.map_frame_pen.rgb[2]);
+ C->G.fill[1] = C->G.fill[0];
+
+ return (C);
+}
+
+GMT_LOCAL void Free_Ctrl (struct GMT_CTRL *GMT, struct PSWIGGLE_CTRL *C) { /* Deallocate control structure */
+ if (!C) return;
+ gmt_M_str_free (C->S.label);
+ gmt_M_free (GMT, C);
+}
+
+GMT_LOCAL void plot_wiggle (struct GMT_CTRL *GMT, struct PSL_CTRL *PSL, double *x, double *y, double *z, uint64_t n_in, double zscale, unsigned int adjust_az, double start_az, double stop_az, int fixed, double fix_az, struct GMT_FILL *fill, struct GMT_PEN *pen_o, struct GMT_PEN *pen_t, int paint_wiggle, int negative, int outline, int track) {
uint64_t n = 0;
int64_t i, np = n_in;
double dx, dy, len, az = 0.0, s = 0.0, c = 0.0, x_inc, y_inc;
@@ -100,8 +121,10 @@ GMT_LOCAL void plot_wiggle (struct GMT_CTRL *GMT, struct PSL_CTRL *PSL, double *
dx = x[i+1] - x[i];
dy = y[i+1] - y[i];
if (!(dx == 0.0 && dy == 0.0)) az = -d_atan2 (dy, dx) - TWO_PI; /* Azimuth of normal to track */
- while (az < start_az) az += TWO_PI;
- if (az > stop_az) az -= M_PI;
+ if (adjust_az) { /* Enforce orientation in the -90/+90 window around -A */
+ while (az < start_az) az += TWO_PI;
+ if (az > stop_az) az -= M_PI;
+ }
}
if (fabs (z[i]) > 0.0) {
if (!fixed) sincos (az, &s, &c);
@@ -179,33 +202,14 @@ GMT_LOCAL void GMT_draw_z_scale (struct GMT_CTRL *GMT, struct PSL_CTRL *PSL, dou
PSL_plottext (PSL, x0 + off, y0, GMT->current.setting.font_annot[GMT_PRIMARY].size, txt, 0.0, PSL_ML, form);
}
-GMT_LOCAL void *New_Ctrl (struct GMT_CTRL *GMT) { /* Allocate and initialize a new control structure */
- struct PSWIGGLE_CTRL *C;
-
- C = gmt_M_memory (GMT, NULL, 1, struct PSWIGGLE_CTRL);
-
- /* Initialize values whose defaults are not 0/false/NULL */
- C->T.pen = C->W.pen = GMT->current.setting.map_default_pen;
- gmt_init_fill (GMT, &C->G.fill[0], GMT->current.setting.map_frame_pen.rgb[0], GMT->current.setting.map_frame_pen.rgb[1], GMT->current.setting.map_frame_pen.rgb[2]);
- C->G.fill[1] = C->G.fill[0];
-
- return (C);
-}
-
-GMT_LOCAL void Free_Ctrl (struct GMT_CTRL *GMT, struct PSWIGGLE_CTRL *C) { /* Deallocate control structure */
- if (!C) return;
- gmt_M_str_free (C->S.label);
- gmt_M_free (GMT, C);
-}
-
GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
/* This displays the pswiggle synopsis and optionally full usage information */
gmt_show_name_and_purpose (API, THIS_MODULE_LIB, THIS_MODULE_NAME, THIS_MODULE_PURPOSE);
if (level == GMT_MODULE_PURPOSE) return (GMT_NOERROR);
- GMT_Message (API, GMT_TIME_NONE, "usage: pswiggle [<table>] %s %s -Z<scale>\n", GMT_J_OPT, GMT_Rgeoz_OPT);
- GMT_Message (API, GMT_TIME_NONE, "\t[-A<azimuth>] [%s] [-C<center>] [-G[-|+|=]<fill>] [-I<az>] [%s] [-K] [-O]\n", GMT_B_OPT, GMT_Jz_OPT);
+ GMT_Message (API, GMT_TIME_NONE, "usage: pswiggle [<table>] %s %s -Z<scale>[<unit>]\n", GMT_J_OPT, GMT_Rgeoz_OPT);
+ GMT_Message (API, GMT_TIME_NONE, "\t[-A[<azimuth>]] [%s] [-C<center>] [-G[-|+|=]<fill>] [-I<az>] [%s] [-K] [-O]\n", GMT_B_OPT, GMT_Jz_OPT);
GMT_Message (API, GMT_TIME_NONE, "\t[-P] [-S[x]<lon0>/<lat0>/<length>/<units>] [-T<trackpen>] [%s]\n", GMT_U_OPT);
GMT_Message (API, GMT_TIME_NONE, "\t[%s] [-W<outlinepen>] [%s] [%s]\n\t[%s] [%s] [%s] [%s]\n\t[%s]\n\t[%s] ",
GMT_V_OPT, GMT_X_OPT, GMT_Y_OPT, GMT_bi_OPT, GMT_di_OPT, GMT_c_OPT, GMT_f_OPT, GMT_g_OPT, GMT_h_OPT);
@@ -217,6 +221,8 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\n\tOPTIONS:\n");
GMT_Option (API, "<");
GMT_Message (API, GMT_TIME_NONE, "\t-A Set azimuth for preferred positive wiggle orientation [0.0 (north)].\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t Normals to the track are mapped into a -90/+90 window centered on <azimuth>.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t If no azimuth is given then we use the azimuths as they are computed.\n");
GMT_Option (API, "B-");
GMT_Message (API, GMT_TIME_NONE, "\t-C Set center value to be removed from z before plotting [0].\n");
gmt_fill_syntax (API->GMT, 'G', "Specify color/pattern for positive and/or negative areas.");
@@ -224,6 +230,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t Prepend - to fill negative areas.\n");
GMT_Message (API, GMT_TIME_NONE, "\t Prepend = to fill positive and negative areas.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-I Set fixed projection azimuths for wiggles.\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t Azimuths of the normals to the track are reset to <az>.\n");
GMT_Option (API, "K");
GMT_Message (API, GMT_TIME_NONE, "\t-N Fill negative wiggles instead [Default is positive].\n");
GMT_Option (API, "O,P");
@@ -235,6 +242,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Option (API, "X");
GMT_Message (API, GMT_TIME_NONE, "\t-Z Give the wiggle scale in data-units per %s.\n",
API->GMT->session.unit_name[API->GMT->current.setting.proj_length_unit]);
+ GMT_Message (API, GMT_TIME_NONE, "\t Alternatively, append any unit from among %s [c].\n", GMT_DIM_UNITS_DISPLAY);
GMT_Option (API, "bi3,c,di,f,g,h,i,p,s,t,:,.");
return (GMT_MODULE_USAGE);
@@ -248,7 +256,7 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct PSWIGGLE_CTRL *Ctrl, struct GM
* returned when registering these sources/destinations with the API.
*/
- unsigned int j, k, wantx, wanty, n_errors = 0;
+ unsigned int j, k, n_slash, wantx, wanty, n_errors = 0;
bool N_active = false;
char txt_a[GMT_LEN256] = {""}, txt_b[GMT_LEN256] = {""}, *units = NULL;
struct GMT_OPTION *opt = NULL;
@@ -266,7 +274,10 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct PSWIGGLE_CTRL *Ctrl, struct GM
case 'A':
Ctrl->A.active = true;
- Ctrl->A.value = atof (opt->arg);
+ if (opt->arg[0] == '\0') /* Do not enforce a 180-degree preferred window */
+ Ctrl->A.mode = 0;
+ else
+ Ctrl->A.value = atof (opt->arg);
break;
case 'C':
Ctrl->C.active = true;
@@ -318,11 +329,12 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct PSWIGGLE_CTRL *Ctrl, struct GM
j = 0;
if (opt->arg[0] == 'x') Ctrl->S.cartesian = true, j = 1;
k = sscanf (&opt->arg[j], "%[^/]/%[^/]/%lf", txt_a, txt_b, &Ctrl->S.length);
+ for (j = n_slash = 0; opt->arg[j]; j++) if (opt->arg[j] == '/') n_slash++;
wantx = (Ctrl->S.cartesian) ? GMT_IS_FLOAT : GMT_IS_LON;
wanty = (Ctrl->S.cartesian) ? GMT_IS_FLOAT : GMT_IS_LAT;
n_errors += gmt_verify_expectations (GMT, wantx, gmt_scanf_arg (GMT, txt_a, wantx, &Ctrl->S.lon), txt_a);
n_errors += gmt_verify_expectations (GMT, wanty, gmt_scanf_arg (GMT, txt_b, wanty, &Ctrl->S.lat), txt_b);
- if ((units = strrchr (opt->arg, '/')) != NULL) {
+ if (n_slash == 3 && (units = strrchr (opt->arg, '/')) != NULL) {
units++;
Ctrl->S.label = strdup (units);
}
@@ -395,9 +407,9 @@ int GMT_pswiggle (void *V_API, int mode, void *args) {
struct GMT_DATASET *D = NULL;
struct GMT_DATATABLE *T = NULL;
struct PSWIGGLE_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -426,7 +438,7 @@ int GMT_pswiggle (void *V_API, int mode, void *args) {
gmt_plane_perspective (GMT, GMT->current.proj.z_project.view_plane, GMT->current.proj.z_level);
gmt_plotcanvas (GMT); /* Fill canvas if requested */
- Ctrl->Z.scale = 1.0 / Ctrl->Z.scale;
+ Ctrl->Z.scale = 1.0 / Ctrl->Z.scale; /* Since we were requesting the reciprocal */
switch (Ctrl->Z.unit) { /* Adjust for possible unit selection */
case 'c':
@@ -493,7 +505,7 @@ int GMT_pswiggle (void *V_API, int mode, void *args) {
if (j > 0 && gmt_M_is_dnan (z[row])) { /* Data gap, plot what we have */
negative = zz[j-1] < 0.0;
- plot_wiggle (GMT, PSL, xx, yy, zz, j, Ctrl->Z.scale, start_az, stop_az, Ctrl->I.active, fix_az, &Ctrl->G.fill[negative], &Ctrl->W.pen, &Ctrl->T.pen, Ctrl->G.active[negative], negative, Ctrl->W.active, Ctrl->T.active);
+ plot_wiggle (GMT, PSL, xx, yy, zz, j, Ctrl->Z.scale, Ctrl->A.mode, start_az, stop_az, Ctrl->I.active, fix_az, &Ctrl->G.fill[negative], &Ctrl->W.pen, &Ctrl->T.pen, Ctrl->G.active[negative], negative, Ctrl->W.active, Ctrl->T.active);
j = 0;
}
else if (!gmt_M_is_dnan (z[row-1]) && (z[row]*z[row-1] < 0.0 || z[row] == 0.0)) { /* Crossed 0, add new point and plot */
@@ -503,7 +515,7 @@ int GMT_pswiggle (void *V_API, int mode, void *args) {
zz[j++] = 0.0;
if (j == n_alloc) alloc_space (GMT, &n_alloc, &xx, &yy, &zz);
negative = zz[j-2] < 0.0;
- plot_wiggle (GMT, PSL, xx, yy, zz, j, Ctrl->Z.scale, start_az, stop_az, Ctrl->I.active, fix_az, &Ctrl->G.fill[negative], &Ctrl->W.pen, &Ctrl->T.pen, Ctrl->G.active[negative], negative, Ctrl->W.active, Ctrl->T.active);
+ plot_wiggle (GMT, PSL, xx, yy, zz, j, Ctrl->Z.scale, Ctrl->A.mode, start_az, stop_az, Ctrl->I.active, fix_az, &Ctrl->G.fill[negative], &Ctrl->W.pen, &Ctrl->T.pen, Ctrl->G.active[negative], negative, Ctrl->W.active, Ctrl->T.active);
xx[0] = xx[j-1];
yy[0] = yy[j-1];
zz[0] = zz[j-1];
@@ -518,7 +530,7 @@ int GMT_pswiggle (void *V_API, int mode, void *args) {
if (j > 1) {
negative = zz[j-1] < 0.0;
- plot_wiggle (GMT, PSL, xx, yy, zz, j, Ctrl->Z.scale, start_az, stop_az, Ctrl->I.active, fix_az, &Ctrl->G.fill[negative], &Ctrl->W.pen, &Ctrl->T.pen, Ctrl->G.active[negative], negative, Ctrl->W.active, Ctrl->T.active);
+ plot_wiggle (GMT, PSL, xx, yy, zz, j, Ctrl->Z.scale, Ctrl->A.mode, start_az, stop_az, Ctrl->I.active, fix_az, &Ctrl->G.fill[negative], &Ctrl->W.pen, &Ctrl->T.pen, Ctrl->G.active[negative], negative, Ctrl->W.active, Ctrl->T.active);
}
}
}
diff --git a/src/psxy.c b/src/psxy.c
index aebb310..3374c48 100644
--- a/src/psxy.c
+++ b/src/psxy.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psxy.c 17185 2016-10-13 03:09:39Z pwessel $
+ * $Id: psxy.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -765,9 +765,9 @@ int GMT_psxy (void *V_API, int mode, void *args) {
struct GMT_TEXTSET *Decorate = NULL;
struct GMT_DATASEGMENT *L = NULL;
struct PSXY_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
void *record = NULL; /* Opaque pointer to either a text (buffer) or double (in) record */
@@ -863,8 +863,8 @@ int GMT_psxy (void *V_API, int mode, void *args) {
if (Ctrl->E.active) {
if (S.read_size) GMT->current.io.col_type[GMT_IN][ex1] = GMT_IS_DIMENSION; /* Must read symbol size from data record */
if (def_err_xy && GMT->current.setting.io_lonlat_toggle[GMT_IN]) { /* With -:, -E should become -Eyx */
- uint_swap (xy_errors[GMT_X], xy_errors[GMT_Y]);
- uint_swap (error_type[GMT_X], error_type[GMT_Y]);
+ gmt_M_uint_swap (xy_errors[GMT_X], xy_errors[GMT_Y]);
+ gmt_M_uint_swap (error_type[GMT_X], error_type[GMT_Y]);
}
if (xy_errors[GMT_X]) n_cols_start += error_cols[error_type[GMT_X]], error_x = true;
if (xy_errors[GMT_Y]) n_cols_start += error_cols[error_type[GMT_Y]], error_y = true;
@@ -897,7 +897,7 @@ int GMT_psxy (void *V_API, int mode, void *args) {
if (S.symbol == GMT_SYMBOL_QUOTED_LINE) {
if (gmt_contlabel_prep (GMT, &S.G, NULL)) Return (GMT_RUNTIME_ERROR); /* Needed after map_setup */
- penset_OK = false; /* The pen for quoted lines are set within the PSL code itself so we dont do it here in psxy */
+ penset_OK = false; /* The pen for quoted lines are set within the PSL code itself so we don't do it here in psxy */
if (S.G.delay) gmt_map_basemap (GMT); /* Must do it here due to clipping */
}
else if (S.symbol == GMT_SYMBOL_DECORATED_LINE) {
@@ -959,7 +959,7 @@ int GMT_psxy (void *V_API, int mode, void *args) {
Return (error);
}
if (not_line) { /* Symbol part (not counting GMT_SYMBOL_FRONT, GMT_SYMBOL_QUOTED_LINE, GMT_SYMBOL_DECORATED_LINE) */
- bool periodic = false;
+ bool periodic = false, delayed_unit_scaling = false;
unsigned int n_warn[3] = {0, 0, 0}, set_type, warn, item, n_times, read_mode;
double in2[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, *p_in = GMT->current.io.curr_rec;
double xpos[2], width = 0.0;
@@ -980,7 +980,7 @@ int GMT_psxy (void *V_API, int mode, void *args) {
}
else { /* Here we can process data records (ASCII or binary) */
set_type = GMT_IS_DATASET;
- read_mode = GMT_READ_DOUBLE;
+ read_mode = GMT_READ_DATA;
}
if (GMT_Init_IO (API, set_type, geometry, GMT_IN, GMT_ADD_DEFAULT, 0, options) != GMT_NOERROR) { /* Register data input */
Return (API->error);
@@ -990,6 +990,11 @@ int GMT_psxy (void *V_API, int mode, void *args) {
}
PSL_command (GMT->PSL, "V\n");
if ((S.symbol == GMT_SYMBOL_ELLIPSE || S.symbol == GMT_SYMBOL_ROTRECT) && S.n_required <= 1) p_in = in2;
+
+ if (S.read_size && GMT->current.io.col[GMT_IN][ex1].convert) { /* Doing math on the size column, must delay unit conversion unless inch */
+ GMT->current.io.col_type[GMT_IN][ex1] = GMT_IS_FLOAT;
+ delayed_unit_scaling = (S.u_set && S.u != GMT_INCH);
+ }
do { /* Keep returning records until we reach EOF */
if ((record = GMT_Get_Record (API, read_mode, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
@@ -1154,7 +1159,10 @@ int GMT_psxy (void *V_API, int mode, void *args) {
bcol = (S.read_size) ? ex2 : ex1;
S.base = in[bcol]; /* Got base from input column */
}
- if (S.read_size) S.size_x = in[ex1] * S.factor; /* Got size from input column; scale by factor if area unifier is on */
+ if (S.read_size) {
+ S.size_x = in[ex1] * S.factor; /* Got size from input column; scale by factor if area unifier is on */
+ if (delayed_unit_scaling) S.size_x *= GMT->session.u2u[S.u][GMT_INCH];
+ }
dim[0] = S.size_x;
/* For global periodic maps, symbols plotted close to a periodic boundary may be clipped and should appear
@@ -1449,7 +1457,7 @@ int GMT_psxy (void *V_API, int mode, void *args) {
}
}
else { /* Line/polygon part */
- uint64_t seg, seg_out = 0;
+ uint64_t seg, seg_out = 0, n_new;
bool duplicate, resampled;
struct GMT_DATASET *D = NULL; /* Pointer to GMT multisegment table(s) */
@@ -1506,9 +1514,14 @@ int GMT_psxy (void *V_API, int mode, void *args) {
if (L->n_rows == 2) { /* Given endpoints we need to resample in order to trim */
/* The whole trimming stuff requires at least 2 points per line so we resample */
if (gmt_M_is_geographic (GMT, GMT_IN))
- L->n_rows = gmt_fix_up_path (GMT, &L->data[GMT_X], &L->data[GMT_Y], L->n_rows, Ctrl->A.step, Ctrl->A.mode);
+ n_new = gmt_fix_up_path (GMT, &L->data[GMT_X], &L->data[GMT_Y], L->n_rows, Ctrl->A.step, Ctrl->A.mode);
else
- L->n_rows = gmt_resample_path (GMT, &L->data[GMT_X], &L->data[GMT_Y], L->n_rows, 0.5 * hypot (L->data[GMT_X][1]-L->data[GMT_X][0], L->data[GMT_Y][1]-L->data[GMT_Y][0]), GMT_TRACK_FILL);
+ n_new = gmt_resample_path (GMT, &L->data[GMT_X], &L->data[GMT_Y], L->n_rows, 0.5 * hypot (L->data[GMT_X][1]-L->data[GMT_X][0], L->data[GMT_Y][1]-L->data[GMT_Y][0]), GMT_TRACK_FILL);
+ if (n_new == 0) {
+ Return (GMT_RUNTIME_ERROR);
+ }
+ L->n_rows = n_new;
+ gmt_set_seg_minmax (GMT, D->geometry, L); /* Update min/max */
resampled = true; /* To avoid doing it twice */
}
if (gmt_trim_line (GMT, &L->data[GMT_X], &L->data[GMT_Y], &L->n_rows, ¤t_pen)) continue; /* Trimmed away completely */
@@ -1584,8 +1597,13 @@ int GMT_psxy (void *V_API, int mode, void *args) {
L->data[GMT_Y][L->n_rows-1] = L->data[GMT_Y][0];
}
- if (GMT->current.map.path_mode == GMT_RESAMPLE_PATH && !resampled) /* Resample if spacing is too coarse */
- L->n_rows = gmt_fix_up_path (GMT, &L->data[GMT_X], &L->data[GMT_Y], L->n_rows, Ctrl->A.step, Ctrl->A.mode);
+ if (GMT->current.map.path_mode == GMT_RESAMPLE_PATH && !resampled) { /* Resample if spacing is too coarse */
+ if ((n_new = gmt_fix_up_path (GMT, &L->data[GMT_X], &L->data[GMT_Y], L->n_rows, Ctrl->A.step, Ctrl->A.mode)) == 0) {
+ Return (GMT_RUNTIME_ERROR);
+ }
+ L->n_rows = n_new;
+ gmt_set_seg_minmax (GMT, D->geometry, L); /* Update min/max */
+ }
if (polygon) { /* Want a closed polygon (with or without fill and with or without outline) */
gmt_setfill (GMT, ¤t_fill, outline_active);
diff --git a/src/psxyz.c b/src/psxyz.c
index b17ea08..fe49ea4 100644
--- a/src/psxyz.c
+++ b/src/psxyz.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: psxyz.c 17185 2016-10-13 03:09:39Z pwessel $
+ * $Id: psxyz.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -438,21 +438,21 @@ GMT_LOCAL void column3D (struct GMT_CTRL *GMT, struct PSL_CTRL *PSL, double x, d
switch (GMT->current.proj.z_project.face[i]) {
case 0: /* yz plane positive side */
sign = 1.0;
- /* Purposefully fall throught after flipping the sign */
+ /* Purposefully fall through after flipping the sign */
case 1: /* negative side */
gmt_plane_perspective (GMT, GMT_X, x + sign * x_size);
PSL_plotbox (PSL, y - y_size, z - z_size, y + y_size, z + z_size);
break;
case 2: /* xz plane positive side */
sign = 1.0;
- /* Purposefully fall throught after flipping the sign */
+ /* Purposefully fall through after flipping the sign */
case 3: /* negative side */
gmt_plane_perspective (GMT, GMT_Y, y + sign * y_size);
PSL_plotbox (PSL, x - x_size, z - z_size, x + x_size, z + z_size);
break;
case 4: /* xy plane positive side */
sign = 1.0;
- /* Purposefully fall throught after flipping the sign */
+ /* Purposefully fall through after flipping the sign */
case 5: /* negative side */
gmt_plane_perspective (GMT, GMT_Z, z + sign * z_size);
PSL_plotbox (PSL, x - x_size, y - y_size, x + x_size, y + y_size);
@@ -519,9 +519,9 @@ int GMT_psxyz (void *V_API, int mode, void *args) {
struct GMT_DATASEGMENT *L = NULL;
struct PSXYZ_DATA *data = NULL;
struct PSXYZ_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
@@ -685,12 +685,12 @@ int GMT_psxyz (void *V_API, int mode, void *args) {
}
else { /* Here we can process data records (ASCII or binary) */
set_type = GMT_IS_DATASET;
- read_mode = GMT_READ_DOUBLE;
+ read_mode = GMT_READ_DATA;
}
in = GMT->current.io.curr_rec;
if (not_line) { /* symbol part (not counting GMT_SYMBOL_FRONT and GMT_SYMBOL_QUOTED_LINE) */
- bool periodic = false;
+ bool periodic = false, delayed_unit_scaling[2] = {false, false};
unsigned int n_warn[3] = {0, 0, 0}, warn, item, n_times;
double in2[7] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, *p_in = GMT->current.io.curr_rec;
double xpos[2], width, d;
@@ -720,6 +720,15 @@ int GMT_psxyz (void *V_API, int mode, void *args) {
else
GMT->current.io.col_type[GMT_IN][ex2] = GMT->current.io.col_type[GMT_IN][ex3] = GMT_IS_GEODIMENSION;
}
+ if (S.read_size && GMT->current.io.col[GMT_IN][ex1].convert) { /* Doing math on the size column, must delay unit conversion unless inch */
+ GMT->current.io.col_type[GMT_IN][ex1] = GMT_IS_FLOAT;
+ delayed_unit_scaling[GMT_X] = (S.u_set && S.u != GMT_INCH);
+ }
+ if (S.read_size && GMT->current.io.col[GMT_IN][ex2].convert) { /* Doing math on the size column, must delay unit conversion unless inch */
+ GMT->current.io.col_type[GMT_IN][ex2] = GMT_IS_FLOAT;
+ delayed_unit_scaling[GMT_Y] = (S.u_set && S.u != GMT_INCH);
+ }
+
if (!read_symbol) API->object[API->current_item[GMT_IN]]->n_expected_fields = n_needed;
n = 0;
do { /* Keep returning records until we reach EOF */
@@ -821,7 +830,9 @@ int GMT_psxyz (void *V_API, int mode, void *args) {
}
if (S.read_size) { /* Update sizes from input */
S.size_x = in[ex1] * S.factor;
+ if (delayed_unit_scaling[GMT_X]) S.size_x *= GMT->session.u2u[S.u][GMT_INCH];
S.size_y = in[ex2];
+ if (delayed_unit_scaling[GMT_Y]) S.size_y *= GMT->session.u2u[S.u][GMT_INCH];
}
data[n].dim[0] = S.size_x;
data[n].dim[1] = S.size_y;
diff --git a/src/sample1d.c b/src/sample1d.c
index 61f54f7..628ba72 100644
--- a/src/sample1d.c
+++ b/src/sample1d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: sample1d.c 17171 2016-10-05 17:21:21Z jluis $
+ * $Id: sample1d.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/script2verbatim.c b/src/script2verbatim.c
index 8f3fc49..8501600 100644
--- a/src/script2verbatim.c
+++ b/src/script2verbatim.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: script2verbatim.c 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: script2verbatim.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/segy/CMakeLists.txt b/src/segy/CMakeLists.txt
index c832ab2..600b899 100644
--- a/src/segy/CMakeLists.txt
+++ b/src/segy/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/segy/pssegy.c b/src/segy/pssegy.c
index 77b80fb..f7755cd 100644
--- a/src/segy/pssegy.c
+++ b/src/segy/pssegy.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pssegy.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: pssegy.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by T. Henstock
+ * Copyright (c) 1999-2017 by T. Henstock
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/* pssegy program to plot segy files in postscript with variable trace spacing option
@@ -468,9 +468,9 @@ int GMT_pssegy (void *V_API, int mode, void *args) {
FILE *fpi = NULL, *fpt = NULL;
struct PSSEGY_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
diff --git a/src/segy/pssegyz.c b/src/segy/pssegyz.c
index 40bfb82..6a0b18b 100644
--- a/src/segy/pssegyz.c
+++ b/src/segy/pssegyz.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: pssegyz.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: pssegyz.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by T. Henstock
+ * Copyright (c) 1999-2017 by T. Henstock
* See README file for copying and redistribution conditions.
*--------------------------------------------------------------------*/
/* pssegyzz program to plot segy files in 3d in postscript with variable trace spacing option
@@ -483,7 +483,7 @@ GMT_LOCAL void segyz_shade_bmap (struct GMT_CTRL *GMT, double x0, double y0, flo
double xp[NPTS], yp[NPTS], interp, slope01, slope02, slope12, slope13, slope23, slope03;
double slope0, slope1, slope2, slope3;
- if (data0 == 0.0 && data1 == 0.0) return; /* probably shouldn't strictly, but pathological enough I dont really want to deal with it! */
+ if (data0 == 0.0 && data1 == 0.0) return; /* probably shouldn't strictly, but pathological enough I don't really want to deal with it! */
interp = 0.0;
if ((data0 * data1) < 0.0) {
@@ -509,8 +509,8 @@ GMT_LOCAL void segyz_shade_bmap (struct GMT_CTRL *GMT, double x0, double y0, flo
for (ix = 0; ix < NPTS-1; ix++)
for (iy = ix + 1; iy < NPTS; iy++)
if (yp[ix] > yp[iy]) {
- double_swap (yp[iy], yp[ix]);
- double_swap (xp[iy], xp[ix]);
+ gmt_M_double_swap (yp[iy], yp[ix]);
+ gmt_M_double_swap (xp[iy], xp[ix]);
}
@@ -591,9 +591,9 @@ int GMT_pssegyz (void *V_API, int mode, void *args) {
SEGYREEL binhead;
struct PSSEGYZ_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
- struct PSL_CTRL *PSL = NULL; /* General PSL interal parameters */
+ struct PSL_CTRL *PSL = NULL; /* General PSL internal parameters */
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
/*----------------------- Standard module initialization and parsing ----------------------*/
diff --git a/src/segy/segy2grd.c b/src/segy/segy2grd.c
index 84ff80a..3f105f9 100644
--- a/src/segy/segy2grd.c
+++ b/src/segy/segy2grd.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: segy2grd.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: segy2grd.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by T. Henstock
+ * Copyright (c) 1991-2017 by T. Henstock
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -295,7 +295,7 @@ int GMT_segy2grd (void *V_API, int mode, void *args) {
SEGYREEL binhead;
struct SEGY2GRD_CTRL *Ctrl = NULL;
- struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT interal parameters */
+ struct GMT_CTRL *GMT = NULL, *GMT_cpy = NULL; /* General GMT internal parameters */
struct GMT_OPTION *options = NULL;
struct GMTAPI_CTRL *API = gmt_get_api_ptr (V_API); /* Cast from void to GMTAPI_CTRL pointer */
@@ -525,7 +525,7 @@ int GMT_segy2grd (void *V_API, int mode, void *args) {
jj = (unsigned int)gmt_M_grd_y_to_row (GMT, yval, Grid->header);
if (jj == Grid->header->n_rows) jj--, n_confused++;
ij = gmt_M_ij0 (Grid->header, jj, ii);
- Grid->data[ij] += data[isamp]; /* Add up incase we must average */
+ Grid->data[ij] += data[isamp]; /* Add up in case we must average */
flag[ij]++;
n_used++;
}
diff --git a/src/spectrum1d.c b/src/spectrum1d.c
index 33de41c..74fcb11 100644
--- a/src/spectrum1d.c
+++ b/src/spectrum1d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: spectrum1d.c 16835 2016-07-19 03:18:51Z pwessel $
+ * $Id: spectrum1d.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/sph2grd.c b/src/sph2grd.c
index be8233a..104a219 100644
--- a/src/sph2grd.c
+++ b/src/sph2grd.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: sph2grd.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: sph2grd.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -320,31 +320,33 @@ int GMT_sph2grd (void *V_API, int mode, void *args) {
/* Place the coefficients into the C and S arrays and apply filtering, if selected */
- for (tbl = 0; tbl < D->n_tables; tbl++) for (seg = 0; seg < D->table[tbl]->n_segments; seg++) {
- T = D->table[tbl]->segment[seg]; /* Short-hand notation for current segment */
- for (drow = 0; drow < T->n_rows; drow++) {
- L = irint (T->data[0][drow]);
- if (L > L_max) continue; /* Skip stuff beyond the high cut-off filter */
- if (L < L_min) continue; /* Skip stuff beyond the low cut-off filter */
- M = irint (T->data[1][drow]);
- C[L][M] = T->data[2][drow];
- S[L][M] = T->data[3][drow];
- if (!Ctrl->F.active) continue; /* No filtering selected */
- if (Ctrl->F.mode == SPH2GRD_BANDPASS) { /* Note: L_min/L_max have already taken care of the low-cut and high-cut */
- if (L < Ctrl->F.lp) /* Taper the low order components */
- filter = 0.5 * (1.0 + cos (M_PI * (Ctrl->F.lp - L) / (Ctrl->F.lp - Ctrl->F.lc)));
- else if (L > Ctrl->F.hp) /* Taper the high order components */
- filter = 0.5 * (1.0 + cos (M_PI * (L - Ctrl->F.hp) / (Ctrl->F.hc - Ctrl->F.hp)));
- else /* We are inside the band where filter == 1.0 */
- continue; /* No need to scale by 1 */
- }
- else { /* Gaussian filter(s) */
- lo = (Ctrl->F.lc > 0.0) ? exp (-M_LN2 * pow (L / Ctrl->F.lc, 2.0)) : 0.0; /* Low-pass part */
- hi = (Ctrl->F.hp < DBL_MAX) ? exp (-M_LN2 * pow (L / Ctrl->F.hp, 2.0)) : 1.0; /* Hi-pass given by its complementary low-pass */
- filter = hi - lo; /* Combined filter */
+ for (tbl = 0; tbl < D->n_tables; tbl++) {
+ for (seg = 0; seg < D->table[tbl]->n_segments; seg++) {
+ T = D->table[tbl]->segment[seg]; /* Short-hand notation for current segment */
+ for (drow = 0; drow < T->n_rows; drow++) {
+ L = irint (T->data[0][drow]);
+ if (L > L_max) continue; /* Skip stuff beyond the high cut-off filter */
+ if (L < L_min) continue; /* Skip stuff beyond the low cut-off filter */
+ M = irint (T->data[1][drow]);
+ C[L][M] = T->data[2][drow];
+ S[L][M] = T->data[3][drow];
+ if (!Ctrl->F.active) continue; /* No filtering selected */
+ if (Ctrl->F.mode == SPH2GRD_BANDPASS) { /* Note: L_min/L_max have already taken care of the low-cut and high-cut */
+ if (L < Ctrl->F.lp) /* Taper the low order components */
+ filter = 0.5 * (1.0 + cos (M_PI * (Ctrl->F.lp - L) / (Ctrl->F.lp - Ctrl->F.lc)));
+ else if (L > Ctrl->F.hp) /* Taper the high order components */
+ filter = 0.5 * (1.0 + cos (M_PI * (L - Ctrl->F.hp) / (Ctrl->F.hc - Ctrl->F.hp)));
+ else /* We are inside the band where filter == 1.0 */
+ continue; /* No need to scale by 1 */
+ }
+ else { /* Gaussian filter(s) */
+ lo = (Ctrl->F.lc > 0.0) ? exp (-M_LN2 * pow (L / Ctrl->F.lc, 2.0)) : 0.0; /* Low-pass part */
+ hi = (Ctrl->F.hp < DBL_MAX) ? exp (-M_LN2 * pow (L / Ctrl->F.hp, 2.0)) : 1.0; /* Hi-pass given by its complementary low-pass */
+ filter = hi - lo; /* Combined filter */
+ }
+ C[L][M] *= filter;
+ S[L][M] *= filter;
}
- C[L][M] *= filter;
- S[L][M] *= filter;
}
}
diff --git a/src/sphdistance.c b/src/sphdistance.c
index 81c61f0..8486c15 100644
--- a/src/sphdistance.c
+++ b/src/sphdistance.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: sphdistance.c 16895 2016-08-12 02:52:43Z pwessel $
+ * $Id: sphdistance.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 2008-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 2008-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -37,7 +37,7 @@
#define THIS_MODULE_NAME "sphdistance"
#define THIS_MODULE_LIB "core"
-#define THIS_MODULE_PURPOSE "Create Voronoi distance, node, or nearest-neighbor grid on a sphere"
+#define THIS_MODULE_PURPOSE "Create Voronoi distance, node, or natural nearest-neighbor grid on a sphere"
#define THIS_MODULE_KEYS "<D{,ND(,QD(,GG},Q-("
#include "gmt_dev.h"
@@ -92,7 +92,7 @@ GMT_LOCAL void prepare_polygon (struct GMT_CTRL *GMT, struct GMT_DATASEGMENT *P)
uint64_t row;
double lon_sum = 0.0, lat_sum = 0.0, dlon;
- gmt_set_seg_minmax (GMT, P); /* Set the domain of the segment */
+ gmt_set_seg_minmax (GMT, GMT_IS_POLY, P); /* Set the domain of the segment */
/* Then loop over points to accumulate sums */
@@ -157,7 +157,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Message (API, GMT_TIME_NONE, "\t-C Conserve memory (Converts lon/lat <--> x/y/z when needed) [store both in memory]. Not used with -Q.\n");
GMT_Message (API, GMT_TIME_NONE, "\t-E Specify the quantity that should be assigned to the grid nodes:\n");
GMT_Message (API, GMT_TIME_NONE, "\t -En The Voronoi polygon ID.\n");
- GMT_Message (API, GMT_TIME_NONE, "\t -Ez The z-value of the Voronoi center node (NN gridding).\n");
+ GMT_Message (API, GMT_TIME_NONE, "\t -Ez The z-value of the Voronoi center node (natural NN gridding).\n");
GMT_Message (API, GMT_TIME_NONE, "\t -Ed The distance to the nearest data point [Default].\n");
GMT_Message (API, GMT_TIME_NONE, "\t Optionally append resampling interval in spherical degrees for polygon arcs [1].\n");
GMT_Message (API, GMT_TIME_NONE, "\t-L Set distance unit arc (d)egree, m(e)ter, (f)eet, (k)m, arc (m)inute, (M)ile, (n)autical mile,\n\t or arc (s)econd [e].\n");
@@ -267,7 +267,7 @@ int GMT_sphdistance (void *V_API, int mode, void *args) {
int error = 0, s_row, south_row, north_row, w_col, e_col;
unsigned int row, col, p_col, west_col, east_col, nx1, n_in = 0;
- uint64_t n_dup = 0, n_set = 0, side, ij, node, n = 0;
+ uint64_t n_dup = 0, n_set = 0, side, ij, node, n_new, n = 0;
uint64_t vertex, node_stop, node_new, vertex_new, node_last, vertex_last;
size_t n_alloc, p_alloc = 0;
@@ -400,7 +400,7 @@ int GMT_sphdistance (void *V_API, int mode, void *args) {
n = 0;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_table_header (GMT)) /* Skip all table headers */
@@ -537,7 +537,12 @@ int GMT_sphdistance (void *V_API, int mode, void *args) {
/* Here we have the polygon in P */
- P->n_rows = gmt_fix_up_path (GMT, &P->data[GMT_X], &P->data[GMT_Y], P->n_rows, Ctrl->E.dist, GMT_STAIRS_OFF);
+ if ((n_new = gmt_fix_up_path (GMT, &P->data[GMT_X], &P->data[GMT_Y], P->n_rows, Ctrl->E.dist, GMT_STAIRS_OFF)) == 0) {
+ gmt_M_free (GMT, P);
+ gmt_M_free (GMT, grid_lon); gmt_M_free (GMT, grid_lat);
+ Return (GMT_RUNTIME_ERROR);
+ }
+ P->n_rows = n_new;
prepare_polygon (GMT, P); /* Determine the enclosing sector */
south_row = (int)gmt_M_grd_y_to_row (GMT, P->min[GMT_Y], Grid->header);
diff --git a/src/sphinterpolate.c b/src/sphinterpolate.c
index 0e7c950..0ff4742 100644
--- a/src/sphinterpolate.c
+++ b/src/sphinterpolate.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: sphinterpolate.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: sphinterpolate.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 2008-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 2008-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -18,7 +18,7 @@
/*
* Spherical gridding in tension. We read input data and want to create
* a grid using various interpolants on a sphere. This program relies
- * on two Fortan F77 libraries by Renka:
+ * on two Fortran F77 libraries by Renka:
* Renka, R, J,, 1997, Algorithm 772: STRIPACK: Delaunay Triangulation
* and Voronoi Diagram on the Surface of a Sphere, AMC Trans. Math.
* Software, 23 (3), 416-434.
@@ -272,7 +272,7 @@ int GMT_sphinterpolate (void *V_API, int mode, void *args) {
w_min = DBL_MAX; w_max = -DBL_MAX;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, xx); gmt_M_free (GMT, yy);
gmt_M_free (GMT, zz); gmt_M_free (GMT, ww);
diff --git a/src/sphtriangulate.c b/src/sphtriangulate.c
index 3a5707f..f68746e 100644
--- a/src/sphtriangulate.c
+++ b/src/sphtriangulate.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: sphtriangulate.c 16697 2016-07-03 06:17:50Z pwessel $
+ * $Id: sphtriangulate.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 2008-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 2008-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -163,7 +163,7 @@ GMT_LOCAL int stripack_delaunay_output (struct GMT_CTRL *GMT, double *lon, doubl
}
for (kk = 0; kk < n_arcs; ++kk)
if (arc[kk].begin > arc[kk].end)
- uint64_swap (arc[kk].begin, arc[kk].end);
+ gmt_M_uint64_swap (arc[kk].begin, arc[kk].end);
/* Sort and eliminate duplicate arcs */
qsort (arc, n_arcs, sizeof (struct STRPACK_ARC), sph_compare_arc);
@@ -301,6 +301,10 @@ GMT_LOCAL int stripack_voronoi_output (struct GMT_CTRL *GMT, uint64_t n, double
} while (node_new != node_stop);
if (!get_arcs) { /* Finalize the polygon information */
+ /* Explicitly close the polygon */
+ plon[vertex] = plon[0];
+ plat[vertex] = plat[0];
+ vertex++;
S[0] = Dout[0]->table[0]->segment[node]; /* Local shorthand to current output segment */
if (get_area) {
area_km2 = area_polygon * R2; /* Get correct area units */
@@ -326,7 +330,7 @@ GMT_LOCAL int stripack_voronoi_output (struct GMT_CTRL *GMT, uint64_t n, double
if (get_arcs) { /* Process arcs */
for (k = 0; k < n_arcs; ++k)
if (arc[k].begin > arc[k].end)
- uint64_swap (arc[k].begin, arc[k].end);
+ gmt_M_uint64_swap (arc[k].begin, arc[k].end);
/* Sort and exclude duplicates */
qsort (arc, n_arcs, sizeof (struct STRPACK_ARC), sph_compare_arc);
@@ -588,7 +592,7 @@ int GMT_sphtriangulate (void *V_API, int mode, void *args) {
n = 0;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, lon); gmt_M_free (GMT, lat);
gmt_M_free (GMT, xx); gmt_M_free (GMT, yy);
diff --git a/src/splitxyz.c b/src/splitxyz.c
index 4e1e33d..fa879fe 100644
--- a/src/splitxyz.c
+++ b/src/splitxyz.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: splitxyz.c 16835 2016-07-19 03:18:51Z pwessel $
+ * $Id: splitxyz.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/spotter/CMakeLists.txt b/src/spotter/CMakeLists.txt
index 798b32a..71ce050 100644
--- a/src/spotter/CMakeLists.txt
+++ b/src/spotter/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 16974 2016-08-19 23:03:49Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/spotter/backtracker.c b/src/spotter/backtracker.c
index 2b7d049..a19bfc7 100644
--- a/src/spotter/backtracker.c
+++ b/src/spotter/backtracker.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: backtracker.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: backtracker.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -372,6 +372,7 @@ int GMT_backtracker (void *V_API, int mode, void *args) {
uint64_t i, j;
uint64_t n_out, n_expected_fields, col;
unsigned int n_stages = 0; /* Number of stage poles */
+ unsigned int geometry;
int n_fields, error; /* Misc. signed counters */
int spotter_way = 0; /* Either SPOTTER_FWD or SPOTTER_BACK */
bool make_path = false; /* true means create continuous path, false works on discrete points */
@@ -452,6 +453,7 @@ int GMT_backtracker (void *V_API, int mode, void *args) {
n_out = (Ctrl->S.active) ? 4 : 3; /* Append smt id number as 4th column when individual files are requested */
if (Ctrl->W.active) n_out = 5 + !(Ctrl->W.mode == 0);
+ geometry = (make_path) ? GMT_IS_LINE : GMT_IS_POINT;
/* Specify input and output expected columns */
if ((error = gmt_set_cols (GMT, GMT_IN, n_expected_fields)) != GMT_NOERROR) {
@@ -477,10 +479,13 @@ int GMT_backtracker (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, geometry) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
do { /* Keep returning records until we reach EOF */
n_read++;
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, &n_fields)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, &n_fields)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_table_header (GMT)) { /* Skip all table headers */
@@ -504,7 +509,7 @@ int GMT_backtracker (void *V_API, int mode, void *args) {
gmt_cart_to_geo (GMT, &out[GMT_Y], &out[GMT_X], y, true); /* Recover lon lat representation; true to get degrees */
out[GMT_Y] = gmt_lat_swap (GMT, out[GMT_Y], GMT_LATSWAP_O2G); /* Convert back to geodetic */
gmt_M_memcpy (&out[GMT_Z], &in[GMT_Z], n_fields - 2, double);
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
continue;
}
@@ -567,7 +572,7 @@ int GMT_backtracker (void *V_API, int mode, void *args) {
out[GMT_X] = lon * R2D;
out[GMT_Y] = gmt_lat_swap (GMT, lat * R2D, GMT_LATSWAP_O2G); /* Convert back to geodetic */
out[GMT_Z] = t;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
t += Ctrl->L.d_km; /* dt, actually */
}
t -= Ctrl->L.d_km; /* Last time used in the loop */
@@ -582,7 +587,7 @@ int GMT_backtracker (void *V_API, int mode, void *args) {
out[GMT_X] = lon * R2D;
out[GMT_Y] = gmt_lat_swap (GMT, lat * R2D, GMT_LATSWAP_O2G); /* Convert back to geodetic */
out[GMT_Z] = t_end;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
else {
@@ -600,7 +605,7 @@ int GMT_backtracker (void *V_API, int mode, void *args) {
if (Ctrl->A.mode && (out[GMT_Z] < t_low || out[GMT_Z] > t_high)) continue;
out[GMT_X] = c[i] * R2D;
out[GMT_Y] = gmt_lat_swap (GMT, c[i+1] * R2D, GMT_LATSWAP_O2G); /* Convert back to geodetic */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
gmt_M_free (GMT, c);
@@ -623,7 +628,7 @@ int GMT_backtracker (void *V_API, int mode, void *args) {
for (col = 2; col < n_expected_fields; col++) out[col] = in[col];
}
out[GMT_Y] = gmt_lat_swap (GMT, out[GMT_Y], GMT_LATSWAP_O2G); /* Convert back to geodetic */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
n_points++;
diff --git a/src/spotter/gmtpmodeler.c b/src/spotter/gmtpmodeler.c
index 2ff5352..7d17736 100644
--- a/src/spotter/gmtpmodeler.c
+++ b/src/spotter/gmtpmodeler.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: gmtpmodeler.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: gmtpmodeler.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -314,6 +314,9 @@ int GMT_gmtpmodeler (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
gmt_init_distaz (GMT, 'd', GMT_GREATCIRCLE, GMT_MAP_DIST); /* Great circle distances in degrees */
if (Ctrl->S.center) GMT->current.io.geo.range = GMT_IS_M180_TO_P180_RANGE; /* Need +- around 0 here */
@@ -333,7 +336,7 @@ int GMT_gmtpmodeler (void *V_API, int mode, void *args) {
do { /* Keep returning records until we reach EOF */
n_read++;
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, &n_fields)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, &n_fields)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_table_header (GMT)) { /* Skip all table headers */
@@ -445,7 +448,7 @@ int GMT_gmtpmodeler (void *V_API, int mode, void *args) {
}
out[k+3] = value;
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
} while (true);
if (GMT_End_IO (API, GMT_IN, 0) != GMT_NOERROR) { /* Disables further data input */
diff --git a/src/spotter/grdpmodeler.c b/src/spotter/grdpmodeler.c
index 1d16ace..8b7a465 100644
--- a/src/spotter/grdpmodeler.c
+++ b/src/spotter/grdpmodeler.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdpmodeler.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdpmodeler.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -396,6 +396,9 @@ int GMT_grdpmodeler (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
GMT_Report (API, GMT_MSG_VERBOSE, "Evaluate %d model predictions based on %s\n", Ctrl->S.n_items, Ctrl->E.rot.file);
out = gmt_M_memory (GMT, NULL, Ctrl->S.n_items + 3, double);
}
@@ -507,7 +510,7 @@ int GMT_grdpmodeler (void *V_API, int mode, void *args) {
else
out[k+3] = value;
}
- if (!Ctrl->G.active) GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ if (!Ctrl->G.active) GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
if (n_outside) GMT_Report (API, GMT_MSG_VERBOSE, "%" PRIu64 " points fell outside the polygonal boundary\n", n_outside);
diff --git a/src/spotter/grdrotater.c b/src/spotter/grdrotater.c
index 08097ef..6152828 100644
--- a/src/spotter/grdrotater.c
+++ b/src/spotter/grdrotater.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdrotater.c 16846 2016-07-22 05:59:07Z pwessel $
+ * $Id: grdrotater.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -525,7 +525,7 @@ int GMT_grdrotater (void *V_API, int mode, void *args) {
}
gmt_set_seg_polar (GMT, Sr); /* Determine if it is a polar cap */
}
- gmt_set_tbl_minmax (GMT, polr); /* Update table domain */
+ gmt_set_tbl_minmax (GMT, GMT_IS_POLY, polr); /* Update table domain */
if (!Ctrl->N.active && not_global) {
char dfile[GMT_BUFSIZ] = {""}, *file = NULL;
if (Ctrl->T.n_times > 1) {
diff --git a/src/spotter/grdspotter.c b/src/spotter/grdspotter.c
index 40553e3..ba3c49c 100644
--- a/src/spotter/grdspotter.c
+++ b/src/spotter/grdspotter.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: grdspotter.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: grdspotter.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -835,7 +835,7 @@ int GMT_grdspotter (void *V_API, int mode, void *args) {
GMT_Report (API, GMT_MSG_VERBOSE, "Start z-slice CVA calculations\n");
for (len = strlen (Ctrl->G.file); len > 0 && Ctrl->G.file[len] != '.'; len--);
- if (Ctrl->G.file[len] == '.') { /* Make a filename template from the CVA filename using the period as delimeter */
+ if (Ctrl->G.file[len] == '.') { /* Make a filename template from the CVA filename using the period as delimiter */
strncpy (format, Ctrl->G.file, len); /* Should keep the prefix from a file called prefix.ext */
strcat (format, "_%%d"); /* Make filenames like prefix_#.ext */
strcat (format, &Ctrl->G.file[len]); /* Should add the extension from said file */
@@ -1000,6 +1000,11 @@ int GMT_grdspotter (void *V_API, int mode, void *args) {
gmt_M_free (GMT, y_smt); gmt_M_free (GMT, lat_area);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, x_cva); gmt_M_free (GMT, y_cva);
+ gmt_M_free (GMT, y_smt); gmt_M_free (GMT, lat_area);
+ Return (API->error);
+ }
/* Now do bootstrap sampling of flowlines */
@@ -1043,7 +1048,7 @@ int GMT_grdspotter (void *V_API, int mode, void *args) {
out[1] = gmt_M_grd_row_to_y (GMT, row, G->header);
out[2] = CVA_max;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
GMT_Report (API, GMT_MSG_VERBOSE, "Bootstrap try %d\n", Ctrl->W.n_try);
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
diff --git a/src/spotter/hotspotter.c b/src/spotter/hotspotter.c
index daf99a2..fb47d99 100644
--- a/src/spotter/hotspotter.c
+++ b/src/spotter/hotspotter.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: hotspotter.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: hotspotter.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -427,7 +427,7 @@ int GMT_hotspotter (void *V_API, int mode, void *args) {
do { /* Keep returning records until we reach EOF */
n_read++;
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, processed_node);
Return (GMT_RUNTIME_ERROR);
diff --git a/src/spotter/libspotter.c b/src/spotter/libspotter.c
index 201095d..c715cc0 100644
--- a/src/spotter/libspotter.c
+++ b/src/spotter/libspotter.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: libspotter.c 17215 2016-10-18 20:01:10Z pwessel $
+ * $Id: libspotter.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -480,7 +480,7 @@ unsigned int spotter_init (struct GMT_CTRL *GMT, char *file, struct EULER **p, b
if (strstr (comment, "cross-over") || strstr (comment, "cross over") || strstr (comment, "crossover")) continue; /* Skip GPlates cross-over rotations */
if (A_id == p1 && B_id == p2 && !V2) { /* Exactly what we wanted */
e[i].lon = lon; e[i].lat = lat; e[i].omega = rot; e[i].t_start = t;
- V1 = true; /* So we dont later find inverse rotations */
+ V1 = true; /* So we don't later find inverse rotations */
}
else if (A_id == p2 && B_id == p1 && !V1) { /* Got the inverse rotation, so change angle sign */
e[i].lon = lon; e[i].lat = lat; e[i].omega = -rot; e[i].t_start = t;
@@ -1766,7 +1766,7 @@ void spotter_project_ellipsoid (struct GMT_CTRL *GMT, double axis[], double D[3]
par[2] = 1.0/sqrt (0.5 * (A + C - r));
par[0] = (gmt_M_is_zero (B)) ? ((A > C) ? 90.0 : 0.0) : 90.0 - atan2 (-0.5 * (A - C - r)/B, 1.0) * R2D;
if (par[2] > par[1]) { /* Switch so that par[1] is the major axis */
- double_swap (par[1], par[2]);
+ gmt_M_double_swap (par[1], par[2]);
par[0] += 90.0;
if (par[0] >= 180.0) par[0] -= 180.0;
}
@@ -1786,7 +1786,7 @@ void spotter_project_ellipsoid_new (struct GMT_CTRL *GMT, double X[3][3], double
par[2] = sqrt (0.5 * (a + c - r));
par[0] = (gmt_M_is_zero (b)) ? ((a > c) ? 90.0 : 0.0) : 90.0 - atan2 (-0.5 * (a - c - r)/b, 1.0) * R2D;
if (par[2] > par[1]) { /* Switch so that par[1] is the major axis */
- double_swap (par[1], par[2]);
+ gmt_M_double_swap (par[1], par[2]);
par[0] += 90.0;
if (par[0] >= 180.0) par[0] -= 180.0;
}
diff --git a/src/spotter/originator.c b/src/spotter/originator.c
index 5f5b536..cde469e 100644
--- a/src/spotter/originator.c
+++ b/src/spotter/originator.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: originator.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: originator.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 2000-2016 by P. Wessel
+ * Copyright (c) 2000-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -478,11 +478,14 @@ int GMT_originator (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
n_read = smt = 0;
do { /* Keep returning records until we reach EOF */
n_read++;
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all headers */
@@ -629,13 +632,13 @@ int GMT_originator (void *V_API, int mode, void *args) {
out[0] = hot[0].np_time;
out[1] = hot[0].np_dist * hot[0].np_sign;
out[2] = z_smt;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
else if (Ctrl->L.mode == 2) { /* Want omega, dist, z output */
out[0] = spotter_t2w (GMT, p, n_stages, hot[0].np_time);
out[1] = hot[0].np_dist * hot[0].np_sign;
out[2] = z_smt;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
else if (Ctrl->L.mode == 3) { /* Want x, y, time, dist, z output */
out[GMT_X] = hot[0].np_lon;
@@ -643,7 +646,7 @@ int GMT_originator (void *V_API, int mode, void *args) {
out[2] = hot[0].np_time;
out[3] = hot[0].np_dist * hot[0].np_sign;
out[4] = z_smt;
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
else { /* Conventional originator output */
if (t_smt == 180.0)
diff --git a/src/spotter/rotconverter.c b/src/spotter/rotconverter.c
index ce90b09..4f04202 100644
--- a/src/spotter/rotconverter.c
+++ b/src/spotter/rotconverter.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: rotconverter.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: rotconverter.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -441,6 +441,10 @@ int GMT_rotconverter (void *V_API, int mode, void *args) {
gmt_M_free (GMT, a);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, a);
+ Return (API->error);
+ }
if (Ctrl->G.active) /* GPlates header */
sprintf (record, "#plateid%stime%slatitude%slongitude%sangle%sfixedplateid\n", GMT->current.setting.io_col_separator, GMT->current.setting.io_col_separator, GMT->current.setting.io_col_separator, \
@@ -490,7 +494,7 @@ int GMT_rotconverter (void *V_API, int mode, void *args) {
spotter_covar_to_record (GMT, &a[stage], K);
for (k = 0; k < 9; k++) out[col++] = K[k];
}
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
gmt_M_free (GMT, a);
diff --git a/src/spotter/rotsmoother.c b/src/spotter/rotsmoother.c
index 35d8f76..562942e 100644
--- a/src/spotter/rotsmoother.c
+++ b/src/spotter/rotsmoother.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
* $Id$
*
- * Copyright (c) 2016 by P. Wessel
+ * Copyright (c) 2016-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -310,7 +310,7 @@ int GMT_rotsmoother (void *V_API, int mode, void *args) {
D = (struct AGEROT *) gmt_M_memory (GMT, NULL, n_alloc, struct AGEROT);
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, &n_fields)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, &n_fields)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, D);
Return (GMT_RUNTIME_ERROR);
@@ -397,6 +397,10 @@ int GMT_rotsmoother (void *V_API, int mode, void *args) {
gmt_M_free (GMT, D);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, D);
+ Return (API->error);
+ }
z_unit_vector[0] = z_unit_vector[1] = 0.0; z_unit_vector[2] = 1.0; /* The local z unit vector */
n_minimum = (Ctrl->C.active) ? 2 : 1; /* Need at least two rotations to compute covariance, at least one to report the mean */
@@ -474,13 +478,13 @@ int GMT_rotsmoother (void *V_API, int mode, void *args) {
n_out++;
if (!Ctrl->C.active) { /* No covariance requested, print this rotation and continue */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
continue;
}
/* Now get the covariance matrix */
- /* Here we also want to get the covariance matrix. To do so we want to parameterize all
+ /* Here we also want to get the covariance matrix. To do so we want to parametrize all
* the n_use rotations as a small incremental rotation DR_i followed by the mean rotation
* R, i.e., R_i = R * DR_i. We must therefore first solve for the incremental rotation
* DR_i (a 3x3 matrix) which becomes R^T * R_i and then convert it to a pseudo-vector h
@@ -569,7 +573,7 @@ int GMT_rotsmoother (void *V_API, int mode, void *args) {
out[16] = EigenValue[0];
out[17] = EigenValue[1];
out[18] = EigenValue[2];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
diff --git a/src/spotter/spotter.h b/src/spotter/spotter.h
index fe2d928..9f64edc 100644
--- a/src/spotter/spotter.h
+++ b/src/spotter/spotter.h
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: spotter.h 15757 2016-02-24 23:25:49Z pwessel $
+ * $Id: spotter.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
diff --git a/src/surface.c b/src/surface.c
index 1d9d2cd..1847a2e 100644
--- a/src/surface.c
+++ b/src/surface.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: surface.c 16892 2016-08-10 22:07:01Z pwessel $
+ * $Id: surface.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -593,7 +593,7 @@ GMT_LOCAL int read_data_surface (struct GMT_CTRL *GMT, struct SURFACE_INFO *C, s
return (GMT->parent->error);
}
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (GMT->parent, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (GMT->parent, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all headers */
diff --git a/src/surface_mt.c b/src/surface_mt.c
index 3b80363..74fd1c6 100644
--- a/src/surface_mt.c
+++ b/src/surface_mt.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
* $Id: surface.c 15861 2016-03-10 04:17:28Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -522,7 +522,7 @@ GMT_LOCAL int compare_points (const void *point_1v, const void *point_2v, void *
dist_1 = (point_1->x - x0) * (point_1->x - x0) + (point_1->y - y0) * (point_1->y - y0);
/* Try to speed things up by first checking if point_2 x-distance from x0 alone exceeds point_1's radial distance */
dist_2 = (point_2->x - x0) * (point_2->x - x0); /* Just dx^2 */
- if (dist_1 < dist_2) return (-1); /* Dont need to consider the y-distance */
+ if (dist_1 < dist_2) return (-1); /* Don't need to consider the y-distance */
/* Did not exceed, so now we must finalize the dist_2 calculation by including the y-separation */
dist_2 += (point_2->y - y0) * (point_2->y - y0);
if (dist_1 < dist_2) return (-1);
@@ -867,7 +867,7 @@ GMT_LOCAL int read_data_surface (struct GMT_CTRL *GMT, struct SURFACE_INFO *C, s
return (GMT->parent->error);
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (GMT->parent, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (GMT->parent, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all headers */
diff --git a/src/test_JL.c b/src/test_JL.c
index 530eb48..49065a9 100644
--- a/src/test_JL.c
+++ b/src/test_JL.c
@@ -3,7 +3,7 @@
* Testing a specific case where we wish to pass and receive a GMT_VECTOR or GMT_MATRIX
* to/from a module that expect to read/write GMT_DATASETs.
*/
-int main (int argc, char *argv[]) {
+int main () {
void *API = NULL; /* The API control structure */
struct GMT_VECTOR *V[2] = {NULL, NULL}; /* Structure to hold input/output dataset as vectors */
struct GMT_MATRIX *M[2] = {NULL, NULL}; /* Structure to hold input/output dataset as matrix */
diff --git a/src/test_walter.c b/src/test_walter.c
index 7b38b9f..5a4b633 100644
--- a/src/test_walter.c
+++ b/src/test_walter.c
@@ -21,7 +21,7 @@ int main (int argc, char **argv) {
struct GMT_VECTOR *V_in = NULL, *V_out = NULL;
char grid[GMT_STR16] = {""}, input[GMT_STR16] = {""}, output[GMT_STR16] = {""};
char args[256] = {""};
-
+ (void)(argc);
/* Initialize a normal GMT session with 2 rows/cols for grid BC padding */
if ((API = GMT_Create_Session (argv[0], 2U, GMT_SESSION_NORMAL, NULL)) == NULL) exit (EXIT_FAILURE);
/* Read in the grid to be used with grdtrack */
diff --git a/src/testapi.c b/src/testapi.c
index edba599..64f57a5 100644
--- a/src/testapi.c
+++ b/src/testapi.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: testapi.c 17104 2016-09-18 01:33:17Z jluis $
+ * $Id: testapi.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/testapi_matrix.c b/src/testapi_matrix.c
index dad2699..337e07a 100644
--- a/src/testapi_matrix.c
+++ b/src/testapi_matrix.c
@@ -3,13 +3,12 @@
* Testing a specific case where we wish to pass and receive a GMT_VECTOR or GMT_MATRIX
* to/from a module that expect to read/write GMT_DATASETs.
*/
-int main (int argc, char *argv[]) {
+int main () {
void *API = NULL; /* The API control structure */
struct GMT_MATRIX *M[2] = {NULL, NULL}; /* Structure to hold input/output dataset as matrix */
char input[GMT_STR16] = {""}; /* String to hold virtual input filename */
char output[GMT_STR16] = {""}; /* String to hold virtual output filename */
char args[128] = {""}; /* String to hold module command arguments */
-
/* Initialize the GMT session */
API = GMT_Create_Session ("test", 2U, GMT_SESSION_EXTERNAL, NULL);
M[GMT_IN] = GMT_Read_Data (API, GMT_IS_MATRIX, GMT_IS_FILE, GMT_IS_PLP, GMT_READ_NORMAL, NULL, "belgium.txt", NULL);
diff --git a/src/testapi_vector.c b/src/testapi_vector.c
index bbe4db1..9d131ec 100644
--- a/src/testapi_vector.c
+++ b/src/testapi_vector.c
@@ -3,7 +3,7 @@
* Testing a specific case where we wish to pass and receive a GMT_VECTOR or GMT_MATRIX
* to/from a module that expect to read/write GMT_DATASETs.
*/
-int main (int argc, char *argv[]) {
+int main () {
void *API = NULL; /* The API control structure */
struct GMT_VECTOR *V[2] = {NULL, NULL}; /* Structure to hold input/output dataset as vectors */
char input[GMT_STR16] = {""}; /* String to hold virtual input filename */
diff --git a/src/testapiconv.c b/src/testapiconv.c
index 75d5e71..ca19208 100644
--- a/src/testapiconv.c
+++ b/src/testapiconv.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: testapiconv.c 17218 2016-10-18 23:09:32Z pwessel $
+ * $Id: testapiconv.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/testgmt5.c b/src/testgmt5.c
index db4c05f..ec7e6ca 100644
--- a/src/testgmt5.c
+++ b/src/testgmt5.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: testgmt5.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: testgmt5.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/testgmtio.c b/src/testgmtio.c
index 820a616..e4b7fbe 100644
--- a/src/testgmtio.c
+++ b/src/testgmtio.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: testgmtio.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: testgmtio.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -61,8 +61,8 @@ int main (int argc, char *argv[]) {
if ((error = GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON)) != GMT_NOERROR) exit (error); /* Enables data output and sets access mode */
do { /* Keep returning records until we reach EOF */
- mode = GMT_WRITE_DOUBLE; /* Normally we treat data as double precision values */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE | GMT_READ_FILEBREAK, &n_fields)) == NULL) { /* Read next record, get NULL if special case */
+ mode = GMT_WRITE_DATA; /* Normally we treat data as double precision values */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA | GMT_READ_FILEBREAK, &n_fields)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* This check kicks in if the data has bad formatting, text etc */
GMT_Report (API, GMT_MSG_VERBOSE, "Error found in record %" PRIu64 "\n", GMT->current.io.rec_no);
API->print_func (stdout, "E: ");
diff --git a/src/testgrdio.c b/src/testgrdio.c
index 750a46a..ae20e5f 100644
--- a/src/testgrdio.c
+++ b/src/testgrdio.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: testgrdio.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: testgrdio.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/testio.c b/src/testio.c
index 77288ad..f49cc04 100644
--- a/src/testio.c
+++ b/src/testio.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: testio.c 16828 2016-07-18 02:06:25Z pwessel $
+ * $Id: testio.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/trend1d.c b/src/trend1d.c
index e4df82a..62985f8 100644
--- a/src/trend1d.c
+++ b/src/trend1d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: trend1d.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: trend1d.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -138,7 +138,7 @@ GMT_LOCAL int read_data_trend1d (struct GMT_CTRL *GMT, struct TREND1D_DATA **dat
i = 0;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (GMT->parent, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (GMT->parent, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all headers */
@@ -212,7 +212,7 @@ GMT_LOCAL void write_output_trend (struct GMT_CTRL *GMT, struct TREND1D_DATA *da
break;
}
}
- GMT_Put_Record (GMT->parent, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (GMT->parent, GMT_WRITE_DATA, out); /* Write this to output */
}
}
@@ -854,11 +854,14 @@ int GMT_trend1d (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
if (!Ctrl->model_parameters) /* Write any or all of the 'xymrw' */
write_output_trend (GMT, data, n_data, Ctrl->F.col, Ctrl->n_outputs);
else /* Write only the model parameters */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, c_model);
+ GMT_Put_Record (API, GMT_WRITE_DATA, c_model);
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
Return (API->error);
diff --git a/src/trend2d.c b/src/trend2d.c
index 350733c..fccb983 100644
--- a/src/trend2d.c
+++ b/src/trend2d.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: trend2d.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: trend2d.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -86,7 +86,7 @@ GMT_LOCAL int read_data_trend2d (struct GMT_CTRL *GMT, struct TREND2D_DATA **dat
i = 0;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (GMT->parent, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (GMT->parent, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all headers */
@@ -166,7 +166,7 @@ GMT_LOCAL void write_output_trend (struct GMT_CTRL *GMT, struct TREND2D_DATA *da
break;
}
}
- GMT_Put_Record (GMT->parent, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (GMT->parent, GMT_WRITE_DATA, out); /* Write this to output */
}
}
@@ -719,6 +719,9 @@ int GMT_trend2d (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
write_output_trend (GMT,data, n_data, Ctrl->F.col, Ctrl->n_outputs);
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
Return (API->error);
diff --git a/src/triangulate.c b/src/triangulate.c
index 89c9199..ea9a0ce 100644
--- a/src/triangulate.c
+++ b/src/triangulate.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: triangulate.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: triangulate.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -320,7 +320,7 @@ int GMT_triangulate (void *V_API, int mode, void *args) {
n = 0;
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) { /* Bail if there are any read errors */
gmt_M_free (GMT, xx); gmt_M_free (GMT, yy); gmt_M_free (GMT, zz);
Return (GMT_RUNTIME_ERROR);
@@ -486,6 +486,10 @@ int GMT_triangulate (void *V_API, int mode, void *args) {
if (!Ctrl->Q.active) gmt_delaunay_free (GMT, &link); /* Coverity says it would leak */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ if (!Ctrl->Q.active) gmt_delaunay_free (GMT, &link); /* Coverity says it would leak */
+ Return (API->error);
+ }
if (Ctrl->M.active || Ctrl->Q.active) { /* Must find unique edges to output only once */
gmt_set_segmentheader (GMT, GMT_OUT, true);
if (Ctrl->Q.active) { /* Voronoi edges */
@@ -493,9 +497,9 @@ int GMT_triangulate (void *V_API, int mode, void *args) {
sprintf (record, "Edge %" PRIu64, i);
GMT_Put_Record (API, GMT_WRITE_SEGMENT_HEADER, record);
out[GMT_X] = xe[j]; out[GMT_Y] = ye[j++];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
out[GMT_X] = xe[j]; out[GMT_Y] = ye[j++];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
gmt_M_free (GMT, xe);
gmt_M_free (GMT, ye);
@@ -508,7 +512,7 @@ int GMT_triangulate (void *V_API, int mode, void *args) {
edge[ij2].begin = link[ij2]; edge[ij2].end = link[ij3];
edge[ij3].begin = link[ij1]; edge[ij3].end = link[ij3];
}
- for (i = 0; i < n_edge; i++) if (edge[i].begin > edge[i].end) int_swap (edge[i].begin, edge[i].end);
+ for (i = 0; i < n_edge; i++) if (edge[i].begin > edge[i].end) gmt_M_int_swap (edge[i].begin, edge[i].end);
qsort (edge, n_edge, sizeof (struct TRIANGULATE_EDGE), compare_edge);
for (i = 1, j = 0; i < n_edge; i++) {
@@ -523,9 +527,9 @@ int GMT_triangulate (void *V_API, int mode, void *args) {
sprintf (record, "Edge %d-%d", edge[i].begin, edge[i].end);
GMT_Put_Record (API, GMT_WRITE_SEGMENT_HEADER, record);
out[GMT_X] = xx[edge[i].begin]; out[GMT_Y] = yy[edge[i].begin]; if (triplets[GMT_OUT]) out[GMT_Z] = zz[edge[i].begin];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
out[GMT_X] = xx[edge[i].end]; out[GMT_Y] = yy[edge[i].end]; if (triplets[GMT_OUT]) out[GMT_Z] = zz[edge[i].end];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
gmt_M_free (GMT, edge);
}
@@ -537,7 +541,7 @@ int GMT_triangulate (void *V_API, int mode, void *args) {
GMT_Put_Record (API, GMT_WRITE_SEGMENT_HEADER, record);
for (k = 0; k < 3; k++) { /* Three vertices */
out[GMT_X] = xx[link[ij+k]]; out[GMT_Y] = yy[link[ij+k]]; if (triplets[GMT_OUT]) out[GMT_Z] = zz[link[ij+k]];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
}
}
@@ -547,7 +551,7 @@ int GMT_triangulate (void *V_API, int mode, void *args) {
GMT->current.io.col_type[GMT_OUT][GMT_Z] = GMT_IS_FLOAT;
for (i = ij = 0; i < np; i++, ij += 3) {
for (k = 0; k < 3; k++) out[k] = (double)link[ij+k];
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
}
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
diff --git a/src/x2sys/CMakeLists.txt b/src/x2sys/CMakeLists.txt
index 1f18eff..d27508c 100644
--- a/src/x2sys/CMakeLists.txt
+++ b/src/x2sys/CMakeLists.txt
@@ -1,7 +1,7 @@
#
-# $Id: CMakeLists.txt 15757 2016-02-24 23:25:49Z pwessel $
+# $Id: CMakeLists.txt 17449 2017-01-16 21:27:04Z pwessel $
#
-# Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
+# Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/src/x2sys/README.x2sys b/src/x2sys/README.x2sys
index 5eeccc4..a5763c3 100644
--- a/src/x2sys/README.x2sys
+++ b/src/x2sys/README.x2sys
@@ -1,4 +1,4 @@
- $Id: README.x2sys 15178 2015-11-06 10:45:03Z fwobbe $
+ $Id: README.x2sys 17326 2016-11-08 20:28:56Z pwessel $
README file for GMT supplemental x2sys programs
Distributed under the GNU Lesser Public License; see file
@@ -13,7 +13,7 @@ The notes below are mostly for historical references
1.4 UPDATE [3-AUG-2010]
Modularized as part of new GMT5-style design.
-Make any old mgg .gmt involvement subject to GMT_COMPATIBILTY setting
+Make any old mgg .gmt involvement subject to GMT_COMPATIBILITY setting
1.3 UPDATE [24-JULY-2009]
diff --git a/src/x2sys/split_file4coes.m b/src/x2sys/split_file4coes.m
index 117d7bc..11394cb 100644
--- a/src/x2sys/split_file4coes.m
+++ b/src/x2sys/split_file4coes.m
@@ -21,9 +21,9 @@ function split_file4coes(fname, n_int)
% of 'cruzados_%d.txt', e.g. cruzados_5.txt
% -------------------------------------------------------------------------------------
-% $Id: split_file4coes.m 13846 2014-12-28 21:46:54Z pwessel $
+% $Id: split_file4coes.m 17450 2017-01-16 21:34:35Z pwessel $
%
-% Copyright (c) 1999-2015 by J. Luis
+% Copyright (c) 1999-2017 by J. Luis
% See LICENSE.TXT file for copying and redistribution conditions.
%
% This program is free software; you can redistribute it and/or modify
@@ -68,7 +68,7 @@ function split_file4coes(fname, n_int)
[mimi, ind(k)] = min(difa); % Find indices of where to split the main file
end
- % Now write the N_INT splitted files
+ % Now write the N_INT split files
for (k = 1:numel(lim)-1)
fout = sprintf('cruzados_%d.txt', k);
if (~isempty(PATO)) % Prepend path
diff --git a/src/x2sys/x2sys.c b/src/x2sys/x2sys.c
index f47b4e7..4c36bd1 100644
--- a/src/x2sys/x2sys.c
+++ b/src/x2sys/x2sys.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys.c 17153 2016-09-30 23:41:38Z jluis $
+ * $Id: x2sys.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -516,11 +516,8 @@ double *x2sys_dummytimes (struct GMT_CTRL *GMT, uint64_t n) {
double *t;
/* Make monotonically increasing dummy time sequence */
-
t = gmt_M_memory (GMT, NULL, n, double);
-
for (i = 0; i < n; i++) t[i] = (double)i;
-
return (t);
}
@@ -835,7 +832,8 @@ int x2sys_read_mgd77file (struct GMT_CTRL *GMT, char *fname, double ***data, str
j = 0;
while (!MGD77_Read_Data_Record (GMT, &MC, &H, dvals, tvals)) { /* While able to read a data record */
gmt_lon_range_adjust (s->geodetic, &dvals[MGD77_LONGITUDE]);
- for (i = 0; i < s->n_out_columns; i++) z[i][j] = dvals[col[i]];
+ for (i = 0; i < s->n_out_columns; i++)
+ z[i][j] = dvals[col[i]];
if (p->year == 0 && !gmt_M_is_dnan (dvals[0])) p->year = get_first_year (GMT, dvals[0]);
j++;
if (j == n_alloc) {
@@ -969,7 +967,7 @@ int x2sys_read_ncfile (struct GMT_CTRL *GMT, char *fname, double ***data, struct
}
int x2sys_read_list (struct GMT_CTRL *GMT, char *file, char ***list, unsigned int *nf) {
- unsigned int n = 0;
+ unsigned int n = 0, first;
size_t n_alloc = GMT_CHUNK;
char **p = NULL, line[GMT_BUFSIZ] = {""}, name[GMT_LEN64] = {""};
FILE *fp = NULL;
@@ -985,7 +983,8 @@ int x2sys_read_list (struct GMT_CTRL *GMT, char *file, char ***list, unsigned in
while (fgets (line, GMT_BUFSIZ, fp)) {
gmt_chop (line); /* Remove trailing CR or LF */
sscanf (line, "%s", name);
- p[n] = strdup (name);
+ first = (strncmp (name, "./", 2U)) ? 0 : 2; /* Skip leading ./ for local directory */
+ p[n] = strdup (&name[first]);
n++;
if (n == n_alloc) {
n_alloc <<= 1;
@@ -1712,7 +1711,8 @@ uint64_t x2sys_read_coe_dbase (struct GMT_CTRL *GMT, struct X2SYS_INFO *S, char
if (!(coe_kind & 2) && strcmp (trk[0], trk[1])) skip = true; /* Do not want external crossovers */
if (one_trk && (strcmp (one_trk, trk[0]) && strcmp (one_trk, trk[1]))) skip = true; /* Looking for a specific track and these do not match */
if (!skip && n_ignore) { /* See if one of the tracks are in the ignore list */
- for (k = 0; !skip && k < n_ignore; k++) if (!strcmp (trk[0], ignore[k]) || !strcmp (trk[1], ignore[k])) skip = true;
+ for (k = 0; !skip && k < n_ignore; k++)
+ if (!strcmp (trk[0], ignore[k]) || !strcmp (trk[1], ignore[k])) skip = true;
}
if (skip) { /* Skip this pair's data records */
while ((t = fgets (line, GMT_BUFSIZ, fp)) != NULL && line[0] != '>') rec_no++;
@@ -1733,7 +1733,7 @@ uint64_t x2sys_read_coe_dbase (struct GMT_CTRL *GMT, struct X2SYS_INFO *S, char
else
id[k] = s_id;
}
- /* Sanity check - make sure we dont already have this pair */
+ /* Sanity check - make sure we don't already have this pair */
for (p = 0, skip = false; !skip && p < n_pairs; p++) {
if ((P[p].id[0] == id[0] && P[p].id[1] == id[1]) || (P[p].id[0] == id[1] && P[p].id[1] == id[0])) {
GMT_Report (GMT->parent, GMT_MSG_NORMAL,
@@ -1887,7 +1887,7 @@ int x2sys_find_track (struct GMT_CTRL *GMT, char *name, char **list, unsigned in
int x2sys_get_tracknames (struct GMT_CTRL *GMT, struct GMT_OPTION *options, char ***filelist, bool *cmdline) {
/* Return list of track names given on command line or via =list mechanism.
* The names do not have the track extension. */
- unsigned int i, A;
+ unsigned int i, A, first;
size_t n_alloc, add_chunk;
char **file = NULL, *p = NULL;
struct GMT_OPTION *opt = NULL, *list = NULL;
@@ -1911,8 +1911,8 @@ int x2sys_get_tracknames (struct GMT_CTRL *GMT, struct GMT_OPTION *options, char
*cmdline = true;
for (opt = options, A = 0; opt; opt = opt->next) {
if (opt->option != GMT_OPT_INFILE) continue; /* Skip options */
-
- file[A++] = strdup (opt->arg);
+ first = (strncmp (opt->arg, "./", 2U)) ? 0 : 2; /* Skip leading ./ for local directory */
+ file[A++] = strdup (&(opt->arg[first]));
if (A == n_alloc) {
add_chunk <<= 1;
n_alloc += add_chunk;
@@ -1940,7 +1940,8 @@ GMT_LOCAL unsigned int separate_aux_columns2 (struct GMT_CTRL *GMT, unsigned int
gmt_M_unused(GMT);
/* Based on what item_name contains, we copy over info on the 3 aux fields (dist, azim, vel) from auxlist to aux */
for (i = k = n_aux = 0; i < n_items; i++) {
- for (j = 0, this_aux = MGD77_NOT_SET; j < N_GENERIC_AUX && this_aux == MGD77_NOT_SET; j++) if (!strcmp (auxlist[j].name, item_name[i])) this_aux = j;
+ for (j = 0, this_aux = MGD77_NOT_SET; j < N_GENERIC_AUX && this_aux == MGD77_NOT_SET; j++)
+ if (!strcmp (auxlist[j].name, item_name[i])) this_aux = j;
if (this_aux != MGD77_NOT_SET) { /* Found a request for an auxiliary column */
aux[n_aux].type = auxlist[this_aux].type;
aux[n_aux].text = auxlist[this_aux].text;
diff --git a/src/x2sys/x2sys.h b/src/x2sys/x2sys.h
index d7e6e29..1252249 100644
--- a/src/x2sys/x2sys.h
+++ b/src/x2sys/x2sys.h
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys.h 15828 2016-03-08 23:40:48Z jluis $
+ * $Id: x2sys.h 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -117,7 +117,7 @@ struct X2SYS_INFO {
unsigned int *out_order; /* Array with input column number as function of output column */
bool *use_column; /* Array of T/F for which columns to use */
unsigned int geodetic; /* How longitudes should be stored: 0: (0-360), 1: (-360,0), 2 (-180/+180) */
- unsigned int dist_flag; /* How distances are calulated: (0 = Cartesian, 1 = Flat earth, 2 = great circle, 3 = geodesic) */
+ unsigned int dist_flag; /* How distances are calculated: (0 = Cartesian, 1 = Flat earth, 2 = great circle, 3 = geodesic) */
/* read_file is a pointer to function that reads this file */
int (*read_file) (struct GMT_CTRL *, char *, double ***, struct X2SYS_INFO *, struct X2SYS_FILE_INFO *, struct GMT_IO *, uint64_t *);
unsigned int file_type; /* 0 = ASCII, 1 = native binary, 2 = netCDF */
diff --git a/src/x2sys/x2sys_binlist.c b/src/x2sys/x2sys_binlist.c
index e33418f..10be3ce 100644
--- a/src/x2sys/x2sys_binlist.c
+++ b/src/x2sys/x2sys_binlist.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_binlist.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: x2sys_binlist.c 17503 2017-01-30 23:14:43Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -292,6 +292,12 @@ int GMT_x2sys_binlist (void *V_API, int mode, void *args) {
x2sys_free_list (GMT, trk_name, n_tracks);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, X);
+ if (Ctrl->D.active) gmt_M_free (GMT, dist_bin);
+ x2sys_free_list (GMT, trk_name, n_tracks);
+ Return (API->error);
+ }
gmt_set_tableheader (GMT, GMT_OUT, true); /* Turn on -ho explicitly */
gmt_set_segmentheader (GMT, GMT_OUT, true); /* Turn on segment headers on output */
sprintf (record, " %s", Ctrl->T.TAG); /* Preserve the leading space for backwards compatibility */
diff --git a/src/x2sys/x2sys_cross.c b/src/x2sys/x2sys_cross.c
index e1fe920..240e57e 100644
--- a/src/x2sys/x2sys_cross.c
+++ b/src/x2sys/x2sys_cross.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_cross.c 17153 2016-09-30 23:41:38Z jluis $
+ * $Id: x2sys_cross.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -532,6 +532,9 @@ int GMT_x2sys_cross (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
for (A = 0; A < n_tracks; A++) { /* Loop over all files */
if (duplicate[A]) continue;
@@ -634,7 +637,7 @@ int GMT_x2sys_cross (void *V_API, int mode, void *args) {
out[0] = XC.x[i];
out[1] = XC.y[i];
if (s->geographic) gmt_lon_range_adjust (s->geodetic, &out[0]);
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
gmt_x_free (GMT, &XC);
}
@@ -838,7 +841,7 @@ int GMT_x2sys_cross (void *V_API, int mode, void *args) {
}
if (s->geographic) gmt_lon_range_adjust (s->geodetic, &out[0]);
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out); /* Write this to output */
+ GMT_Put_Record (API, GMT_WRITE_DATA, out); /* Write this to output */
}
gmt_x_free (GMT, &XC);
diff --git a/src/x2sys/x2sys_datalist.c b/src/x2sys/x2sys_datalist.c
index 7508ebd..60d26a0 100644
--- a/src/x2sys/x2sys_datalist.c
+++ b/src/x2sys/x2sys_datalist.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_datalist.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: x2sys_datalist.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -198,7 +198,7 @@ GMT_LOCAL bool x2sys_load_adjustments (struct GMT_CTRL *GMT, char *DIR, char *TA
adj = gmt_M_memory (GMT, NULL, 1, struct X2SYS_ADJUST);
adj->d = gmt_M_memory (GMT, NULL, n_alloc, double);
adj->c = gmt_M_memory (GMT, NULL, n_alloc, double);
- for (k = 0; k < 2; k++) uint_swap (type[k], GMT->current.io.col_type[GMT_IN][k]); /* Save original input type setting */
+ for (k = 0; k < 2; k++) gmt_M_uint_swap (type[k], GMT->current.io.col_type[GMT_IN][k]); /* Save original input type setting */
while ((in = GMT->current.io.input (GMT, fp, &n_expected_fields, &n_fields)) != NULL && !(GMT->current.io.status & GMT_IO_EOF)) { /* Not yet EOF */
adj->d[n] = in[0];
adj->c[n] = in[1];
@@ -214,7 +214,7 @@ GMT_LOCAL bool x2sys_load_adjustments (struct GMT_CTRL *GMT, char *DIR, char *TA
adj->c = gmt_M_memory (GMT, adj->c, n, double);
adj->n = n;
*A = adj;
- for (k = 0; k < 2; k++) uint_swap (GMT->current.io.col_type[GMT_IN][k], type[k]); /* Restore original input type setting */
+ for (k = 0; k < 2; k++) gmt_M_uint_swap (GMT->current.io.col_type[GMT_IN][k], type[k]); /* Restore original input type setting */
return (true);
}
@@ -286,29 +286,6 @@ int GMT_x2sys_datalist (void *V_API, int mode, void *args) {
if (!GMT->common.R.active) gmt_M_memcpy (GMT->common.R.wesn, B.wesn, 4, double);
- if (GMT->common.b.active[GMT_OUT]) gmt_formatting = false;
-
- if (GMT->common.R.active) { /* Restrict output to given domain */
- if (xpos == -1 || ypos == -1) {
- GMT_Report (API, GMT_MSG_NORMAL, "The -R option was selected but lon,lat not included in -F\n");
- x2sys_end (GMT, s);
- x2sys_free_list (GMT, trk_name, n_tracks);
- Return (GMT_RUNTIME_ERROR);
- }
- /* Supply dummy linear proj */
- GMT->current.proj.projection = GMT->current.proj.xyz_projection[0] = GMT->current.proj.xyz_projection[1] = GMT_LINEAR;
- GMT->current.proj.pars[0] = GMT->current.proj.pars[1] = 1.0;
- GMT->common.J.active = true;
- if (GMT->common.R.wesn[XLO] < 0.0 && GMT->common.R.wesn[XHI] < 0.0) {
- GMT->common.R.wesn[XLO] += 360.0;
- GMT->common.R.wesn[XHI] += 360.0;
- }
- if (gmt_M_err_pass (GMT, gmt_map_setup (GMT, GMT->common.R.wesn), "")) {
- x2sys_free_list (GMT, trk_name, n_tracks);
- Return (GMT_PROJECTION_ERROR);
- }
- }
-
if (Ctrl->S.active) { /* Must count output data columns (except t, x, y) */
for (ocol = n_data_col_out = 0; ocol < s->n_out_columns; ocol++) {
this_col = s->out_order[ocol];
@@ -426,6 +403,30 @@ int GMT_x2sys_datalist (void *V_API, int mode, void *args) {
if (s->info[s->out_order[ocol]].format[0] != '-') gmt_formatting = true;
}
+
+ if (GMT->common.b.active[GMT_OUT]) gmt_formatting = false; /* The above lime might very well had set it to true */
+
+ if (GMT->common.R.active) { /* Restrict output to given domain */
+ if (xpos == -1 || ypos == -1) {
+ GMT_Report (API, GMT_MSG_NORMAL, "The -R option was selected but lon,lat not included in -F\n");
+ x2sys_end (GMT, s);
+ x2sys_free_list (GMT, trk_name, n_tracks);
+ Return (GMT_RUNTIME_ERROR);
+ }
+ /* Supply dummy linear proj */
+ GMT->current.proj.projection = GMT->current.proj.xyz_projection[0] = GMT->current.proj.xyz_projection[1] = GMT_LINEAR;
+ GMT->current.proj.pars[0] = GMT->current.proj.pars[1] = 1.0;
+ GMT->common.J.active = true;
+ if (GMT->common.R.wesn[XLO] < 0.0 && GMT->common.R.wesn[XHI] < 0.0) {
+ GMT->common.R.wesn[XLO] += 360.0;
+ GMT->common.R.wesn[XHI] += 360.0;
+ }
+ if (gmt_M_err_pass (GMT, gmt_map_setup (GMT, GMT->common.R.wesn), "")) {
+ x2sys_free_list (GMT, trk_name, n_tracks);
+ Return (GMT_PROJECTION_ERROR);
+ }
+ }
+
if (API->mode && gmt_formatting) {
GMT_Report (API, GMT_MSG_DEBUG, "Disabling text formatting for external interface\n");
gmt_formatting = false;
@@ -442,6 +443,11 @@ int GMT_x2sys_datalist (void *V_API, int mode, void *args) {
x2sys_free_list (GMT, trk_name, n_tracks);
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ x2sys_end (GMT, s);
+ x2sys_free_list (GMT, trk_name, n_tracks);
+ Return (API->error);
+ }
out = gmt_M_memory (GMT, NULL, s->n_fields, double);
@@ -466,7 +472,8 @@ int GMT_x2sys_datalist (void *V_API, int mode, void *args) {
if (Ctrl->L.active && s->t_col >= 0) MGD77_Init_Correction (GMT, CORR[trk_no], data); /* Initialize origins if needed */
if (Ctrl->A.active) { /* Load along-track adjustments */
- for (k = 0; k < s->n_out_columns; k++) adj_col[k] = x2sys_load_adjustments (GMT, X2SYS_HOME, Ctrl->T.TAG, trk_name[trk_no], s->info[s->out_order[k]].name, &A[k]);
+ for (k = 0; k < s->n_out_columns; k++)
+ adj_col[k] = x2sys_load_adjustments (GMT, X2SYS_HOME, Ctrl->T.TAG, trk_name[trk_no], s->info[s->out_order[k]].name, &A[k]);
}
if (Ctrl->E.active) { /* Insert a segment header between files */
@@ -530,7 +537,7 @@ int GMT_x2sys_datalist (void *V_API, int mode, void *args) {
GMT_Put_Record (API, GMT_WRITE_TEXT, fmt_record);
}
else {
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
diff --git a/src/x2sys/x2sys_get.c b/src/x2sys/x2sys_get.c
index 6506705..f340274 100644
--- a/src/x2sys/x2sys_get.c
+++ b/src/x2sys/x2sys_get.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_get.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: x2sys_get.c 17503 2017-01-30 23:14:43Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -363,6 +363,9 @@ int GMT_x2sys_get (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_TEXTSET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
gmt_set_tableheader (GMT, GMT_OUT, true); /* Turn on -ho explicitly */
if (Ctrl->L.active) {
for (id1 = 0, n_pairs = 0; id1 < n_tracks; id1++) {
diff --git a/src/x2sys/x2sys_init.c b/src/x2sys/x2sys_init.c
index 2f5160f..85a5c8b 100644
--- a/src/x2sys/x2sys_init.c
+++ b/src/x2sys/x2sys_init.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_init.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: x2sys_init.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/x2sys/x2sys_list.c b/src/x2sys/x2sys_list.c
index bd147a5..6e1c3bf 100644
--- a/src/x2sys/x2sys_list.c
+++ b/src/x2sys/x2sys_list.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_list.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: x2sys_list.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -271,7 +271,7 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct X2SYS_LIST_CTRL *Ctrl, struct
}
if (Ctrl->F.flags[i] == 'n') mixed = true; /* Both numbers and text - cannot use binary output */
}
- /* GMT->parent->mode means we are calling from mex or Python and dont want to get textsets back */
+ /* GMT->parent->mode means we are calling from mex or Python and don't want to get textsets back */
n_errors += gmt_M_check_condition (GMT, (mixed || GMT->parent->mode) && GMT->common.b.active[GMT_OUT], "Syntax error: Cannot use -Fn with binary output\n");
return (n_errors ? GMT_PARSE_ERROR : GMT_NOERROR);
@@ -518,6 +518,9 @@ int GMT_x2sys_list (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, o_mode, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
gmt_set_tableheader (GMT, GMT_OUT, true);
gmt_set_segmentheader (GMT, GMT_OUT, true); /* Turn on segment headers on output */
if (!GMT->common.b.active[GMT_OUT]) { /* Write 3 header records */
@@ -595,7 +598,7 @@ int GMT_x2sys_list (void *V_API, int mode, void *args) {
strcat (record, "vel");
break;
case 'w': /* Composite weight of crossover */
- fprintf (GMT->session.std[GMT_OUT], "weight");
+ strcat (record, "weight");
break;
case 'x': /* x coordinate of crossover */
(s->geographic) ? strcat (record, "lon") : strcat (record, "x");
@@ -741,7 +744,7 @@ int GMT_x2sys_list (void *V_API, int mode, void *args) {
if (mixed)
GMT_Put_Record (API, GMT_WRITE_TEXT, record);
else
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, out);
+ GMT_Put_Record (API, GMT_WRITE_DATA, out);
}
}
if (GMT_End_IO (API, GMT_OUT, 0) != GMT_NOERROR) { /* Disables further data output */
diff --git a/src/x2sys/x2sys_merge.c b/src/x2sys/x2sys_merge.c
index 1a07819..4eff690 100644
--- a/src/x2sys/x2sys_merge.c
+++ b/src/x2sys/x2sys_merge.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_merge.c 16555 2016-06-16 22:49:46Z pwessel $
+ * $Id: x2sys_merge.c 17503 2017-01-30 23:14:43Z pwessel $
*
- * Copyright (c) 1999-2016 by J. Luis
+ * Copyright (c) 1999-2017 by J. Luis
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -235,9 +235,15 @@ int GMT_x2sys_merge (void *V_API, int mode, void *args) {
clear_mem (GMT, pairs_base, pairs_merge, map_base_start, map_base_end, map_merge_start, map_merge_end, n_base, n_merge);
Return (API->error); /* Enables data output and sets access mode */
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ fclose (fp_merge);
+ fclose (fp_base);
+ clear_mem (GMT, pairs_base, pairs_merge, map_base_start, map_base_end, map_merge_start, map_merge_end, n_base, n_merge);
+ Return (API->error);
+ }
gmt_set_tableheader (GMT, GMT_OUT, true); /* Turn on -ho explicitly */
- /* Jump comment lines in both files and osition the file poiter into the first data line */
+ /* Jump comment lines in both files and osition the file pointer into the first data line */
k = i = 0;
while (fgets (line, GMT_BUFSIZ, fp_merge) && line[0] == '#') k++; /* Jump the comment lines in the to-merge file */
rewind (fp_merge);
diff --git a/src/x2sys/x2sys_put.c b/src/x2sys/x2sys_put.c
index 5a6fba3..be90815 100644
--- a/src/x2sys/x2sys_put.c
+++ b/src/x2sys/x2sys_put.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_put.c 17138 2016-09-25 23:03:40Z jluis $
+ * $Id: x2sys_put.c 17449 2017-01-16 21:27:04Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/src/x2sys/x2sys_report.c b/src/x2sys/x2sys_report.c
index 7140405..a6b5ffc 100644
--- a/src/x2sys/x2sys_report.c
+++ b/src/x2sys/x2sys_report.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_report.c 17104 2016-09-18 01:33:17Z jluis $
+ * $Id: x2sys_report.c 17503 2017-01-30 23:14:43Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -352,6 +352,10 @@ int GMT_x2sys_report (void *V_API, int mode, void *args) {
gmt_M_free (GMT, R);
Return (API->error); /* Enables data output and sets access mode */
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ gmt_M_free (GMT, R);
+ Return (API->error);
+ }
gmt_set_tableheader (GMT, GMT_OUT, true); /* Turn on -ho explicitly */
sprintf (record, " Tag: %s %s", Ctrl->T.TAG, Ctrl->C.col);
diff --git a/src/x2sys/x2sys_solve.c b/src/x2sys/x2sys_solve.c
index d46b7fe..4728fe2 100644
--- a/src/x2sys/x2sys_solve.c
+++ b/src/x2sys/x2sys_solve.c
@@ -1,7 +1,7 @@
/*-----------------------------------------------------------------
- * $Id: x2sys_solve.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: x2sys_solve.c 17503 2017-01-30 23:14:43Z pwessel $
*
- * Copyright (c) 1999-2016 by P. Wessel
+ * Copyright (c) 1999-2017 by P. Wessel
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -900,6 +900,9 @@ int GMT_x2sys_solve (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_TEXTSET, GMT_OUT, GMT_HEADER_ON) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_NONE) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
for (p = 0; p < n_tracks; p++) {
if (normalize) a[col_off[p]+1] /= range; /* Unnormalize slopes */
diff --git a/src/xyz2grd.c b/src/xyz2grd.c
index 9917a47..7a40b0b 100644
--- a/src/xyz2grd.c
+++ b/src/xyz2grd.c
@@ -1,7 +1,7 @@
/*--------------------------------------------------------------------
- * $Id: xyz2grd.c 16706 2016-07-04 02:52:44Z pwessel $
+ * $Id: xyz2grd.c 17560 2017-02-17 22:05:42Z pwessel $
*
- * Copyright (c) 1991-2016 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+ * Copyright (c) 1991-2017 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
* See LICENSE.TXT file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
@@ -24,7 +24,7 @@
* Date: 1-JAN-2010
* Version: 5 API
*/
-
+
#define THIS_MODULE_NAME "xyz2grd"
#define THIS_MODULE_LIB "core"
#define THIS_MODULE_PURPOSE "Convert data table to a grid file"
@@ -71,9 +71,9 @@ struct XYZ2GRD_CTRL {
GMT_LOCAL void *New_Ctrl (struct GMT_CTRL *GMT) { /* Allocate and initialize a new control structure */
struct XYZ2GRD_CTRL *C = NULL;
-
+
C = gmt_M_memory (GMT, NULL, 1, struct XYZ2GRD_CTRL);
-
+
/* Initialize values whose defaults are not 0/false/NULL */
C->Z.type = 'a';
C->Z.format[0] = 'T'; C->Z.format[1] = 'L';
@@ -82,11 +82,11 @@ GMT_LOCAL void *New_Ctrl (struct GMT_CTRL *GMT) { /* Allocate and initialize a n
GMT_LOCAL void Free_Ctrl (struct GMT_CTRL *GMT, struct XYZ2GRD_CTRL *C) { /* Deallocate control structure */
if (!C) return;
- gmt_M_str_free (C->In.file);
- gmt_M_str_free (C->D.information);
- gmt_M_str_free (C->G.file);
- gmt_M_str_free (C->S.file);
- gmt_M_free (GMT, C);
+ gmt_M_str_free (C->In.file);
+ gmt_M_str_free (C->D.information);
+ gmt_M_str_free (C->G.file);
+ gmt_M_str_free (C->S.file);
+ gmt_M_free (GMT, C);
}
GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
@@ -147,7 +147,7 @@ GMT_LOCAL int usage (struct GMTAPI_CTRL *API, int level) {
GMT_Option (API, "bi3,di");
GMT_Message (API, GMT_TIME_NONE, "\t Also sets value for nodes without input xyz triplet [Default is NaN].\n");
GMT_Option (API, "f,h,i,r,s,:,.");
-
+
return (GMT_MODULE_USAGE);
}
@@ -302,13 +302,13 @@ GMT_LOCAL int parse (struct GMT_CTRL *GMT, struct XYZ2GRD_CTRL *Ctrl, struct GMT
#define Return(code) {Free_Ctrl (GMT, Ctrl); gmt_end_module (GMT, GMT_cpy); bailout (code);}
GMT_LOCAL void protect_J(struct GMTAPI_CTRL *API, struct GMT_OPTION *options) {
- if (GMT_Find_Option (API, 'J', options) != NULL) {
+ if (GMT_Find_Option (API, 'J', options) != NULL) {
#ifdef HAVE_GDAL
struct GMT_OPTION *opt = GMT_Make_Option (API, 'f', "0f,1f");
options = GMT_Append_Option(API, opt, options);
#else
GMT_Report(API, GMT_MSG_NORMAL,
- "Warning: -J option to set grid's referencing system is only availabe when GMT was build with GDAL\n");
+ "Warning: -J option to set grid's referencing system is only available when GMT was build with GDAL\n");
#endif
}
}
@@ -316,8 +316,8 @@ GMT_LOCAL void protect_J(struct GMTAPI_CTRL *API, struct GMT_OPTION *options) {
int GMT_xyz2grd (void *V_API, int mode, void *args) {
bool previous_bin_i = false, previous_bin_o = false;
int error = 0, scol, srow;
- unsigned int zcol, row, col, i, *flag = NULL;
- uint64_t n_empty = 0, n_stuffed = 0, n_bad = 0, n_confused = 0;
+ unsigned int zcol, row, col, i, *flag = NULL, n_min = 1;
+ uint64_t n_empty = 0, n_confused = 0;
uint64_t ij, ij_gmt, n_read, n_filled = 0, n_used = 0, n_req;
char c, Amode;
@@ -328,7 +328,7 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
void * (*save_i) (struct GMT_CTRL *, FILE *, uint64_t *, int *) = NULL;
int (*save_o) (struct GMT_CTRL *, FILE *, uint64_t, double *);
-
+
struct GMT_GRID *Grid = NULL;
struct GMT_Z_IO io;
struct XYZ2GRD_CTRL *Ctrl = NULL;
@@ -356,11 +356,11 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
/*---------------------------- This is the xyz2grd main code ----------------------------*/
n_req = (Ctrl->Z.active) ? 1 : ((Ctrl->A.mode == 'n') ? 2 : 3); /* Required input columns */
-
+
if (Ctrl->S.active) { /* Just swap data and bail */
int out_ID;
unsigned w_mode = GMT_ADD_DEFAULT;
-
+
save_i = GMT->current.io.input; /* Save previous i/0 parameters */
save_o = GMT->current.io.output;
previous_bin_i = GMT->common.b.active[GMT_IN];
@@ -387,10 +387,10 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
if (GMT_Init_IO (API, GMT_IS_DATASET, GMT_IS_NONE, GMT_OUT, w_mode, 0, options) != GMT_NOERROR) { /* Establishes data output to stdout */
Return (API->error);
}
- if ((error = gmt_set_cols (GMT, GMT_IN, 1)) != GMT_NOERROR) { /* We dont really care or know about columns so must use 1 */
+ if ((error = gmt_set_cols (GMT, GMT_IN, 1)) != GMT_NOERROR) { /* We don't really care or know about columns so must use 1 */
Return (API->error);
}
- if ((error = gmt_set_cols (GMT, GMT_OUT, 1)) != GMT_NOERROR) { /* We dont really care or know about columns so must use 1 */
+ if ((error = gmt_set_cols (GMT, GMT_OUT, 1)) != GMT_NOERROR) { /* We don't really care or know about columns so must use 1 */
Return (API->error);
}
/* Initialize the i/o for doing record-by-record reading/writing */
@@ -400,8 +400,11 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
if (GMT_Begin_IO (API, GMT_IS_DATASET, GMT_OUT, GMT_HEADER_OFF) != GMT_NOERROR) { /* Enables data output and sets access mode */
Return (API->error);
}
+ if (GMT_Set_Geometry (API, GMT_OUT, GMT_IS_POINT) != GMT_NOERROR) { /* Sets output geometry */
+ Return (API->error);
+ }
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all headers */
@@ -412,7 +415,7 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
/* Data record to process */
- GMT_Put_Record (API, GMT_WRITE_DOUBLE, in);
+ GMT_Put_Record (API, GMT_WRITE_DATA, in);
} while (true);
GMT->current.io.input = save_i; /* Reset input pointer */
@@ -437,12 +440,12 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
double value;
char line[GMT_BUFSIZ];
FILE *fp = GMT->session.std[GMT_IN];
-
+
if (Ctrl->In.file && (fp = gmt_fopen (GMT, Ctrl->In.file, "r")) == NULL) {
GMT_Report (API, GMT_MSG_NORMAL, "Cannot open file %s\n", Ctrl->In.file);
Return (GMT_ERROR_ON_FOPEN);
}
-
+
if ((Grid = gmt_create_grid (GMT)) == NULL) Return (API->error);
gmt_grd_init (GMT, Grid->header, options, false);
Grid->header->registration = GMT_GRID_NODE_REG;
@@ -527,9 +530,9 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
}
/* Here we will read either x,y,z or z data, using -R -I [-r] for sizeing */
-
+
no_data_f = (GMT->common.d.active[GMT_IN]) ? (float)GMT->common.d.nan_proxy[GMT_IN] : GMT->session.f_NaN;
-
+
/* Set up and allocate output grid [note: zero padding specificied since no BCs required] */
if ((Grid = GMT_Create_Data (API, GMT_IS_GRID, GMT_IS_SURFACE, GMT_GRID_ALL, NULL, NULL, Ctrl->I.inc, \
GMT_GRID_DEFAULT_REG, 0, NULL)) == NULL) Return (API->error);
@@ -537,7 +540,7 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
/* See if we have a projection info to add */
if (GMT->common.J.active) /* Convert the GMT -J<...> into a proj4 string and save it in the header */
Grid->header->ProjRefPROJ4 = gmt_export2proj4(GMT);
-
+
Amode = Ctrl->A.active ? Ctrl->A.mode : 'm';
if (GMT->common.b.active[GMT_IN] && GMT->current.io.col_type[GMT_IN][GMT_Z] & GMT_IS_RATIME && GMT->current.io.fmt[GMT_IN][GMT_Z].type == GMT_FLOAT) {
@@ -592,7 +595,7 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
}
do { /* Keep returning records until we reach EOF */
- if ((in = GMT_Get_Record (API, GMT_READ_DOUBLE, NULL)) == NULL) { /* Read next record, get NULL if special case */
+ if ((in = GMT_Get_Record (API, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */
if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */
Return (GMT_RUNTIME_ERROR);
if (gmt_M_rec_is_any_header (GMT)) /* Skip all headers */
@@ -603,7 +606,7 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
/* Data record to process */
n_read++;
-
+
if (Ctrl->Z.active) { /* Read separately because of all the possible formats */
if (ij == io.n_expected) {
GMT_Report (API, GMT_MSG_NORMAL, "More than %" PRIu64 " records, only %" PRIu64 " was expected (aborting)!\n", ij, io.n_expected);
@@ -629,46 +632,48 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
row = srow;
if (row == Grid->header->n_rows) row--, n_confused++;
ij = gmt_M_ij0 (Grid->header, row, col); /* Because padding is turned off we can use ij for both Grid and flag */
- if (Amode == 'f') { /* Want the first value to matter only */
- if (flag[ij] == 0) { /* Assign first value and that is the end of it */
- Grid->data[ij] = (float)in[zcol];
- flag[ij] = 1;
- }
- }
- else if (Amode == 's') { /* Want the last value to matter only */
- Grid->data[ij] = (float)in[zcol]; /* Assign last value and that is it */
- flag[ij] = 1;
- }
- else if (Amode == 'l') { /* Keep lowest value */
- if (flag[ij]) { /* Already assigned the first value */
- if (in[zcol] < (double)Grid->data[ij]) Grid->data[ij] = (float)in[zcol];
- }
- else { /* First time, just assign the current value */
- Grid->data[ij] = (float)in[zcol];
- flag[ij] = 1;
- }
- }
- else if (Amode == 'u') { /* Keep highest value */
- if (flag[ij]) { /* Already assigned the first value */
- if (in[zcol] > (double)Grid->data[ij]) Grid->data[ij] = (float)in[zcol];
- }
- else { /* First time, just assign the current value */
- Grid->data[ij] = (float)in[zcol];
- flag[ij] = 1;
- }
- }
- else if (Amode == 'r') { /* Add up squares in case we must rms */
- Grid->data[ij] += (float)in[zcol] * (float)in[zcol];
- flag[ij]++;
- }
- else { /* Add up in case we must sum or mean */
- Grid->data[ij] += (float)in[zcol];
- flag[ij]++;
+ switch (Amode) {
+ case 'f': /* Want the first value to matter only */
+ if (flag[ij] == 0) { /* Assign first value and that is the end of it */
+ Grid->data[ij] = (float)in[zcol];
+ flag[ij] = (unsigned int)n_read;
+ }
+ break;
+ case 's': /* Want the last value to matter only */
+ Grid->data[ij] = (float)in[zcol]; /* Assign last value and that is it */
+ flag[ij] = (unsigned int)n_read;
+ break;
+ case 'l': /* Keep lowest value */
+ if (flag[ij]) { /* Already assigned the first value */
+ if (in[zcol] < (double)Grid->data[ij]) Grid->data[ij] = (float)in[zcol];
+ }
+ else { /* First time, just assign the current value */
+ Grid->data[ij] = (float)in[zcol];
+ }
+ flag[ij]++;
+ break;
+ case 'u': /* Keep highest value */
+ if (flag[ij]) { /* Already assigned the first value */
+ if (in[zcol] > (double)Grid->data[ij]) Grid->data[ij] = (float)in[zcol];
+ }
+ else { /* First time, just assign the current value */
+ Grid->data[ij] = (float)in[zcol];
+ }
+ flag[ij]++;
+ break;
+ case 'r': /* Add up squares in case we must rms */
+ Grid->data[ij] += (float)in[zcol] * (float)in[zcol];
+ flag[ij]++;
+ break;
+ default: /* Add up in case we must sum or mean */
+ Grid->data[ij] += (float)in[zcol];
+ flag[ij]++;
+ break;
}
n_used++;
}
} while (true);
-
+
if (GMT_End_IO (API, GMT_IN, 0) != GMT_NOERROR) { /* Disables further data input */
Return (API->error);
}
@@ -686,12 +691,11 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
else { /* xyz data could have resulted in duplicates */
if (gmt_M_grd_duplicate_column (GMT, Grid->header, GMT_IN)) { /* Make sure longitudes got replicated */
uint64_t ij_west, ij_east;
- bool first_bad = true;
for (row = 0; row < Grid->header->n_rows; row++) { /* For each row, look at west and east bin */
ij_west = gmt_M_ij0 (Grid->header, row, 0);
ij_east = gmt_M_ij0 (Grid->header, row, Grid->header->n_columns - 1);
-
+
if (flag[ij_west] && !flag[ij_east]) { /* Nothing in east bin, just copy from west */
Grid->data[ij_east] = Grid->data[ij_west];
flag[ij_east] = flag[ij_west];
@@ -701,21 +705,25 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
flag[ij_west] = flag[ij_east];
}
else { /* Both have some stuff, consolidate combined value into the west bin, then replicate to the east */
- if (Amode == 'f' || Amode == 's') { /* Trouble since we did not store when we added these points */
- if (first_bad) {
- GMT_Report (API, GMT_MSG_VERBOSE, "Using -Af|s with replicated longitude bins may give inaccurate values");
- first_bad = false;
- }
- }
- else if (Amode == 'l') {
- if (Grid->data[ij_east] < Grid->data[ij_west]) Grid->data[ij_west] = Grid->data[ij_east];
- }
- else if (Amode == 'u') {
- if (Grid->data[ij_east] > Grid->data[ij_west]) Grid->data[ij_west] = Grid->data[ij_east];
- }
- else { /* Add up incase we must sum, rms or mean */
- Grid->data[ij_west] += Grid->data[ij_east];
- flag[ij_west] += flag[ij_east];
+ switch (Amode) {
+ case 'f': /* Keep the first */
+ if (flag[ij_east] < flag[ij_west]) Grid->data[ij_west] = Grid->data[ij_east], flag[ij_west] = flag[ij_east];
+ break;
+ case 's': /* Keep the last */
+ if (flag[ij_east] > flag[ij_west]) Grid->data[ij_west] = Grid->data[ij_east], flag[ij_west] = flag[ij_east];
+ break;
+ case 'l': /* Keep the lowest */
+ if (Grid->data[ij_east] < Grid->data[ij_west]) Grid->data[ij_west] = Grid->data[ij_east];
+ flag[ij_west] += flag[ij_east];
+ break;
+ case 'u': /* Keep the highest */
+ if (Grid->data[ij_east] > Grid->data[ij_west]) Grid->data[ij_west] = Grid->data[ij_east];
+ flag[ij_west] += flag[ij_east];
+ break;
+ default: /* Add up in case we must sum, rms, mean, or standard deviation */
+ Grid->data[ij_west] += Grid->data[ij_east];
+ flag[ij_west] += flag[ij_east];
+ break;
}
/* Replicate: */
Grid->data[ij_east] = Grid->data[ij_west];
@@ -725,36 +733,29 @@ int GMT_xyz2grd (void *V_API, int mode, void *args) {
}
for (ij = 0; ij < Grid->header->nm; ij++) { /* Check if all nodes got one value only */
- if (flag[ij] == 1) { /* This catches nodes with one value or the -Al|u single values */
- if (Amode == 'n') Grid->data[ij] = 1.0f;
- n_filled++;
- }
- else if (flag[ij] == 0) {
+ if (flag[ij] < n_min) { /* Cells are not filled enough */
n_empty++;
Grid->data[ij] = no_data_f;
}
- else { /* More than 1 value went to this node */
+ else { /* Enough values went to this node */
if (Amode == 'n')
Grid->data[ij] = (float)flag[ij];
else if (Amode == 'm')
Grid->data[ij] /= (float)flag[ij];
else if (Amode == 'r')
Grid->data[ij] = (float)sqrt (Grid->data[ij] / (float)flag[ij]);
- /* implicit else means return the sum of the values */
+ /* Implicit else means return the currently stored value */
n_filled++;
- n_stuffed++;
}
}
gmt_M_free (GMT, flag);
-
+
if (gmt_M_is_verbose (GMT, GMT_MSG_VERBOSE)) {
char line[GMT_BUFSIZ], e_value[GMT_LEN32];
sprintf (line, "%s\n", GMT->current.setting.format_float_out);
(GMT->common.d.active[GMT_IN]) ? sprintf (e_value, GMT->current.setting.format_float_out, GMT->common.d.nan_proxy[GMT_IN]) : sprintf (e_value, "NaN");
GMT_Report (API, GMT_MSG_VERBOSE, "Data records read: %" PRIu64 " used: %" PRIu64 " nodes filled: %" PRIu64 " nodes empty: %" PRIu64 " [set to %s]\n",
n_read, n_used, n_filled, n_empty, e_value);
- if (n_bad) GMT_Report (API, GMT_MSG_VERBOSE, "%" PRIu64 " records unreadable\n", n_bad);
- if (n_stuffed && Amode != 'n') GMT_Report (API, GMT_MSG_VERBOSE, "Warning - %" PRIu64 " nodes had multiple entries that were processed\n", n_stuffed);
if (n_confused) GMT_Report (API, GMT_MSG_VERBOSE, "Warning - %" PRIu64 " values gave bad indices: Pixel vs Gridline registration confusion?\n", n_confused);
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/gmt.git
More information about the Pkg-grass-devel
mailing list