From 7a40e359f5b48330dba379a373eb445d5ca1654f Mon Sep 17 00:00:00 2001 From: Jesse Mapel Date: Tue, 1 Dec 2020 14:06:35 -0700 Subject: [PATCH] Removed duplicate inclusion for mappt (#4153) * Removed duplicate inclusion for mappt * Removed exclusion too Changelog update (#4157) * Fixed changelog and added #4150 * More changelog clean-up Lronac2isis tests added (#4141) * added new files * added lronac2isis tests * added data (important) * static funcs Himos App and Test Update (#4156) * Updated himos to new application format * Added new gtests for himos * Removed old himos tests * Addressed excess white spaceing * Added static declaration on app helper functions * Removed unnecessary static declaration Ringsautomos tests added (#4155) * added ring automos tests * uuuugh * comments * fixed typo * messing up your branchm not even once Initial demprep conversion + gtests (#4158) pds2isis gtest (#4144) * write tests with cropped data * add cropped data * test DN's and remove accidental paths * remove accidental prints * fix build failure * remove local path Update .zenodo.json (#4173) Updated cropping notebooks to work with pvl 1.0.0 (#4159) * Updated lo_reimported notebooke * Updated kaguya notebook * Updated chan notebook * Changed path * Updated marci notebook * Updated lo notebook * Updated lo notebooks * Added mimap notebook Initial demprep conversion + gtests (#4158) --- .zenodo.json | 6 +- CHANGELOG.md | 11 +- isis/notebooks/crop_chandrayaan.ipynb | 137 +- isis/notebooks/crop_kaguya.ipynb | 165 +- isis/notebooks/crop_lo.ipynb | 66 +- isis/notebooks/crop_lo_reimport.ipynb | 586 +++--- isis/notebooks/crop_marci.ipynb | 177 +- isis/notebooks/crop_mimap.ipynb | 731 +++++++ isis/src/base/apps/demprep/demprep.cpp | 416 ++++ isis/src/base/apps/demprep/demprep.h | 11 + isis/src/base/apps/demprep/main.cpp | 406 +--- isis/src/base/apps/demprep/tsts/Makefile | 4 - .../apps/demprep/tsts/prepglobal/Makefile | 10 - .../apps/demprep/tsts/prepinside/Makefile | 10 - .../base/apps/demprep/tsts/prepnpole/Makefile | 10 - .../base/apps/demprep/tsts/prepspole/Makefile | 10 - .../apps/demprep/tsts/specialpixels/Makefile | 11 - isis/src/base/apps/mappt/mappt.xml | 2 - isis/src/base/apps/pds2isis/Makefile | 7 - isis/src/base/apps/pds2isis/pds2isis.cpp | 84 + isis/src/base/apps/pds2isis/pds2isis.h | 11 + isis/src/base/apps/pds2isis/tsts/Makefile | 4 - .../base/apps/pds2isis/tsts/bandbin/Makefile | 11 - .../base/apps/pds2isis/tsts/default/Makefile | 10 - .../apps/pds2isis/tsts/offsetTest/Makefile | 9 - .../apps/pds2isis/tsts/projection/Makefile | 15 - .../apps/pds2isis/tsts/specialPixels/Makefile | 16 - .../base/apps/pds2isis/tsts/testBIL/Makefile | 9 - .../base/apps/pds2isis/tsts/testBIP/Makefile | 12 - .../apps/pds2isis/tsts/testNIMSQub/Makefile | 8 - isis/src/base/apps/ringsautomos/main.cpp | 156 +- .../base/apps/ringsautomos/ringsautomos.cpp | 111 + .../src/base/apps/ringsautomos/ringsautomos.h | 10 + isis/src/base/apps/ringsautomos/tsts/Makefile | 4 - .../ringsautomos/tsts/combination1/Makefile | 33 - .../ringsautomos/tsts/combination2/Makefile | 23 - .../ringsautomos/tsts/combination3/Makefile | 23 - .../ringsautomos/tsts/combination4/Makefile | 25 - .../apps/ringsautomos/tsts/default/Makefile | 23 - isis/src/lro/apps/lronac2isis/lronac2isis.cpp | 236 +++ isis/src/lro/apps/lronac2isis/lronac2isis.h | 12 + isis/src/lro/apps/lronac2isis/main.cpp | 234 +-- isis/src/lro/apps/lronac2isis/tsts/Makefile | 4 - .../apps/lronac2isis/tsts/nac-fail/Makefile | 12 - .../apps/lronac2isis/tsts/nacl-full/Makefile | 13 - .../lronac2isis/tsts/nacl-summed/Makefile | 13 - .../apps/lronac2isis/tsts/nacr-full/Makefile | 13 - .../lronac2isis/tsts/nacr-summed/Makefile | 13 - isis/src/mro/apps/himos/himos.cpp | 312 +++ isis/src/mro/apps/himos/himos.h | 10 + isis/src/mro/apps/himos/main.cpp | 313 +-- isis/src/mro/apps/himos/tsts/Makefile | 4 - isis/src/mro/apps/himos/tsts/case01/Makefile | 10 - .../mro/apps/himos/tsts/case02pole/Makefile | 10 - isis/tests/Fixtures.cpp | 12 + isis/tests/Fixtures.h | 12 + isis/tests/FunctionalTestsDemprep.cpp | 225 +++ isis/tests/FunctionalTestsHimos.cpp | 127 ++ isis/tests/FunctionalTestsLronac2isis.cpp | 175 ++ isis/tests/FunctionalTestsPds2isis.cpp | 393 ++++ isis/tests/FunctionalTestsRingsAutomos.cpp | 179 ++ .../data/demprep/ulcn2005_lpo_downsampled.cub | Bin 0 -> 262221 bytes .../data/demprep/ulcn2005_lpo_inside.cub | Bin 0 -> 201744 bytes .../vest64_dtm_specialpixels_downsampled.cub | Bin 0 -> 334254 bytes isis/tests/data/lronac/nacl.img | 154 ++ isis/tests/data/lronac/nacr.img | 154 ++ isis/tests/data/pds2isis/30i001ci_cropped.qub | Bin 0 -> 9396 bytes .../data/pds2isis/BILtestData_cropped.LBL | 250 +++ .../data/pds2isis/BIPtestData_cropped.LBL | 250 +++ .../M3G20081118T222604_V02_RDN_cropped.IMG | Bin 0 -> 3125 bytes isis/tests/data/pds2isis/ab102401_cropped.img | 43 + isis/tests/data/pds2isis/ff17_cropped.img | 1 + isis/tests/data/pds2isis/ff17_cropped.lbl | 50 + .../gaspra_nims_hires_radiance_cropped.fit | Bin 0 -> 28800 bytes .../gaspra_nims_hires_radiance_cropped.lbl | 151 ++ isis/tests/data/pds2isis/ldem_4_cropped.img | Bin 0 -> 5805 bytes isis/tests/data/rings/rings1proj.cub | 1783 +++++++++++++++++ isis/tests/data/rings/rings2proj.cub | 1626 +++++++++++++++ 78 files changed, 8176 insertions(+), 1991 deletions(-) create mode 100755 isis/notebooks/crop_mimap.ipynb create mode 100644 isis/src/base/apps/demprep/demprep.cpp create mode 100644 isis/src/base/apps/demprep/demprep.h delete mode 100644 isis/src/base/apps/demprep/tsts/Makefile delete mode 100644 isis/src/base/apps/demprep/tsts/prepglobal/Makefile delete mode 100644 isis/src/base/apps/demprep/tsts/prepinside/Makefile delete mode 100644 isis/src/base/apps/demprep/tsts/prepnpole/Makefile delete mode 100644 isis/src/base/apps/demprep/tsts/prepspole/Makefile delete mode 100644 isis/src/base/apps/demprep/tsts/specialpixels/Makefile delete mode 100644 isis/src/base/apps/pds2isis/Makefile create mode 100644 isis/src/base/apps/pds2isis/pds2isis.cpp create mode 100644 isis/src/base/apps/pds2isis/pds2isis.h delete mode 100644 isis/src/base/apps/pds2isis/tsts/Makefile delete mode 100644 isis/src/base/apps/pds2isis/tsts/bandbin/Makefile delete mode 100644 isis/src/base/apps/pds2isis/tsts/default/Makefile delete mode 100644 isis/src/base/apps/pds2isis/tsts/offsetTest/Makefile delete mode 100644 isis/src/base/apps/pds2isis/tsts/projection/Makefile delete mode 100644 isis/src/base/apps/pds2isis/tsts/specialPixels/Makefile delete mode 100644 isis/src/base/apps/pds2isis/tsts/testBIL/Makefile delete mode 100644 isis/src/base/apps/pds2isis/tsts/testBIP/Makefile delete mode 100644 isis/src/base/apps/pds2isis/tsts/testNIMSQub/Makefile create mode 100644 isis/src/base/apps/ringsautomos/ringsautomos.cpp create mode 100644 isis/src/base/apps/ringsautomos/ringsautomos.h delete mode 100644 isis/src/base/apps/ringsautomos/tsts/Makefile delete mode 100644 isis/src/base/apps/ringsautomos/tsts/combination1/Makefile delete mode 100644 isis/src/base/apps/ringsautomos/tsts/combination2/Makefile delete mode 100644 isis/src/base/apps/ringsautomos/tsts/combination3/Makefile delete mode 100644 isis/src/base/apps/ringsautomos/tsts/combination4/Makefile delete mode 100644 isis/src/base/apps/ringsautomos/tsts/default/Makefile create mode 100644 isis/src/lro/apps/lronac2isis/lronac2isis.cpp create mode 100644 isis/src/lro/apps/lronac2isis/lronac2isis.h delete mode 100644 isis/src/lro/apps/lronac2isis/tsts/Makefile delete mode 100644 isis/src/lro/apps/lronac2isis/tsts/nac-fail/Makefile delete mode 100644 isis/src/lro/apps/lronac2isis/tsts/nacl-full/Makefile delete mode 100644 isis/src/lro/apps/lronac2isis/tsts/nacl-summed/Makefile delete mode 100644 isis/src/lro/apps/lronac2isis/tsts/nacr-full/Makefile delete mode 100644 isis/src/lro/apps/lronac2isis/tsts/nacr-summed/Makefile create mode 100644 isis/src/mro/apps/himos/himos.cpp create mode 100644 isis/src/mro/apps/himos/himos.h delete mode 100644 isis/src/mro/apps/himos/tsts/Makefile delete mode 100644 isis/src/mro/apps/himos/tsts/case01/Makefile delete mode 100644 isis/src/mro/apps/himos/tsts/case02pole/Makefile create mode 100644 isis/tests/FunctionalTestsDemprep.cpp create mode 100644 isis/tests/FunctionalTestsHimos.cpp create mode 100644 isis/tests/FunctionalTestsLronac2isis.cpp create mode 100644 isis/tests/FunctionalTestsPds2isis.cpp create mode 100644 isis/tests/FunctionalTestsRingsAutomos.cpp create mode 100644 isis/tests/data/demprep/ulcn2005_lpo_downsampled.cub create mode 100644 isis/tests/data/demprep/ulcn2005_lpo_inside.cub create mode 100644 isis/tests/data/demprep/vest64_dtm_specialpixels_downsampled.cub create mode 100644 isis/tests/data/lronac/nacl.img create mode 100644 isis/tests/data/lronac/nacr.img create mode 100644 isis/tests/data/pds2isis/30i001ci_cropped.qub create mode 100644 isis/tests/data/pds2isis/BILtestData_cropped.LBL create mode 100644 isis/tests/data/pds2isis/BIPtestData_cropped.LBL create mode 100644 isis/tests/data/pds2isis/M3G20081118T222604_V02_RDN_cropped.IMG create mode 100644 isis/tests/data/pds2isis/ab102401_cropped.img create mode 100644 isis/tests/data/pds2isis/ff17_cropped.img create mode 100644 isis/tests/data/pds2isis/ff17_cropped.lbl create mode 100644 isis/tests/data/pds2isis/gaspra_nims_hires_radiance_cropped.fit create mode 100644 isis/tests/data/pds2isis/gaspra_nims_hires_radiance_cropped.lbl create mode 100644 isis/tests/data/pds2isis/ldem_4_cropped.img create mode 100644 isis/tests/data/rings/rings1proj.cub create mode 100644 isis/tests/data/rings/rings2proj.cub diff --git a/.zenodo.json b/.zenodo.json index 93cbf995dd..5c019474a1 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -169,6 +169,10 @@ { "name": "Silva, Victor" }, + { + "affiliation": "United States Geological Survey, Astro Geology Science Center", + "name": "Stamile, Amy" + }, { "name": "Stapleton, Summer" }, @@ -198,4 +202,4 @@ "license": "cc-zero", "access_right": "open", "upload_type": "software" -} \ No newline at end of file +} diff --git a/CHANGELOG.md b/CHANGELOG.md index e66491914d..a751f50929 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,9 +29,16 @@ update the Unreleased link so that it compares against the latest release tag. --> ## [Unreleased] + +### Added + - Added documentation to lronaccal and lrowaccal to describe why there are negative DNs in I/F calibrated images. [#3860](https://github.com/USGS-Astrogeology/ISIS3/issues/3860) -- Fixed so required files are reported instead of continuing without them. [#4038](https://github.com/USGS-Astrogeology/ISIS3/issues/4038) -- Update qview MeasureTool to add an option to calculate distances using RA/DEC and update qview to show DEC/RA rather than LAT/LON in lower-right corner [#3371](https://github.com/USGS-Astrogeology/ISIS3/issues/3371) +- Update qview MeasureTool to add an option to calculate distances using RA/DEC and update qview to show DEC/RA rather than LAT/LON in lower-right corner [#3371](https://github.com/USGS-Astrogeology/ISIS3/issues/3371) + +### Fixed + +- Fixed lrowaccal so required SPICE files are reported instead of continuing without them. [#4038](https://github.com/USGS-Astrogeology/ISIS3/issues/4038) +- Fixed not being able to enable USECOORDLIST argument in mappt. [#4150](https://github.com/USGS-Astrogeology/ISIS3/issues/4150) ## [4.3.0] - 2020-10-02 diff --git a/isis/notebooks/crop_chandrayaan.ipynb b/isis/notebooks/crop_chandrayaan.ipynb index a8e2643bd5..3383bd2fb3 100644 --- a/isis/notebooks/crop_chandrayaan.ipynb +++ b/isis/notebooks/crop_chandrayaan.ipynb @@ -3,9 +3,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pvl\n", @@ -20,12 +18,10 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.IsisCubeLabelEncoder): \n", + "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", " def encode_time(self, value):\n", " if value.microsecond:\n", " second = u'%02d.%06d' % (value.second, value.microsecond)\n", @@ -33,15 +29,13 @@ " second = u'%02d' % value.second\n", "\n", " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time.encode('utf-8')" + " return time" ] }, { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "chan_file = '/home/arsanders/testData/chandrayaan/forwardDescending/input/M3G20081129T171431_V03_L1B.LBL'\n", @@ -59,7 +53,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -71,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -83,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -93,10 +87,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": true - }, + "execution_count": 8, + "metadata": {}, "outputs": [], "source": [ "def read_chandrayaan(b_image_data, line_length, n_lines, n_bands):\n", @@ -110,20 +102,19 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "n_bands = header['RDN_FILE']['RDN_IMAGE']['BANDS']\n", "n_output_bands = 3\n", "image_data = read_chandrayaan(b_image_data, line_length, n_lines, n_bands)\n", - "cropped_image_data = image_data[np.where(np.arange(image_data.shape[0]) % n_bands < n_output_bands)]\n", - "#cropped_image_data = image_data" + "cropped_image_data = image_data[np.where(np.arange(image_data.shape[0]) % n_bands < n_output_bands)]" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -132,7 +123,7 @@ "(15, 304)" ] }, - "execution_count": 11, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -143,7 +134,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { "scrolled": true }, @@ -151,16 +142,16 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 12, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -177,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -189,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -199,7 +190,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -208,7 +199,7 @@ "(50, 304)" ] }, - "execution_count": 15, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -219,22 +210,22 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAAoCAYAAAAbporbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAJ4klEQVR4nO2dXchlVRnHf/990jE1Mz+qSc20vBlKbBATDG+ScryZBC+MCINAioS8CLKEsO4K6iIsw0ioiISySLpJkSIi8rOZcWQyx1IyxVHswyL86H26WGvtvfY6e++z33fOzOnsnh+8s/d+1rPWfp6zZv/P2s/7nn1kZjiO4zjTpFp1AI7jOM6Rw0XecRxnwrjIO47jTBgXecdxnAnjIu84jjNhXOQdx3EmzCiRl3S5pEclHZR0Q0e7JH0ttu+TtHP5oTqO4zibZaHIS5oBXwd2ATuAD0naUbjtAs6LP9cCtyw5TsdxHGcLjFnJXwQcNLM/mtnLwO3A7sJnN/BdC/wWOFnS9iXH6jiO42yS14zwOR94l6QDwAbwEPD3Dp8PS/pMNu4ZwDN9gx6rbXYcJ8w3qP4nO1SHT9tv2DbCXpyiNnbZy3gybNQ5B2zF+HOfR+7tsyiWzGnEGJ2fg+5PG7SFPovOuYlcS+Zz3/q4tqB9c20dr9Jmx1XPOKm5Nz8bPJ2Kcbsvk/Z5y8uus13z9qaL1fGm464Y1RG7Sl/ltn7/5rK2ur3tX7wGarf3n8M68y3P0bbNj5M0rx17w559rzxvZqczkjEivwHca2ZXSnod8Afgng6/vWZ2SYhP99B1zUrXEso5HMfxvKe6DFShSqDspqISkqCqUkeoqmCL7cFehX21j6XMlo+R98+PJaxqHzfnLfykcP+TX0lddikITdX4meL/ruhjab+KbfV4mW/yq9QIl/J9Mr/Qx6qBcWp7GUezbeLtGUOFiOZ9u/xaY6r2m4+n7/yZXT0xlOMsHNd6Y66Ps3Gbsazz9WznY804AlN2KbTis1asrX6pnThNsS2JHcrsqbus1UeybJsJTGYL/7VSn2CrLy8ZVda3yvyrYsxkq7C6X5X1qzAqbbR9UzvpeINZ7ZuPnds3qGTM2GiND9S2mTaoKLbaYEYxZhyv7sdG7BPO14y5Efcta4/9435qT+M1+xb34zaLYVbbYBblYwbMpLivGKuYISoqZhLHv+XJJ9kEY0R+P3AVgJm9KOmvwEuFz3PAmdnxmcDT5UBmditwK8BJOsU0m4WGJNaQCXlVi3tt73gzCP9ji/6pXyHEpWDX4p4dt3xzvzqutm+Xvb7Yq6xfKdBZv1qc54SeOo7UpyUstV8mwhXtsbrEtBVHXztNfoV49u13CnARS++bRdcxbeHtjHOEbynAnW352PT37XrjmnsDaMVZ2GiPVYt7/vqU4h7bVAt95pOGiwKfBDz1r8U8syf/JNhd4k7Wlot7ac+FOvXNRbwU97Rt2pr22YAt9GsLfCn2wb9f4KsOMU7xlALftG10invIuTgeIfDNm0db3IOtLfBVvG5yga+28AeRY0T+fuA8SedE/3cAHy18fgN8UdJe4F/Ay2bWW6pxHMdxjg4LRd7MXpV0HXAX8Fbgh2Z2n6SPx/ZvAt8AzgXeB7yenl/oluWawRV83FdrVV2UZzLbXImmXtHnvmqvwjvKNqF/4ddZimlW4l0lmt4VfDpPVa62s9V48qvaq/7u0kNcaVdk/edX301/za+IO1fQRTzFeEMr8FaZp/Ua9NwFdJ6/nWtfmWjId24Vvsg3j7UVr40au7NEo3LMgRJNvoLPfJX1Sav4MJVNeSa1dZVo5o7pLtGU5RnoL9Hkq/E0Tl+JpizPwHCJJtkav2YFn587L88k37SCB+ZW8eWKu1zBhz5p3MUlmvKOIPkPreKbu4D+Ek0qzzSvVbOKr+ZuCRejMY8alnQM8DPg52b21RH+TwAXmtnzfT4nVafaxdt20aq9h87z9ffszaAuz6Q26C7RdJVn4nau/t7zZlCLe5+tZaeOqay9Q7v+Ho6TEA+Ie4o3F4qyz1D9Xdl56bCT+/SUi3p8F/ul16Bx3VSNvcN3sFzTO64N+6axy7ba37r9M1EeVaLpKslkfVKpJRftoRJNXp4hHdMW9C5xh/4STV6GSf59JZpc3FN7X4mm7DNUosnFPfh2l2jSOHOivqBEE/a7a/BJ3PPa/RiBb795tMU95ZLX38O4wwKfhD30D+I+i7o3237wQTO7kJEsFHkFtf0O8IKZXd/j82bgWTMzSRcBPwLOtoHBJT1HKO30vhGsOafhua0jntt68v+U29nL/uuaS4CPAA9L2hNtnyOUblK55irgE5JeBf4NXD0k8LHf6ZIe2Mw70jrhua0nntt64rn1M6Ym/2vaN55dPjcDN281CMdxHOfI4A8ocxzHmTCrFvlbV3z+I4nntp54buuJ59bDqL+ucRzHcdaTVa/kHcdxnCPISkR+0fPp1w1JT0h6WNIeSQ9E2ymS7pb0WNy+YdVxjkHSbZIOSdqf2XpzkfTZOI+PSvrAaqIeT09+N0n6S5y/PZKuyNrWIj9JZ0n6haQDkh6R9KloX/u5G8htCvN2nKT7JO2NuX0h2pc3b2Z2VH8If///OOETsscCe4EdRzuOJef0BHBaYfsycEPcvwH40qrjHJnLpcBOYP+iXAjfL7AX2AacE+d1tuoctpDfTcCnO3zXJj9gO7Az7qcHCe6YwtwN5DaFeRNwYtw/BrgXuHiZ87aKlfyY59NPgd2ED5ERtx9cYSyjMbNfAS8U5r5cdgO3m9lLZvYn4CBhfv9n6cmvj7XJz8yeMbOH4v6LwAHC477Xfu4GcutjnXIzM/tnPDwm/hhLnLdViPwZwJ+z46cYnrB1wIC7JD0Yn88D8CaLD2mL2zeuLLrDpy+XKc3ldfGrK2/Lbo3XMj9JbwPeTVgVTmruitxgAvMmaRY/aHoIuNvMljpvqxD5rg9Wrfuf+FxiZjsJX4P4SUmXrjqgo8RU5vIW4O3ABYQvuvlKtK9dfpJOBO4Arjezfwy5dtjWLbdJzJuZ/cfMLiA8ov0iSe8ccN90bqsQ+aeAs7LjzmfPrxNm9nTcHgJ+Qrh9elbxKxDj9tDqIjxs+nKZxFya2bPxQtsAvkVz+7tW+cUHCd4BfN/MfhzNk5i7rtymMm8JM/sb8EvgcpY4b6sQ+fr59JKOBa4G7lxBHEtB0gkK35iFpBOA9xO+aOVO4Jrodg3w09VEuBT6crkTuFrSNoXvGzgPuG8F8R0Wan8f8ZWE+YM1yk+SgG8DB6z9pNi1n7u+3CYyb6dLOjnuvxa4DPg9y5y3Ff1G+QrCb8gfB25c9W+4DzOXcwm/7d4LPJLyAU4lfE3iY3F7yqpjHZnPDwi3vq8QVg0fG8oFuDHO46PArlXHv8X8vgc8DOyLF9H2dcsPeC/htn0fsCf+XDGFuRvIbQrzdj7wu5jDfuDz0b60efNPvDqO40wY/8Sr4zjOhHGRdxzHmTAu8o7jOBPGRd5xHGfCuMg7juNMGBd5x3GcCeMi7ziOM2Fc5B3HcSbMfwFimKj5PP7vlAAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -251,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -263,7 +254,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -279,22 +270,22 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 19, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -311,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -319,23 +310,23 @@ "obs_fn, obs_ext = os.path.splitext(obs_file)\n", "loc_fn, loc_ext = os.path.splitext(loc_file)\n", "tab_fn, tab_ext = os.path.splitext(tab_file)\n", - "\n", - "mini_rdn_fn = rdn_fn + '_cropped' + rdn_ext\n", + "crop = '_cropped'\n", + "mini_rdn_fn = rdn_fn + crop + rdn_ext\n", "mini_rdn_bn = os.path.basename(mini_rdn_fn)\n", "\n", - "mini_obs_fn = obs_fn + '_cropped' + obs_ext\n", + "mini_obs_fn = obs_fn + crop + obs_ext\n", "mini_obs_bn = os.path.basename(mini_obs_fn)\n", "\n", - "mini_loc_fn = loc_fn + '_cropped' + loc_ext\n", + "mini_loc_fn = loc_fn + crop + loc_ext\n", "mini_loc_bn = os.path.basename(mini_loc_fn)\n", "\n", - "mini_tab_fn = tab_fn + '_cropped' + tab_ext\n", + "mini_tab_fn = tab_fn + crop + tab_ext\n", "mini_tab_bn = os.path.basename(mini_tab_fn)\n" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -361,21 +352,35 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "7527" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "label_fn, label_ext = os.path.splitext(chan_file)\n", - "out_label = label_fn + '_cropped' + label_ext\n", - "pvl.dump(header, out_label, cls=RealIsisCubeLabelEncoder)" + "out_label = label_fn + crop + label_ext\n", + "\n", + "grammar = pvl.grammar.ISISGrammar()\n", + "grammar.comments+=((\"#\", \"\\n\"), )\n", + "encoder = RealIsisCubeLabelEncoder()\n", + "\n", + "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" ] }, { "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": true - }, + "execution_count": 22, + "metadata": {}, "outputs": [], "source": [ "with open(mini_rdn_fn, 'wb+') as f:\n", @@ -386,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -398,10 +403,8 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": true - }, + "execution_count": 24, + "metadata": {}, "outputs": [], "source": [ "with open(mini_obs_fn, 'wb+') as f:\n", @@ -412,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -426,18 +429,16 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python autocnet", + "display_name": "Python 3", "language": "python", - "name": "autocnet" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -449,7 +450,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.0" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_kaguya.ipynb b/isis/notebooks/crop_kaguya.ipynb index 9dec7ac3eb..17deb1e8b1 100644 --- a/isis/notebooks/crop_kaguya.ipynb +++ b/isis/notebooks/crop_kaguya.ipynb @@ -2,10 +2,8 @@ "cells": [ { "cell_type": "code", - "execution_count": 80, - "metadata": { - "collapsed": true - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ "import pvl\n", @@ -19,10 +17,8 @@ }, { "cell_type": "code", - "execution_count": 120, - "metadata": { - "collapsed": true - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ "#kaguya_file = '/scratch/arsanders/kaguyatc/TC2S2B0_01_03043N107E3384.img'\n", @@ -33,10 +29,8 @@ }, { "cell_type": "code", - "execution_count": 121, - "metadata": { - "collapsed": true - }, + "execution_count": 3, + "metadata": {}, "outputs": [], "source": [ "header = pvl.load(kaguya_file)" @@ -44,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -66,22 +60,25 @@ " ('INSTRUMENT_ID', 'MARCI')\n", " ('PRODUCER_ID', 'MRO_MARCI_TEAM')\n", " ('DATA_SET_ID', 'MRO-M-MARCI-2-EDR-L0-V1.0')\n", - " ('PRODUCT_CREATION_TIME', datetime.datetime(2007, 5, 17, 18, 31, 28))\n", + " ('PRODUCT_CREATION_TIME',\n", + " datetime.datetime(2007, 5, 17, 18, 31, 28, tzinfo=datetime.timezone.utc))\n", " ('SOFTWARE_NAME', 'makepds05 $Revision: 1.7 $')\n", " ('UPLOAD_ID', 'UNK')\n", " ('ORIGINAL_PRODUCT_ID', '4A_05_0001000200')\n", " ('PRODUCT_ID', 'MOI_000009_0294_MU_00N044W')\n", - " ('START_TIME', datetime.datetime(2006, 3, 24, 4, 25, 53, 96000))\n", - " ('STOP_TIME', datetime.datetime(2006, 3, 24, 4, 55, 48, 296000))\n", + " ('START_TIME',\n", + " datetime.datetime(2006, 3, 24, 4, 25, 53, 96000, tzinfo=datetime.timezone.utc))\n", + " ('STOP_TIME',\n", + " datetime.datetime(2006, 3, 24, 4, 55, 48, 296000, tzinfo=datetime.timezone.utc))\n", " ('SPACECRAFT_CLOCK_START_COUNT', '827641567:30')\n", " ('SPACECRAFT_CLOCK_STOP_COUNT', 'N/A')\n", - " ('INTERFRAME_DELAY', Units(value=3.2, units='SECONDS'))\n", - " ('FOCAL_PLANE_TEMPERATURE', Units(value=240.9, units='K'))\n", + " ('INTERFRAME_DELAY', Quantity(value=3.2, units='SECONDS'))\n", + " ('FOCAL_PLANE_TEMPERATURE', Quantity(value=240.9, units='K'))\n", " ('SAMPLE_BIT_MODE_ID', 'SQROOT')\n", - " ('LINE_EXPOSURE_DURATION', Units(value=3112.237, units='MSEC'))\n", + " ('LINE_EXPOSURE_DURATION', Quantity(value=3112.237, units='MSEC'))\n", " ('SAMPLING_FACTOR', 8)\n", " ('SAMPLE_FIRST_PIXEL', 0)\n", - " ('FILTER_NAME', {'LONG_UV', 'SHORT_UV'})\n", + " ('FILTER_NAME', frozenset({'LONG_UV', 'SHORT_UV'}))\n", " ('RATIONALE_DESC', 'Post-MOI image of Argyre and Mare Erythraeum region')\n", " ('DATA_QUALITY_DESC', 'OK')\n", " ('ORBIT_NUMBER', 9)\n", @@ -97,7 +94,7 @@ "])" ] }, - "execution_count": 122, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -108,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 123, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -117,7 +114,7 @@ "12" ] }, - "execution_count": 123, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -128,15 +125,18 @@ }, { "cell_type": "code", - "execution_count": 132, - "metadata": { - "collapsed": true - }, + "execution_count": 6, + "metadata": {}, "outputs": [], "source": [ "with open(kaguya_file, 'rb') as f:\n", " try:\n", - " image_offset = header[\"^IMAGE\"].value-(header['IMAGE']['SAMPLE_BITS']//8)\n", + " # For marci image \n", + " image_offset = header['^IMAGE'] * header['LABEL_RECORDS'] * header[\"RECORD_BYTES\"] - (header['IMAGE']['SAMPLE_BITS']//8)\n", + " \n", + " # For others\n", + " # image_offset = header[\"^IMAGE\"].value-(header['IMAGE']['SAMPLE_BITS']//8) \n", + " \n", " f.seek(image_offset)\n", " b_image_data = f.read()\n", " except AttributeError:\n", @@ -149,10 +149,8 @@ }, { "cell_type": "code", - "execution_count": 133, - "metadata": { - "collapsed": true - }, + "execution_count": 7, + "metadata": {}, "outputs": [], "source": [ "n_lines = 40\n", @@ -161,21 +159,9 @@ }, { "cell_type": "code", - "execution_count": 137, + "execution_count": 8, "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "buffer is smaller than requested size", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mimage_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_lines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mimage_sample\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrombuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb_image_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mline_length\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mline_length\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint16\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcount\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline_length\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mimage_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage_sample\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mimage_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: buffer is smaller than requested size" - ] - } - ], + "outputs": [], "source": [ "image_data = []\n", "for j in range(n_lines):\n", @@ -186,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 136, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -195,7 +181,7 @@ "(40, 64)" ] }, - "execution_count": 136, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -206,22 +192,22 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 135, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -238,13 +224,11 @@ }, { "cell_type": "code", - "execution_count": 112, - "metadata": { - "collapsed": true - }, + "execution_count": 11, + "metadata": {}, "outputs": [], "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.IsisCubeLabelEncoder): \n", + "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", " def encode_time(self, value):\n", " if value.microsecond:\n", " second = u'%02d.%06d' % (value.second, value.microsecond)\n", @@ -252,53 +236,63 @@ " second = u'%02d' % value.second\n", "\n", " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time.encode('utf-8')" + " return time" ] }, { "cell_type": "code", - "execution_count": 113, - "metadata": { - "collapsed": true - }, + "execution_count": 12, + "metadata": {}, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(image_file)\n", - "mini_image_fn = image_fn + '_cropped' + image_ext\n", + "crop = '_cropped'\n", + "mini_image_fn = image_fn + crop + image_ext\n", "mini_image_bn = os.path.basename(mini_image_fn)\n", "\n", + "grammar = pvl.grammar.ISISGrammar()\n", + "grammar.comments+=((\"#\", \"\\n\"), )\n", + "encoder = RealIsisCubeLabelEncoder()\n", + "\n", "# Overwrite the number of lines in the label\n", "header['IMAGE']['LINES'] = n_lines\n", "\n", "if kaguya_file != image_file:\n", " # If detached label, point the mini label to the mini image\n", - " header['^IMAGE'] = [mini_image_bn, pvl._collections.Units(1, 'BYTES')]\n", + " header['^IMAGE'] = [mini_image_bn, pvlcollections.Units(1, 'BYTES')]\n", " header['FILE_NAME'] = mini_image_bn\n", "else:\n", " # If attached label, calculate the new offset\n", - " header['^IMAGE'] = pvl._collections.Units(len(pvl.dumps(header, cls=RealIsisCubeLabelEncoder)), 'BYTES')" + " header['^IMAGE'] = pvl.collections.Units(len(pvl.dumps(header, encoder=encoder, grammar=grammar)), 'BYTES')" ] }, { "cell_type": "code", - "execution_count": 114, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1820" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "label_fn, label_ext = os.path.splitext(kaguya_file)\n", - "out_label = label_fn + '_cropped' + label_ext\n", + "out_label = label_fn + crop + label_ext\n", "\n", - "pvl.dump(header, out_label, cls=RealIsisCubeLabelEncoder)" + "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" ] }, { "cell_type": "code", - "execution_count": 115, - "metadata": { - "collapsed": true - }, + "execution_count": 14, + "metadata": {}, "outputs": [], "source": [ "with open(mini_image_fn, 'ab+') as f:\n", @@ -310,27 +304,16 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python autocnet", + "display_name": "Python 3", "language": "python", - "name": "autocnet" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -342,7 +325,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.0" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_lo.ipynb b/isis/notebooks/crop_lo.ipynb index a829f8ffd7..193003f750 100644 --- a/isis/notebooks/crop_lo.ipynb +++ b/isis/notebooks/crop_lo.ipynb @@ -3,9 +3,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pvl\n", @@ -29,9 +27,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "header = pvl.load(lo_file)" @@ -220,9 +216,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "n_lines = 5\n", @@ -232,9 +226,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "image_data = []\n", @@ -272,7 +264,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -281,7 +273,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -299,12 +291,10 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.IsisCubeLabelEncoder): \n", + "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", " def encode_time(self, value):\n", " if value.microsecond:\n", " second = u'%02d.%06d' % (value.second, value.microsecond)\n", @@ -312,24 +302,28 @@ " second = u'%02d' % value.second\n", "\n", " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time.encode('utf-8')" + " return time" ] }, { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(lo_file)\n", - "mini_image_fn = image_fn + '_cropped' + image_ext\n", + "crop = '_cropped'\n", + "mini_image_fn = image_fn + crop + image_ext\n", "mini_image_bn = os.path.basename(mini_image_fn)\n", "\n", + "grammar = pvl.grammar.ISISGrammar()\n", + "grammar.comments+=((\"#\", \"\\n\"), )\n", + "encoder = RealIsisCubeLabelEncoder()\n", + "\n", + "\n", "# Overwrite the number of lines in the label\n", "\n", - "header['^QUBE'] = pvl._collections.Units(len(pvl.dumps(header, cls=RealIsisCubeLabelEncoder)), 'BYTES')\n", + "header['^QUBE'] = pvl.collections.Units(len(pvl.dumps(header, encoder=encoder, grammar=grammar)), 'BYTES')\n", "header['QUBE']['CORE_ITEMS'][1] = n_lines" ] }, @@ -350,7 +344,7 @@ " ('FILE_STATE', 'CLEAN')\n", " ('^HISTORY', 26)\n", " ('HISTORY', PVLObject([]))\n", - " ('^QUBE', Units(value=4104, units='BYTES'))\n", + " ('^QUBE', Units(value=5425, units='BYTES'))\n", " ('QUBE',\n", " {'AXES': 3,\n", " 'AXIS_NAME': ['SAMPLE', 'LINE', 'BAND'],\n", @@ -509,7 +503,7 @@ { "data": { "text/plain": [ - "b'CCSD3ZF0000100000001NJPL3IF0PDS200000001 = SFDU_LABEL\\r\\nRECORD_TYPE = FIXED_LENGTH\\r\\nRECORD_BYTES = 512\\r\\nFILE_RECORDS = 167\\r\\nLABEL_RECORDS = 25\\r\\nFILE_STATE = CLEAN\\r\\n^HISTORY = 26\\r\\nBEGIN_OBJECT = HISTORY\\r\\nEND_OBJECT = HISTORY\\r\\n^QUBE = 4104 \\r\\nBEGIN_OBJECT = QUBE\\r\\n AXES = 3\\r\\n AXIS_NAME = (SAMPLE, LINE, BAND)\\r\\n CORE_ITEMS = (100, 5, 1)\\r\\n CORE_ITEM_BYTES = 1\\r\\n CORE_ITEM_TYPE = PC_UNSIGNED_INTEGER\\r\\n CORE_BASE = 0.0\\r\\n CORE_MULTIPLIER = 1.0\\r\\n CORE_VALID_MINIMUM = 1\\r\\n CORE_NULL = 0\\r\\n CORE_LOW_REPR_SATURATION = 0\\r\\n CORE_LOW_INSTR_SATURATION = 0\\r\\n CORE_HIGH_INSTR_SATURATION = 255\\r\\n CORE_HIGH_REPR_SATURATION = 255\\r\\n SUFFIX_BYTES = 4\\r\\n SUFFIX_ITEMS = (0, 0, 0)\\r\\n CORE_NAME = RAW_DATA_NUMBER\\r\\n CORE_UNIT = NONE\\r\\n IMAGE_NUMBER = \"308300\"\\r\\n OUTPUT_MICRON = 50um\\r\\n PRODUCT_ID = 3083M\\r\\n BEGIN_GROUP = BAND_BIN\\r\\n BAND_BIN_UNIT = NONE\\r\\n BAND_BIN_ORIGINAL_BAND = 1\\r\\n BAND_BIN_CENTER = 1.0\\r\\n END_GROUP = BAND_BIN\\r\\n BEGIN_GROUP = ISIS_INGESTION\\r\\n TIF2ISIS_VERSION = 22_FEB_2002\\r\\n LO_SLICE_VERSION = 07_JUL_2003\\r\\n SCAN_RESOLUTION = 25um\\r\\n SCAN_DENSITY_RANGE = 0.6_TO_3.0\\r\\n SCAN_CREATION_DATE = \"2004-02-05T10:31:07\"\\r\\n END_GROUP = ISIS_INGESTION\\r\\n BEGIN_GROUP = ISIS_MOSAIC\\r\\n SPACECRAFT_NAME = (LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3)\\r\\n INSTRUMENT_ID = (80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA)\\r\\n IMAGE_NUMBER = (\"308309030\", \"308309040\", \"308309050\", \"308309060\", \"308309070\", \"308309080\", \"308309090\", \"308309110\", \"308309120\", \"308309130\", \"308309140\", \"308309150\", \"308309160\", \"308309170\", \"308309180\", \"308309190\", \"308309210\", \"308309220\", \"308309230\", \"308309240\", \"308309250\", \"308309260\", \"308309271\", \"308309280\", \"308309300\", \"308309310\", \"308309320\")\\r\\n END_GROUP = ISIS_MOSAIC\\r\\n BEGIN_GROUP = ISIS_INSTRUMENT\\r\\n FIDUCIAL_COORD_MICRON = 50um\\r\\n SPACECRAFT_NAME = LUNAR_ORBITER_3\\r\\n FRAME_NUMBER = \"3083\"\\r\\n INSTRUMENT_ID = 80_MM_FOCAL_LENGTH_CAMERA\\r\\n START_TIME = \"1967-02-17T21:09:27.610\"\\r\\n LINES = 8750\\r\\n SAMPLES = 11800\\r\\n BORESIGHT_LINE = 4550.455\\r\\n BORESIGHT_SAMPLE = 5427.039\\r\\n INSTPARS = /farm/proc1/lo/isislodata/lo_parameters.def.4\\r\\n END_GROUP = ISIS_INSTRUMENT\\r\\n BEGIN_GROUP = ISIS_TARGET\\r\\n TARGET_NAME = MOON\\r\\n LATITUDE_SYSTEM = OGRAPHIC\\r\\n LONGITUDE_SYSTEM = 360\\r\\n TARGDEF = /usgs/cpkgs/isis2/lsb/isisd/data/targets/moon_east.def.1\\r\\n END_GROUP = ISIS_TARGET\\r\\n BEGIN_GROUP = ISIS_GEOMETRY\\r\\n BASE_KERNELS = (/usgs/cpkgs/isis2/lsb/isisd/data/mk98264a.tls, /usgs/cpkgs/isis2/lsb/isisd/lodata/lo1_fict.tsc, /usgs/cpkgs/isis2/lsb/isisd/lodata/lo2_fict.tsc, /usgs/cpkgs/isis2/lsb/isisd/lodata/lo3_fict.tsc, /usgs/cpkgs/isis2/lsb/isisd/lodata/lo4_fict.tsc, /usgs/cpkgs/isis2/lsb/isisd/lodata/lo5_fict.tsc, /usgs/cpkgs/isis2/lsb/isisd/data/pck00005.tpc)\\r\\n SPACECRAFT_KERNELS = (/usgs/cpkgs/isis2/lsb/isisd/data/de405.bsp, /farm/proc1/lo/isislodata/lo3_support.bsp)\\r\\n CAMERA_KERNELS = /farm/proc1/lo/isislodata/lo3_support.bck\\r\\n CAMERA_KERNEL_TYPES = 1\\r\\n KERNLST = /farm/proc1/lo/isislodata/lo3_kernels.def.1\\r\\n NAIF_SOFTWARE_VERSION = CSPICE_N0058\\r\\n LEV_SOFTWARE_VERSION = LO_MED_1.0\\r\\n END_GROUP = ISIS_GEOMETRY\\r\\nEND_OBJECT = QUBE\\r\\nEND'" + "'CCSD3ZF0000100000001NJPL3IF0PDS200000001 = SFDU_LABEL\\nRECORD_TYPE = FIXED_LENGTH\\nRECORD_BYTES = 512\\nFILE_RECORDS = 167\\nLABEL_RECORDS = 25\\nFILE_STATE = CLEAN\\n^HISTORY = 26\\nObject = HISTORY\\n\\nEnd_Object = HISTORY\\n^QUBE = 5425 \\nObject = QUBE\\n AXES = 3\\n AXIS_NAME = (SAMPLE, LINE, BAND)\\n CORE_ITEMS = (100, 5, 1)\\n CORE_ITEM_BYTES = 1\\n CORE_ITEM_TYPE = PC_UNSIGNED_INTEGER\\n CORE_BASE = 0.0\\n CORE_MULTIPLIER = 1.0\\n CORE_VALID_MINIMUM = 1\\n CORE_NULL = 0\\n CORE_LOW_REPR_SATURATION = 0\\n CORE_LOW_INSTR_SATURATION = 0\\n CORE_HIGH_INSTR_SATURATION = 255\\n CORE_HIGH_REPR_SATURATION = 255\\n SUFFIX_BYTES = 4\\n SUFFIX_ITEMS = (0, 0, 0)\\n CORE_NAME = RAW_DATA_NUMBER\\n CORE_UNIT = NONE\\n IMAGE_NUMBER = \"308300\"\\n OUTPUT_MICRON = 50um\\n PRODUCT_ID = 3083M\\n Group = BAND_BIN\\n BAND_BIN_UNIT = NONE\\n BAND_BIN_ORIGINAL_BAND = 1\\n BAND_BIN_CENTER = 1.0\\n End_Group = BAND_BIN\\n Group = ISIS_INGESTION\\n TIF2ISIS_VERSION = 22_FEB_2002\\n LO_SLICE_VERSION = 07_JUL_2003\\n SCAN_RESOLUTION = 25um\\n SCAN_DENSITY_RANGE = 0.6_TO_3.0\\n SCAN_CREATION_DATE = \"2004-02-05T10:31:07\"\\n End_Group = ISIS_INGESTION\\n Group = ISIS_MOSAIC\\n SPACECRAFT_NAME = (LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3)\\n INSTRUMENT_ID = (80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA)\\n IMAGE_NUMBER = (\"308309030\", \"308309040\", \"308309050\", \"308309060\",\\n \"308309070\", \"308309080\", \"308309090\", \"308309110\",\\n \"308309120\", \"308309130\", \"308309140\", \"308309150\",\\n \"308309160\", \"308309170\", \"308309180\", \"308309190\",\\n \"308309210\", \"308309220\", \"308309230\", \"308309240\",\\n \"308309250\", \"308309260\", \"308309271\", \"308309280\",\\n \"308309300\", \"308309310\", \"308309320\")\\n End_Group = ISIS_MOSAIC\\n Group = ISIS_INSTRUMENT\\n FIDUCIAL_COORD_MICRON = 50um\\n SPACECRAFT_NAME = LUNAR_ORBITER_3\\n FRAME_NUMBER = \"3083\"\\n INSTRUMENT_ID = 80_MM_FOCAL_LENGTH_CAMERA\\n START_TIME = \"1967-02-17T21:09:27.610\"\\n LINES = 8750\\n SAMPLES = 11800\\n BORESIGHT_LINE = 4550.455\\n BORESIGHT_SAMPLE = 5427.039\\n INSTPARS = /farm/proc1/lo/isislodata/lo_parameters.def.4\\n End_Group = ISIS_INSTRUMENT\\n Group = ISIS_TARGET\\n TARGET_NAME = MOON\\n LATITUDE_SYSTEM = OGRAPHIC\\n LONGITUDE_SYSTEM = 360\\n TARGDEF = /usgs/cpkgs/isis2/lsb/isisd/data/targets/moon_east.def.1\\n End_Group = ISIS_TARGET\\n Group = ISIS_GEOMETRY\\n BASE_KERNELS = (/usgs/cpkgs/isis2/lsb/isisd/data/mk98264a.tls,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo1_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo2_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo3_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo4_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo5_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/data/pck00005.tpc)\\n SPACECRAFT_KERNELS = (/usgs/cpkgs/isis2/lsb/isisd/data/de405.bsp,\\n /farm/proc1/lo/isislodata/lo3_support.bsp)\\n CAMERA_KERNELS = /farm/proc1/lo/isislodata/lo3_support.bck\\n CAMERA_KERNEL_TYPES = 1\\n KERNLST = /farm/proc1/lo/isislodata/lo3_kernels.def.1\\n NAIF_SOFTWARE_VERSION = CSPICE_N0058\\n LEV_SOFTWARE_VERSION = LO_MED_1.0\\n End_Group = ISIS_GEOMETRY\\nEnd_Object = QUBE\\nEND'" ] }, "execution_count": 13, @@ -519,18 +513,16 @@ ], "source": [ "label_fn, label_ext = os.path.splitext(lo_file)\n", - "out_label = label_fn + '_cropped' + label_ext\n", + "out_label = label_fn + crop + label_ext\n", "\n", - "pvl.dump(header, out_label, cls=RealIsisCubeLabelEncoder)\n", - "pvl.dumps(header)" + "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)\n", + "pvl.dumps(header, encoder=encoder, grammar=grammar)" ] }, { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "with open(mini_image_fn, 'ab+') as f:\n", @@ -543,18 +535,16 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python autocnet", + "display_name": "Python 3", "language": "python", - "name": "autocnet" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -566,7 +556,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.0" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_lo_reimport.ipynb b/isis/notebooks/crop_lo_reimport.ipynb index 844549c175..7b1aeb2eeb 100644 --- a/isis/notebooks/crop_lo_reimport.ipynb +++ b/isis/notebooks/crop_lo_reimport.ipynb @@ -3,9 +3,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pvl\n", @@ -20,9 +18,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "lo_file = '/home/arsanders/testData/lo/reimport/input/3133_h1.pds.img'" @@ -31,9 +27,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "header = pvl.load(lo_file)" @@ -64,7 +58,8 @@ " ('INSTRUMENT_NAME', '24_INCH_FOCAL_LENGTH_CAMERA')\n", " ('INSTRUMENT_ID', '24INCH_FLC')\n", " ('TARGET_NAME', 'MOON')\n", - " ('START_TIME', datetime.datetime(1967, 2, 20, 8, 14, 28, 610000))\n", + " ('START_TIME',\n", + " datetime.datetime(1967, 2, 20, 8, 14, 28, 610000, tzinfo=datetime.timezone.utc))\n", " ('IMAGE_NUMBER',\n", " ['313312921',\n", " '313312930',\n", @@ -96,9 +91,10 @@ " '313313220',\n", " '313313230'])\n", " ('FRAME_NUMBER', 3133)\n", - " ('LO:FILMSTRIP_SCAN_CREATION_DATE', datetime.datetime(2003, 12, 4, 10, 9, 41))\n", - " ('LO:FILMSTRIP_SCAN_RESOLUTION', Units(value=25, units='micron'))\n", - " ('LO:FILMSTRIP_SCAN_PROCESSING_RESOLUTION', Units(value=50, units='micron'))\n", + " ('LO:FILMSTRIP_SCAN_CREATION_DATE',\n", + " datetime.datetime(2003, 12, 4, 10, 9, 41, tzinfo=datetime.timezone.utc))\n", + " ('LO:FILMSTRIP_SCAN_RESOLUTION', Quantity(value=25, units='micron'))\n", + " ('LO:FILMSTRIP_SCAN_PROCESSING_RESOLUTION', Quantity(value=50, units='micron'))\n", " ('LO:FIDUCIAL_ID',\n", " ['1b',\n", " '2a',\n", @@ -131,132 +127,133 @@ " '236b',\n", " '283b'])\n", " ('LO:FIDUCIAL_SAMPLES',\n", - " [Units(value=32162.0, units='pixels'),\n", - " Units(value=32192.0, units='pixels'),\n", - " Units(value=29745.0, units='pixels'),\n", - " Units(value=27114.0, units='pixels'),\n", - " Units(value=27116.0, units='pixels'),\n", - " Units(value=24484.0, units='pixels'),\n", - " Units(value=24295.0, units='pixels'),\n", - " Units(value=22070.0, units='pixels'),\n", - " Units(value=22072.0, units='pixels'),\n", - " Units(value=28653.0, units='pixels'),\n", - " Units(value=21854.0, units='pixels'),\n", - " Units(value=19438.0, units='pixels'),\n", - " Units(value=19441.0, units='pixels'),\n", - " Units(value=16593.0, units='pixels'),\n", - " Units(value=16593.0, units='pixels'),\n", - " Units(value=13961.0, units='pixels'),\n", - " Units(value=13960.0, units='pixels'),\n", - " Units(value=11551.0, units='pixels'),\n", - " Units(value=11548.0, units='pixels'),\n", - " Units(value=21412.0, units='pixels'),\n", - " Units(value=11114.0, units='pixels'),\n", - " Units(value=11109.0, units='pixels'),\n", - " Units(value=8918.0, units='pixels'),\n", - " Units(value=8914.0, units='pixels'),\n", - " Units(value=6070.0, units='pixels'),\n", - " Units(value=3440.0, units='pixels'),\n", - " Units(value=3436.0, units='pixels'),\n", - " Units(value=1027.0, units='pixels'),\n", - " Units(value=6505.0, units='pixels'),\n", - " Units(value=1248.0, units='pixels')])\n", + " [Quantity(value=32162.0, units='pixels'),\n", + " Quantity(value=32192.0, units='pixels'),\n", + " Quantity(value=29745.0, units='pixels'),\n", + " Quantity(value=27114.0, units='pixels'),\n", + " Quantity(value=27116.0, units='pixels'),\n", + " Quantity(value=24484.0, units='pixels'),\n", + " Quantity(value=24295.0, units='pixels'),\n", + " Quantity(value=22070.0, units='pixels'),\n", + " Quantity(value=22072.0, units='pixels'),\n", + " Quantity(value=28653.0, units='pixels'),\n", + " Quantity(value=21854.0, units='pixels'),\n", + " Quantity(value=19438.0, units='pixels'),\n", + " Quantity(value=19441.0, units='pixels'),\n", + " Quantity(value=16593.0, units='pixels'),\n", + " Quantity(value=16593.0, units='pixels'),\n", + " Quantity(value=13961.0, units='pixels'),\n", + " Quantity(value=13960.0, units='pixels'),\n", + " Quantity(value=11551.0, units='pixels'),\n", + " Quantity(value=11548.0, units='pixels'),\n", + " Quantity(value=21412.0, units='pixels'),\n", + " Quantity(value=11114.0, units='pixels'),\n", + " Quantity(value=11109.0, units='pixels'),\n", + " Quantity(value=8918.0, units='pixels'),\n", + " Quantity(value=8914.0, units='pixels'),\n", + " Quantity(value=6070.0, units='pixels'),\n", + " Quantity(value=3440.0, units='pixels'),\n", + " Quantity(value=3436.0, units='pixels'),\n", + " Quantity(value=1027.0, units='pixels'),\n", + " Quantity(value=6505.0, units='pixels'),\n", + " Quantity(value=1248.0, units='pixels')])\n", " ('LO:FIDUCIAL_LINES',\n", - " [Units(value=8510.0, units='pixels'),\n", - " Units(value=597.0, units='pixels'),\n", - " Units(value=8505.0, units='pixels'),\n", - " Units(value=8506.0, units='pixels'),\n", - " Units(value=589.0, units='pixels'),\n", - " Units(value=587.0, units='pixels'),\n", - " Units(value=8504.0, units='pixels'),\n", - " Units(value=8502.0, units='pixels'),\n", - " Units(value=583.0, units='pixels'),\n", - " Units(value=590.0, units='pixels'),\n", - " Units(value=587.0, units='pixels'),\n", - " Units(value=8496.0, units='pixels'),\n", - " Units(value=581.0, units='pixels'),\n", - " Units(value=8498.0, units='pixels'),\n", - " Units(value=584.0, units='pixels'),\n", - " Units(value=8496.0, units='pixels'),\n", - " Units(value=581.0, units='pixels'),\n", - " Units(value=8500.0, units='pixels'),\n", - " Units(value=579.0, units='pixels'),\n", - " Units(value=8495.0, units='pixels'),\n", - " Units(value=8493.0, units='pixels'),\n", - " Units(value=580.0, units='pixels'),\n", - " Units(value=8496.0, units='pixels'),\n", - " Units(value=584.0, units='pixels'),\n", - " Units(value=8493.0, units='pixels'),\n", - " Units(value=8497.0, units='pixels'),\n", - " Units(value=580.0, units='pixels'),\n", - " Units(value=584.0, units='pixels'),\n", - " Units(value=581.0, units='pixels'),\n", - " Units(value=8496.0, units='pixels')])\n", - " ('LO:FIDUCIAL_COORDINATE_MICRON', Units(value=50, units='um'))\n", + " [Quantity(value=8510.0, units='pixels'),\n", + " Quantity(value=597.0, units='pixels'),\n", + " Quantity(value=8505.0, units='pixels'),\n", + " Quantity(value=8506.0, units='pixels'),\n", + " Quantity(value=589.0, units='pixels'),\n", + " Quantity(value=587.0, units='pixels'),\n", + " Quantity(value=8504.0, units='pixels'),\n", + " Quantity(value=8502.0, units='pixels'),\n", + " Quantity(value=583.0, units='pixels'),\n", + " Quantity(value=590.0, units='pixels'),\n", + " Quantity(value=587.0, units='pixels'),\n", + " Quantity(value=8496.0, units='pixels'),\n", + " Quantity(value=581.0, units='pixels'),\n", + " Quantity(value=8498.0, units='pixels'),\n", + " Quantity(value=584.0, units='pixels'),\n", + " Quantity(value=8496.0, units='pixels'),\n", + " Quantity(value=581.0, units='pixels'),\n", + " Quantity(value=8500.0, units='pixels'),\n", + " Quantity(value=579.0, units='pixels'),\n", + " Quantity(value=8495.0, units='pixels'),\n", + " Quantity(value=8493.0, units='pixels'),\n", + " Quantity(value=580.0, units='pixels'),\n", + " Quantity(value=8496.0, units='pixels'),\n", + " Quantity(value=584.0, units='pixels'),\n", + " Quantity(value=8493.0, units='pixels'),\n", + " Quantity(value=8497.0, units='pixels'),\n", + " Quantity(value=580.0, units='pixels'),\n", + " Quantity(value=584.0, units='pixels'),\n", + " Quantity(value=581.0, units='pixels'),\n", + " Quantity(value=8496.0, units='pixels')])\n", + " ('LO:FIDUCIAL_COORDINATE_MICRON', Quantity(value=50, units='um'))\n", " ('LO:FIDUCIAL_X_COORDINATES',\n", - " [Units(value=-108.168, units='mm'),\n", - " Units(value=-108.339, units='mm'),\n", - " Units(value=-91.403, units='mm'),\n", - " Units(value=-73.101, units='mm'),\n", - " Units(value=-73.046, units='mm'),\n", - " Units(value=-54.733, units='mm'),\n", - " Units(value=-53.474, units='mm'),\n", - " Units(value=-38.026, units='mm'),\n", - " Units(value=-37.964, units='mm'),\n", - " Units(value=-83.703, units='mm'),\n", - " Units(value=-36.446, units='mm'),\n", - " Units(value=-19.716, units='mm'),\n", - " Units(value=-19.684, units='mm'),\n", - " Units(value=0.08, units='mm'),\n", - " Units(value=0.122, units='mm'),\n", - " Units(value=18.376, units='mm'),\n", - " Units(value=18.427, units='mm'),\n", - " Units(value=35.174, units='mm'),\n", - " Units(value=35.198, units='mm'),\n", - " Units(value=-33.441, units='mm'),\n", - " Units(value=38.211, units='mm'),\n", - " Units(value=38.23, units='mm'),\n", - " Units(value=53.474, units='mm'),\n", - " Units(value=53.498, units='mm'),\n", - " Units(value=73.296, units='mm'),\n", - " Units(value=91.568, units='mm'),\n", - " Units(value=91.579, units='mm'),\n", - " Units(value=108.352, units='mm'),\n", - " Units(value=70.25, units='mm'),\n", - " Units(value=106.844, units='mm')])\n", + " [Quantity(value=-108.168, units='mm'),\n", + " Quantity(value=-108.339, units='mm'),\n", + " Quantity(value=-91.403, units='mm'),\n", + " Quantity(value=-73.101, units='mm'),\n", + " Quantity(value=-73.046, units='mm'),\n", + " Quantity(value=-54.733, units='mm'),\n", + " Quantity(value=-53.474, units='mm'),\n", + " Quantity(value=-38.026, units='mm'),\n", + " Quantity(value=-37.964, units='mm'),\n", + " Quantity(value=-83.703, units='mm'),\n", + " Quantity(value=-36.446, units='mm'),\n", + " Quantity(value=-19.716, units='mm'),\n", + " Quantity(value=-19.684, units='mm'),\n", + " Quantity(value=0.08, units='mm'),\n", + " Quantity(value=0.122, units='mm'),\n", + " Quantity(value=18.376, units='mm'),\n", + " Quantity(value=18.427, units='mm'),\n", + " Quantity(value=35.174, units='mm'),\n", + " Quantity(value=35.198, units='mm'),\n", + " Quantity(value=-33.441, units='mm'),\n", + " Quantity(value=38.211, units='mm'),\n", + " Quantity(value=38.23, units='mm'),\n", + " Quantity(value=53.474, units='mm'),\n", + " Quantity(value=53.498, units='mm'),\n", + " Quantity(value=73.296, units='mm'),\n", + " Quantity(value=91.568, units='mm'),\n", + " Quantity(value=91.579, units='mm'),\n", + " Quantity(value=108.352, units='mm'),\n", + " Quantity(value=70.25, units='mm'),\n", + " Quantity(value=106.844, units='mm')])\n", " ('LO:FIDUCIAL_Y_COORDINATES',\n", - " [Units(value=27.476, units='mm'),\n", - " Units(value=-27.488, units='mm'),\n", - " Units(value=27.483, units='mm'),\n", - " Units(value=27.498, units='mm'),\n", - " Units(value=-27.497, units='mm'),\n", - " Units(value=-27.488, units='mm'),\n", - " Units(value=27.5, units='mm'),\n", - " Units(value=27.496, units='mm'),\n", - " Units(value=-27.49, units='mm'),\n", - " Units(value=-27.494, units='mm'),\n", - " Units(value=-27.488, units='mm'),\n", - " Units(value=27.495, units='mm'),\n", - " Units(value=-27.494, units='mm'),\n", - " Units(value=27.505, units='mm'),\n", - " Units(value=-27.493, units='mm'),\n", - " Units(value=27.496, units='mm'),\n", - " Units(value=-27.49, units='mm'),\n", - " Units(value=27.492, units='mm'),\n", - " Units(value=-27.486, units='mm'),\n", - " Units(value=27.499, units='mm'),\n", - " Units(value=27.488, units='mm'),\n", - " Units(value=-27.485, units='mm'),\n", - " Units(value=27.49, units='mm'),\n", - " Units(value=-27.487, units='mm'),\n", - " Units(value=27.491, units='mm'),\n", - " Units(value=27.474, units='mm'),\n", - " Units(value=-27.49, units='mm'),\n", - " Units(value=-27.481, units='mm'),\n", - " Units(value=-27.488, units='mm'),\n", - " Units(value=27.479, units='mm')])\n", + " [Quantity(value=27.476, units='mm'),\n", + " Quantity(value=-27.488, units='mm'),\n", + " Quantity(value=27.483, units='mm'),\n", + " Quantity(value=27.498, units='mm'),\n", + " Quantity(value=-27.497, units='mm'),\n", + " Quantity(value=-27.488, units='mm'),\n", + " Quantity(value=27.5, units='mm'),\n", + " Quantity(value=27.496, units='mm'),\n", + " Quantity(value=-27.49, units='mm'),\n", + " Quantity(value=-27.494, units='mm'),\n", + " Quantity(value=-27.488, units='mm'),\n", + " Quantity(value=27.495, units='mm'),\n", + " Quantity(value=-27.494, units='mm'),\n", + " Quantity(value=27.505, units='mm'),\n", + " Quantity(value=-27.493, units='mm'),\n", + " Quantity(value=27.496, units='mm'),\n", + " Quantity(value=-27.49, units='mm'),\n", + " Quantity(value=27.492, units='mm'),\n", + " Quantity(value=-27.486, units='mm'),\n", + " Quantity(value=27.499, units='mm'),\n", + " Quantity(value=27.488, units='mm'),\n", + " Quantity(value=-27.485, units='mm'),\n", + " Quantity(value=27.49, units='mm'),\n", + " Quantity(value=-27.487, units='mm'),\n", + " Quantity(value=27.491, units='mm'),\n", + " Quantity(value=27.474, units='mm'),\n", + " Quantity(value=-27.49, units='mm'),\n", + " Quantity(value=-27.481, units='mm'),\n", + " Quantity(value=-27.488, units='mm'),\n", + " Quantity(value=27.479, units='mm')])\n", " ('PRODUCER_INSTITUTION_NAME', 'U.S. GEOLOGICAL SURVEY')\n", - " ('PRODUCT_CREATION_TIME', datetime.datetime(2010, 2, 12, 1, 12, 12))\n", + " ('PRODUCT_CREATION_TIME',\n", + " datetime.datetime(2010, 2, 12, 1, 12, 12, tzinfo=datetime.timezone.utc))\n", " ('IMAGE',\n", " {'CORE_HIGH_INSTR_SATURATION': 4286578686,\n", " 'CORE_HIGH_REPR_SATURATION': 4286578687,\n", @@ -285,9 +282,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "with open(lo_file, 'rb') as f:\n", @@ -347,7 +342,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -356,7 +351,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -374,12 +369,10 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.IsisCubeLabelEncoder): \n", + "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", " def encode_time(self, value):\n", " if value.microsecond:\n", " second = u'%02d.%06d' % (value.second, value.microsecond)\n", @@ -387,28 +380,34 @@ " second = u'%02d' % value.second\n", "\n", " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time.encode('utf-8')" + " return time" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(lo_file)\n", - "mini_image_fn = image_fn + '_cropped' + image_ext\n", + "crop = '_cropped'\n", + "mini_image_fn = image_fn + crop + image_ext\n", "mini_image_bn = os.path.basename(mini_image_fn)\n", "\n", + "grammar = pvl.grammar.ISISGrammar()\n", + "grammar.comments+=((\"#\", \"\\n\"), )\n", + "encoder = RealIsisCubeLabelEncoder()\n", + "\n", "# Overwrite the number of lines in the label\n", + "header['IMAGE']['LINES'] = n_lines\n", "\n", - "header['^IMAGE'] = pvl._collections.Units(len(pvl.dumps(header, cls=RealIsisCubeLabelEncoder)), 'BYTES')\n", - "header['IMAGE']['LINES'] = n_lines" + "# Calculate the new offset\n", + "header['^IMAGE'] = pvl.collections.Units(len(pvl.dumps(header, encoder=encoder, grammar=grammar)), 'BYTES')" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -421,7 +420,7 @@ " ('FILE_RECORDS', 162)\n", " ('LABEL_RECORDS', 11)\n", " ('INTERCHANGE_FORMAT', 'BINARY')\n", - " ('^IMAGE', Units(value=3671, units='BYTES'))\n", + " ('^IMAGE', Units(value=5230, units='BYTES'))\n", " ('DATA_SET_ID', 'LO-L-LO3/4/5-4-CDR-V1.0')\n", " ('PRODUCT_ID', '3133_H1')\n", " ('ORIGINAL_PRODUCT_ID', '3133H')\n", @@ -431,7 +430,8 @@ " ('INSTRUMENT_NAME', '24_INCH_FOCAL_LENGTH_CAMERA')\n", " ('INSTRUMENT_ID', '24INCH_FLC')\n", " ('TARGET_NAME', 'MOON')\n", - " ('START_TIME', datetime.datetime(1967, 2, 20, 8, 14, 28, 610000))\n", + " ('START_TIME',\n", + " datetime.datetime(1967, 2, 20, 8, 14, 28, 610000, tzinfo=datetime.timezone.utc))\n", " ('IMAGE_NUMBER',\n", " ['313312921',\n", " '313312930',\n", @@ -463,9 +463,10 @@ " '313313220',\n", " '313313230'])\n", " ('FRAME_NUMBER', 3133)\n", - " ('LO:FILMSTRIP_SCAN_CREATION_DATE', datetime.datetime(2003, 12, 4, 10, 9, 41))\n", - " ('LO:FILMSTRIP_SCAN_RESOLUTION', Units(value=25, units='micron'))\n", - " ('LO:FILMSTRIP_SCAN_PROCESSING_RESOLUTION', Units(value=50, units='micron'))\n", + " ('LO:FILMSTRIP_SCAN_CREATION_DATE',\n", + " datetime.datetime(2003, 12, 4, 10, 9, 41, tzinfo=datetime.timezone.utc))\n", + " ('LO:FILMSTRIP_SCAN_RESOLUTION', Quantity(value=25, units='micron'))\n", + " ('LO:FILMSTRIP_SCAN_PROCESSING_RESOLUTION', Quantity(value=50, units='micron'))\n", " ('LO:FIDUCIAL_ID',\n", " ['1b',\n", " '2a',\n", @@ -498,132 +499,133 @@ " '236b',\n", " '283b'])\n", " ('LO:FIDUCIAL_SAMPLES',\n", - " [Units(value=32162.0, units='pixels'),\n", - " Units(value=32192.0, units='pixels'),\n", - " Units(value=29745.0, units='pixels'),\n", - " Units(value=27114.0, units='pixels'),\n", - " Units(value=27116.0, units='pixels'),\n", - " Units(value=24484.0, units='pixels'),\n", - " Units(value=24295.0, units='pixels'),\n", - " Units(value=22070.0, units='pixels'),\n", - " Units(value=22072.0, units='pixels'),\n", - " Units(value=28653.0, units='pixels'),\n", - " Units(value=21854.0, units='pixels'),\n", - " Units(value=19438.0, units='pixels'),\n", - " Units(value=19441.0, units='pixels'),\n", - " Units(value=16593.0, units='pixels'),\n", - " Units(value=16593.0, units='pixels'),\n", - " Units(value=13961.0, units='pixels'),\n", - " Units(value=13960.0, units='pixels'),\n", - " Units(value=11551.0, units='pixels'),\n", - " Units(value=11548.0, units='pixels'),\n", - " Units(value=21412.0, units='pixels'),\n", - " Units(value=11114.0, units='pixels'),\n", - " Units(value=11109.0, units='pixels'),\n", - " Units(value=8918.0, units='pixels'),\n", - " Units(value=8914.0, units='pixels'),\n", - " Units(value=6070.0, units='pixels'),\n", - " Units(value=3440.0, units='pixels'),\n", - " Units(value=3436.0, units='pixels'),\n", - " Units(value=1027.0, units='pixels'),\n", - " Units(value=6505.0, units='pixels'),\n", - " Units(value=1248.0, units='pixels')])\n", + " [Quantity(value=32162.0, units='pixels'),\n", + " Quantity(value=32192.0, units='pixels'),\n", + " Quantity(value=29745.0, units='pixels'),\n", + " Quantity(value=27114.0, units='pixels'),\n", + " Quantity(value=27116.0, units='pixels'),\n", + " Quantity(value=24484.0, units='pixels'),\n", + " Quantity(value=24295.0, units='pixels'),\n", + " Quantity(value=22070.0, units='pixels'),\n", + " Quantity(value=22072.0, units='pixels'),\n", + " Quantity(value=28653.0, units='pixels'),\n", + " Quantity(value=21854.0, units='pixels'),\n", + " Quantity(value=19438.0, units='pixels'),\n", + " Quantity(value=19441.0, units='pixels'),\n", + " Quantity(value=16593.0, units='pixels'),\n", + " Quantity(value=16593.0, units='pixels'),\n", + " Quantity(value=13961.0, units='pixels'),\n", + " Quantity(value=13960.0, units='pixels'),\n", + " Quantity(value=11551.0, units='pixels'),\n", + " Quantity(value=11548.0, units='pixels'),\n", + " Quantity(value=21412.0, units='pixels'),\n", + " Quantity(value=11114.0, units='pixels'),\n", + " Quantity(value=11109.0, units='pixels'),\n", + " Quantity(value=8918.0, units='pixels'),\n", + " Quantity(value=8914.0, units='pixels'),\n", + " Quantity(value=6070.0, units='pixels'),\n", + " Quantity(value=3440.0, units='pixels'),\n", + " Quantity(value=3436.0, units='pixels'),\n", + " Quantity(value=1027.0, units='pixels'),\n", + " Quantity(value=6505.0, units='pixels'),\n", + " Quantity(value=1248.0, units='pixels')])\n", " ('LO:FIDUCIAL_LINES',\n", - " [Units(value=8510.0, units='pixels'),\n", - " Units(value=597.0, units='pixels'),\n", - " Units(value=8505.0, units='pixels'),\n", - " Units(value=8506.0, units='pixels'),\n", - " Units(value=589.0, units='pixels'),\n", - " Units(value=587.0, units='pixels'),\n", - " Units(value=8504.0, units='pixels'),\n", - " Units(value=8502.0, units='pixels'),\n", - " Units(value=583.0, units='pixels'),\n", - " Units(value=590.0, units='pixels'),\n", - " Units(value=587.0, units='pixels'),\n", - " Units(value=8496.0, units='pixels'),\n", - " Units(value=581.0, units='pixels'),\n", - " Units(value=8498.0, units='pixels'),\n", - " Units(value=584.0, units='pixels'),\n", - " Units(value=8496.0, units='pixels'),\n", - " Units(value=581.0, units='pixels'),\n", - " Units(value=8500.0, units='pixels'),\n", - " Units(value=579.0, units='pixels'),\n", - " Units(value=8495.0, units='pixels'),\n", - " Units(value=8493.0, units='pixels'),\n", - " Units(value=580.0, units='pixels'),\n", - " Units(value=8496.0, units='pixels'),\n", - " Units(value=584.0, units='pixels'),\n", - " Units(value=8493.0, units='pixels'),\n", - " Units(value=8497.0, units='pixels'),\n", - " Units(value=580.0, units='pixels'),\n", - " Units(value=584.0, units='pixels'),\n", - " Units(value=581.0, units='pixels'),\n", - " Units(value=8496.0, units='pixels')])\n", - " ('LO:FIDUCIAL_COORDINATE_MICRON', Units(value=50, units='um'))\n", + " [Quantity(value=8510.0, units='pixels'),\n", + " Quantity(value=597.0, units='pixels'),\n", + " Quantity(value=8505.0, units='pixels'),\n", + " Quantity(value=8506.0, units='pixels'),\n", + " Quantity(value=589.0, units='pixels'),\n", + " Quantity(value=587.0, units='pixels'),\n", + " Quantity(value=8504.0, units='pixels'),\n", + " Quantity(value=8502.0, units='pixels'),\n", + " Quantity(value=583.0, units='pixels'),\n", + " Quantity(value=590.0, units='pixels'),\n", + " Quantity(value=587.0, units='pixels'),\n", + " Quantity(value=8496.0, units='pixels'),\n", + " Quantity(value=581.0, units='pixels'),\n", + " Quantity(value=8498.0, units='pixels'),\n", + " Quantity(value=584.0, units='pixels'),\n", + " Quantity(value=8496.0, units='pixels'),\n", + " Quantity(value=581.0, units='pixels'),\n", + " Quantity(value=8500.0, units='pixels'),\n", + " Quantity(value=579.0, units='pixels'),\n", + " Quantity(value=8495.0, units='pixels'),\n", + " Quantity(value=8493.0, units='pixels'),\n", + " Quantity(value=580.0, units='pixels'),\n", + " Quantity(value=8496.0, units='pixels'),\n", + " Quantity(value=584.0, units='pixels'),\n", + " Quantity(value=8493.0, units='pixels'),\n", + " Quantity(value=8497.0, units='pixels'),\n", + " Quantity(value=580.0, units='pixels'),\n", + " Quantity(value=584.0, units='pixels'),\n", + " Quantity(value=581.0, units='pixels'),\n", + " Quantity(value=8496.0, units='pixels')])\n", + " ('LO:FIDUCIAL_COORDINATE_MICRON', Quantity(value=50, units='um'))\n", " ('LO:FIDUCIAL_X_COORDINATES',\n", - " [Units(value=-108.168, units='mm'),\n", - " Units(value=-108.339, units='mm'),\n", - " Units(value=-91.403, units='mm'),\n", - " Units(value=-73.101, units='mm'),\n", - " Units(value=-73.046, units='mm'),\n", - " Units(value=-54.733, units='mm'),\n", - " Units(value=-53.474, units='mm'),\n", - " Units(value=-38.026, units='mm'),\n", - " Units(value=-37.964, units='mm'),\n", - " Units(value=-83.703, units='mm'),\n", - " Units(value=-36.446, units='mm'),\n", - " Units(value=-19.716, units='mm'),\n", - " Units(value=-19.684, units='mm'),\n", - " Units(value=0.08, units='mm'),\n", - " Units(value=0.122, units='mm'),\n", - " Units(value=18.376, units='mm'),\n", - " Units(value=18.427, units='mm'),\n", - " Units(value=35.174, units='mm'),\n", - " Units(value=35.198, units='mm'),\n", - " Units(value=-33.441, units='mm'),\n", - " Units(value=38.211, units='mm'),\n", - " Units(value=38.23, units='mm'),\n", - " Units(value=53.474, units='mm'),\n", - " Units(value=53.498, units='mm'),\n", - " Units(value=73.296, units='mm'),\n", - " Units(value=91.568, units='mm'),\n", - " Units(value=91.579, units='mm'),\n", - " Units(value=108.352, units='mm'),\n", - " Units(value=70.25, units='mm'),\n", - " Units(value=106.844, units='mm')])\n", + " [Quantity(value=-108.168, units='mm'),\n", + " Quantity(value=-108.339, units='mm'),\n", + " Quantity(value=-91.403, units='mm'),\n", + " Quantity(value=-73.101, units='mm'),\n", + " Quantity(value=-73.046, units='mm'),\n", + " Quantity(value=-54.733, units='mm'),\n", + " Quantity(value=-53.474, units='mm'),\n", + " Quantity(value=-38.026, units='mm'),\n", + " Quantity(value=-37.964, units='mm'),\n", + " Quantity(value=-83.703, units='mm'),\n", + " Quantity(value=-36.446, units='mm'),\n", + " Quantity(value=-19.716, units='mm'),\n", + " Quantity(value=-19.684, units='mm'),\n", + " Quantity(value=0.08, units='mm'),\n", + " Quantity(value=0.122, units='mm'),\n", + " Quantity(value=18.376, units='mm'),\n", + " Quantity(value=18.427, units='mm'),\n", + " Quantity(value=35.174, units='mm'),\n", + " Quantity(value=35.198, units='mm'),\n", + " Quantity(value=-33.441, units='mm'),\n", + " Quantity(value=38.211, units='mm'),\n", + " Quantity(value=38.23, units='mm'),\n", + " Quantity(value=53.474, units='mm'),\n", + " Quantity(value=53.498, units='mm'),\n", + " Quantity(value=73.296, units='mm'),\n", + " Quantity(value=91.568, units='mm'),\n", + " Quantity(value=91.579, units='mm'),\n", + " Quantity(value=108.352, units='mm'),\n", + " Quantity(value=70.25, units='mm'),\n", + " Quantity(value=106.844, units='mm')])\n", " ('LO:FIDUCIAL_Y_COORDINATES',\n", - " [Units(value=27.476, units='mm'),\n", - " Units(value=-27.488, units='mm'),\n", - " Units(value=27.483, units='mm'),\n", - " Units(value=27.498, units='mm'),\n", - " Units(value=-27.497, units='mm'),\n", - " Units(value=-27.488, units='mm'),\n", - " Units(value=27.5, units='mm'),\n", - " Units(value=27.496, units='mm'),\n", - " Units(value=-27.49, units='mm'),\n", - " Units(value=-27.494, units='mm'),\n", - " Units(value=-27.488, units='mm'),\n", - " Units(value=27.495, units='mm'),\n", - " Units(value=-27.494, units='mm'),\n", - " Units(value=27.505, units='mm'),\n", - " Units(value=-27.493, units='mm'),\n", - " Units(value=27.496, units='mm'),\n", - " Units(value=-27.49, units='mm'),\n", - " Units(value=27.492, units='mm'),\n", - " Units(value=-27.486, units='mm'),\n", - " Units(value=27.499, units='mm'),\n", - " Units(value=27.488, units='mm'),\n", - " Units(value=-27.485, units='mm'),\n", - " Units(value=27.49, units='mm'),\n", - " Units(value=-27.487, units='mm'),\n", - " Units(value=27.491, units='mm'),\n", - " Units(value=27.474, units='mm'),\n", - " Units(value=-27.49, units='mm'),\n", - " Units(value=-27.481, units='mm'),\n", - " Units(value=-27.488, units='mm'),\n", - " Units(value=27.479, units='mm')])\n", + " [Quantity(value=27.476, units='mm'),\n", + " Quantity(value=-27.488, units='mm'),\n", + " Quantity(value=27.483, units='mm'),\n", + " Quantity(value=27.498, units='mm'),\n", + " Quantity(value=-27.497, units='mm'),\n", + " Quantity(value=-27.488, units='mm'),\n", + " Quantity(value=27.5, units='mm'),\n", + " Quantity(value=27.496, units='mm'),\n", + " Quantity(value=-27.49, units='mm'),\n", + " Quantity(value=-27.494, units='mm'),\n", + " Quantity(value=-27.488, units='mm'),\n", + " Quantity(value=27.495, units='mm'),\n", + " Quantity(value=-27.494, units='mm'),\n", + " Quantity(value=27.505, units='mm'),\n", + " Quantity(value=-27.493, units='mm'),\n", + " Quantity(value=27.496, units='mm'),\n", + " Quantity(value=-27.49, units='mm'),\n", + " Quantity(value=27.492, units='mm'),\n", + " Quantity(value=-27.486, units='mm'),\n", + " Quantity(value=27.499, units='mm'),\n", + " Quantity(value=27.488, units='mm'),\n", + " Quantity(value=-27.485, units='mm'),\n", + " Quantity(value=27.49, units='mm'),\n", + " Quantity(value=-27.487, units='mm'),\n", + " Quantity(value=27.491, units='mm'),\n", + " Quantity(value=27.474, units='mm'),\n", + " Quantity(value=-27.49, units='mm'),\n", + " Quantity(value=-27.481, units='mm'),\n", + " Quantity(value=-27.488, units='mm'),\n", + " Quantity(value=27.479, units='mm')])\n", " ('PRODUCER_INSTITUTION_NAME', 'U.S. GEOLOGICAL SURVEY')\n", - " ('PRODUCT_CREATION_TIME', datetime.datetime(2010, 2, 12, 1, 12, 12))\n", + " ('PRODUCT_CREATION_TIME',\n", + " datetime.datetime(2010, 2, 12, 1, 12, 12, tzinfo=datetime.timezone.utc))\n", " ('IMAGE',\n", " {'CORE_HIGH_INSTR_SATURATION': 4286578686,\n", " 'CORE_HIGH_REPR_SATURATION': 4286578687,\n", @@ -640,7 +642,7 @@ "])" ] }, - "execution_count": 12, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -651,34 +653,32 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "b'PDS_VERSION_ID = PDS3\\r\\nRECORD_TYPE = FIXED_LENGTH\\r\\nRECORD_BYTES = 604\\r\\nFILE_RECORDS = 162\\r\\nLABEL_RECORDS = 11\\r\\nINTERCHANGE_FORMAT = BINARY\\r\\n^IMAGE = 3671 \\r\\nDATA_SET_ID = LO-L-LO3/4/5-4-CDR-V1.0\\r\\nPRODUCT_ID = 3133_H1\\r\\nORIGINAL_PRODUCT_ID = 3133H\\r\\nPRODUCT_TYPE = CDR\\r\\nMISSION_NAME = \"LUNAR ORBITER\"\\r\\nSPACECRAFT_NAME = LUNAR_ORBITER_3\\r\\nINSTRUMENT_NAME = 24_INCH_FOCAL_LENGTH_CAMERA\\r\\nINSTRUMENT_ID = 24INCH_FLC\\r\\nTARGET_NAME = MOON\\r\\nSTART_TIME = 1967-02-20T08:14:28.610000\\r\\nIMAGE_NUMBER = (\"313312921\", \"313312930\", \"313312941\", \"313312950\", \"313312961\", \"313312970\", \"313312990\", \"313313000\", \"313313010\", \"313313020\", \"313313030\", \"313313040\", \"313313051\", \"313313060\", \"313313070\", \"313313090\", \"313313100\", \"313313110\", \"313313120\", \"313313130\", \"313313140\", \"313313150\", \"313313160\", \"313313170\", \"313313190\", \"313313200\", \"313313211\", \"313313220\", \"313313230\")\\r\\nFRAME_NUMBER = 3133\\r\\nLO:FILMSTRIP_SCAN_CREATION_DATE = 2003-12-04T10:09:41\\r\\nLO:FILMSTRIP_SCAN_RESOLUTION = 25 \\r\\nLO:FILMSTRIP_SCAN_PROCESSING_RESOLUTION = 50 \\r\\nLO:FIDUCIAL_ID = (1b, 2a, 23b, 47b, 48b, 72b, 73a, 93b, 94b, 34b, 96b, 117b, 118b, 143b, 144b, 167b, 168b, 189b, 190b, 99b, 193b, 194b, 213b, 214b, 239b, 263b, 264b, 286b, 236b, 283b)\\r\\nLO:FIDUCIAL_SAMPLES = (32162.0 , 32192.0 , 29745.0 , 27114.0 , 27116.0 , 24484.0 , 24295.0 , 22070.0 , 22072.0 , 28653.0 , 21854.0 , 19438.0 , 19441.0 , 16593.0 , 16593.0 , 13961.0 , 13960.0 , 11551.0 , 11548.0 , 21412.0 , 11114.0 , 11109.0 , 8918.0 , 8914.0 , 6070.0 , 3440.0 , 3436.0 , 1027.0 , 6505.0 , 1248.0 )\\r\\nLO:FIDUCIAL_LINES = (8510.0 , 597.0 , 8505.0 , 8506.0 , 589.0 , 587.0 , 8504.0 , 8502.0 , 583.0 , 590.0 , 587.0 , 8496.0 , 581.0 , 8498.0 , 584.0 , 8496.0 , 581.0 , 8500.0 , 579.0 , 8495.0 , 8493.0 , 580.0 , 8496.0 , 584.0 , 8493.0 , 8497.0 , 580.0 , 584.0 , 581.0 , 8496.0 )\\r\\nLO:FIDUCIAL_COORDINATE_MICRON = 50 \\r\\nLO:FIDUCIAL_X_COORDINATES = (-108.168 , -108.339 , -91.403 , -73.101 , -73.046 , -54.733 , -53.474 , -38.026 , -37.964 , -83.703 , -36.446 , -19.716 , -19.684 , 0.08 , 0.122 , 18.376 , 18.427 , 35.174 , 35.198 , -33.441 , 38.211 , 38.23 , 53.474 , 53.498 , 73.296 , 91.568 , 91.579 , 108.352 , 70.25 , 106.844 )\\r\\nLO:FIDUCIAL_Y_COORDINATES = (27.476 , -27.488 , 27.483 , 27.498 , -27.497 , -27.488 , 27.5 , 27.496 , -27.49 , -27.494 , -27.488 , 27.495 , -27.494 , 27.505 , -27.493 , 27.496 , -27.49 , 27.492 , -27.486 , 27.499 , 27.488 , -27.485 , 27.49 , -27.487 , 27.491 , 27.474 , -27.49 , -27.481 , -27.488 , 27.479 )\\r\\nPRODUCER_INSTITUTION_NAME = \"U.S. GEOLOGICAL SURVEY\"\\r\\nPRODUCT_CREATION_TIME = 2010-02-12T01:12:12\\r\\nBEGIN_OBJECT = IMAGE\\r\\n LINES = 5\\r\\n LINE_SAMPLES = 151\\r\\n SAMPLE_TYPE = PC_REAL\\r\\n SAMPLE_BITS = 32\\r\\n SAMPLE_BIT_MASK = 4294967295\\r\\n MINIMUM = 29.0\\r\\n MAXIMUM = 170.0\\r\\n CORE_NULL = 4286578683\\r\\n CORE_LOW_REPR_SATURATION = 4286578684\\r\\n CORE_LOW_INSTR_SATURATION = 4286578685\\r\\n CORE_HIGH_REPR_SATURATION = 4286578687\\r\\n CORE_HIGH_INSTR_SATURATION = 4286578686\\r\\nEND_OBJECT = IMAGE\\r\\nEND'" + "'PDS_VERSION_ID = PDS3\\nRECORD_TYPE = FIXED_LENGTH\\nRECORD_BYTES = 604\\nFILE_RECORDS = 162\\nLABEL_RECORDS = 11\\nINTERCHANGE_FORMAT = BINARY\\n^IMAGE = 5230 \\nDATA_SET_ID = LO-L-LO3/4/5-4-CDR-V1.0\\nPRODUCT_ID = 3133_H1\\nORIGINAL_PRODUCT_ID = 3133H\\nPRODUCT_TYPE = CDR\\nMISSION_NAME = \"LUNAR ORBITER\"\\nSPACECRAFT_NAME = LUNAR_ORBITER_3\\nINSTRUMENT_NAME = 24_INCH_FOCAL_LENGTH_CAMERA\\nINSTRUMENT_ID = 24INCH_FLC\\nTARGET_NAME = MOON\\nSTART_TIME = 1967-02-20T08:14:28.610000\\nIMAGE_NUMBER = (\"313312921\", \"313312930\", \"313312941\", \"313312950\",\\n \"313312961\", \"313312970\", \"313312990\", \"313313000\", \"313313010\",\\n \"313313020\", \"313313030\", \"313313040\", \"313313051\", \"313313060\",\\n \"313313070\", \"313313090\", \"313313100\", \"313313110\", \"313313120\",\\n \"313313130\", \"313313140\", \"313313150\", \"313313160\", \"313313170\",\\n \"313313190\", \"313313200\", \"313313211\", \"313313220\", \"313313230\")\\nFRAME_NUMBER = 3133\\nLO:FILMSTRIP_SCAN_CREATION_DATE = 2003-12-04T10:09:41\\nLO:FILMSTRIP_SCAN_RESOLUTION = 25 \\nLO:FILMSTRIP_SCAN_PROCESSING_RESOLUTION = 50 \\nLO:FIDUCIAL_ID = (1b, 2a, 23b, 47b, 48b, 72b, 73a, 93b, 94b, 34b, 96b, 117b,\\n 118b, 143b, 144b, 167b, 168b, 189b, 190b, 99b, 193b, 194b,\\n 213b, 214b, 239b, 263b, 264b, 286b, 236b, 283b)\\nLO:FIDUCIAL_SAMPLES = (32162.0 , 32192.0 , 29745.0 ,\\n 27114.0 , 27116.0 , 24484.0 ,\\n 24295.0 , 22070.0 , 22072.0 ,\\n 28653.0 , 21854.0 , 19438.0 ,\\n 19441.0 , 16593.0 , 16593.0 ,\\n 13961.0 , 13960.0 , 11551.0 ,\\n 11548.0 , 21412.0 , 11114.0 ,\\n 11109.0 , 8918.0 , 8914.0 ,\\n 6070.0 , 3440.0 , 3436.0 , 1027.0\\n , 6505.0 , 1248.0 )\\nLO:FIDUCIAL_LINES = (8510.0 , 597.0 , 8505.0 , 8506.0\\n , 589.0 , 587.0 , 8504.0 ,\\n 8502.0 , 583.0 , 590.0 , 587.0\\n , 8496.0 , 581.0 , 8498.0 ,\\n 584.0 , 8496.0 , 581.0 , 8500.0\\n , 579.0 , 8495.0 , 8493.0 ,\\n 580.0 , 8496.0 , 584.0 , 8493.0\\n , 8497.0 , 580.0 , 584.0 ,\\n 581.0 , 8496.0 )\\nLO:FIDUCIAL_COORDINATE_MICRON = 50 \\nLO:FIDUCIAL_X_COORDINATES = (-108.168 , -108.339 , -91.403 ,\\n -73.101 , -73.046 , -54.733 , -53.474\\n , -38.026 , -37.964 , -83.703 ,\\n -36.446 , -19.716 , -19.684 , 0.08\\n , 0.122 , 18.376 , 18.427 , 35.174\\n , 35.198 , -33.441 , 38.211 , 38.23\\n , 53.474 , 53.498 , 73.296 , 91.568\\n , 91.579 , 108.352 , 70.25 ,\\n 106.844 )\\nLO:FIDUCIAL_Y_COORDINATES = (27.476 , -27.488 , 27.483 , 27.498\\n , -27.497 , -27.488 , 27.5 , 27.496\\n , -27.49 , -27.494 , -27.488 ,\\n 27.495 , -27.494 , 27.505 , -27.493\\n , 27.496 , -27.49 , 27.492 ,\\n -27.486 , 27.499 , 27.488 , -27.485\\n , 27.49 , -27.487 , 27.491 , 27.474\\n , -27.49 , -27.481 , -27.488 ,\\n 27.479 )\\nPRODUCER_INSTITUTION_NAME = \"U.S. GEOLOGICAL SURVEY\"\\nPRODUCT_CREATION_TIME = 2010-02-12T01:12:12\\nObject = IMAGE\\n LINES = 5\\n LINE_SAMPLES = 151\\n SAMPLE_TYPE = PC_REAL\\n SAMPLE_BITS = 32\\n SAMPLE_BIT_MASK = 4294967295\\n MINIMUM = 29.0\\n MAXIMUM = 170.0\\n CORE_NULL = 4286578683\\n CORE_LOW_REPR_SATURATION = 4286578684\\n CORE_LOW_INSTR_SATURATION = 4286578685\\n CORE_HIGH_REPR_SATURATION = 4286578687\\n CORE_HIGH_INSTR_SATURATION = 4286578686\\nEnd_Object = IMAGE\\nEND'" ] }, - "execution_count": 13, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "label_fn, label_ext = os.path.splitext(lo_file)\n", - "out_label = label_fn + '_cropped' + label_ext\n", + "out_label = label_fn + crop + label_ext\n", "\n", - "pvl.dump(header, out_label, cls=RealIsisCubeLabelEncoder)\n", - "pvl.dumps(header)" + "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)\n", + "pvl.dumps(header, encoder=encoder, grammar=grammar)" ] }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": true - }, + "execution_count": 18, + "metadata": {}, "outputs": [], "source": [ "with open(mini_image_fn, 'ab+') as f:\n", @@ -691,18 +691,16 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python autocnet", + "display_name": "Python 3", "language": "python", - "name": "autocnet" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -714,7 +712,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.0" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_marci.ipynb b/isis/notebooks/crop_marci.ipynb index 41fffec6be..2ed92a32a1 100644 --- a/isis/notebooks/crop_marci.ipynb +++ b/isis/notebooks/crop_marci.ipynb @@ -2,10 +2,8 @@ "cells": [ { "cell_type": "code", - "execution_count": 48, - "metadata": { - "collapsed": true - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ "import pvl\n", @@ -19,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -31,21 +29,76 @@ }, { "cell_type": "code", - "execution_count": 71, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PVLModule([\n", + " ('PDS_VERSION_ID', 'PDS3')\n", + " ('FILE_NAME', 'T02_001251_1292_MU_00N237W.IMG')\n", + " ('RECORD_TYPE', 'FIXED_LENGTH')\n", + " ('RECORD_BYTES', 128)\n", + " ('FILE_RECORDS', 2443)\n", + " ('LABEL_RECORDS', 11)\n", + " ('^IMAGE', 12)\n", + " ('SPACECRAFT_NAME', 'MARS_RECONNAISSANCE_ORBITER')\n", + " ('INSTRUMENT_NAME', 'MARS COLOR IMAGER')\n", + " ('INSTRUMENT_HOST_NAME', 'MARS RECONNAISSANCE ORBITER')\n", + " ('MISSION_PHASE_NAME', 'TRANSITION')\n", + " ('TARGET_NAME', 'MARS')\n", + " ('INSTRUMENT_ID', 'MARCI')\n", + " ('PRODUCER_ID', 'MRO_MARCI_TEAM')\n", + " ('DATA_SET_ID', 'MRO-M-MARCI-2-EDR-L0-V1.0')\n", + " ('PRODUCT_CREATION_TIME',\n", + " datetime.datetime(2007, 5, 18, 18, 47, 48, tzinfo=datetime.timezone.utc))\n", + " ('SOFTWARE_NAME', 'makepds05 $Revision: 1.7 $')\n", + " ('UPLOAD_ID', 'UNK')\n", + " ('ORIGINAL_PRODUCT_ID', '4A_05_1002812900')\n", + " ('PRODUCT_ID', 'T02_001251_1292_MU_00N237W')\n", + " ('START_TIME',\n", + " datetime.datetime(2006, 11, 1, 22, 45, 53, 570000, tzinfo=datetime.timezone.utc))\n", + " ('STOP_TIME',\n", + " datetime.datetime(2006, 11, 1, 23, 49, 50, 370000, tzinfo=datetime.timezone.utc))\n", + " ('SPACECRAFT_CLOCK_START_COUNT', '846888372:131')\n", + " ('SPACECRAFT_CLOCK_STOP_COUNT', 'N/A')\n", + " ('INTERFRAME_DELAY', Quantity(value=3.2, units='SECONDS'))\n", + " ('FOCAL_PLANE_TEMPERATURE', Quantity(value=256.8, units='K'))\n", + " ('SAMPLE_BIT_MODE_ID', 'SQROOT')\n", + " ('LINE_EXPOSURE_DURATION', Quantity(value=3129.737, units='MSEC'))\n", + " ('SAMPLING_FACTOR', 8)\n", + " ('SAMPLE_FIRST_PIXEL', 0)\n", + " ('FILTER_NAME', frozenset({'SHORT_UV', 'LONG_UV'}))\n", + " ('RATIONALE_DESC', 'global map swath')\n", + " ('DATA_QUALITY_DESC', 'ERROR')\n", + " ('ORBIT_NUMBER', 1251)\n", + " ('IMAGE',\n", + " {'CHECKSUM': 30571020,\n", + " 'LINES': 2432,\n", + " 'LINE_PREFIX_BYTES': 0,\n", + " 'LINE_SAMPLES': 128,\n", + " 'LINE_SUFFIX_BYTES': 0,\n", + " 'SAMPLE_BITS': 8,\n", + " 'SAMPLE_BIT_MASK': 255,\n", + " 'SAMPLE_TYPE': 'UNSIGNED_INTEGER'})\n", + "])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "header = pvl.load(marci_file)" + "header = pvl.load(marci_file)\n", + "header" ] }, { "cell_type": "code", - "execution_count": 72, - "metadata": { - "collapsed": true - }, + "execution_count": 4, + "metadata": {}, "outputs": [], "source": [ "with open(marci_file, 'rb') as f:\n", @@ -63,10 +116,8 @@ }, { "cell_type": "code", - "execution_count": 73, - "metadata": { - "collapsed": true - }, + "execution_count": 5, + "metadata": {}, "outputs": [], "source": [ "n_lines = 100\n", @@ -75,10 +126,8 @@ }, { "cell_type": "code", - "execution_count": 74, - "metadata": { - "collapsed": true - }, + "execution_count": 6, + "metadata": {}, "outputs": [], "source": [ "image_data = []\n", @@ -90,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -98,16 +147,16 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 75, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -124,13 +173,11 @@ }, { "cell_type": "code", - "execution_count": 76, - "metadata": { - "collapsed": true - }, + "execution_count": 8, + "metadata": {}, "outputs": [], "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.IsisCubeLabelEncoder): \n", + "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", " def encode_time(self, value):\n", " if value.microsecond:\n", " second = u'%02d.%06d' % (value.second, value.microsecond)\n", @@ -138,53 +185,62 @@ " second = u'%02d' % value.second\n", "\n", " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time.encode('utf-8')" + " return time" ] }, { "cell_type": "code", - "execution_count": 77, - "metadata": { - "collapsed": true - }, + "execution_count": 9, + "metadata": {}, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(image_file)\n", - "mini_image_fn = image_fn + '_cropped' + image_ext\n", + "crop = '_cropped'\n", + "mini_image_fn = image_fn + crop + image_ext\n", "mini_image_bn = os.path.basename(mini_image_fn)\n", "\n", + "grammar = pvl.grammar.ISISGrammar()\n", + "grammar.comments+=((\"#\", \"\\n\"), )\n", + "encoder = RealIsisCubeLabelEncoder()\n", + "\n", "# Overwrite the number of lines in the label\n", "header['IMAGE']['LINES'] = n_lines\n", "\n", "if marci_file != image_file:\n", " # If detached label, point the mini label to the mini image\n", - " #header['^IMAGE'] = [mini_image_bn, pvl._collections.Units(1, 'BYTES')]\n", " header['FILE_NAME'] = mini_image_bn\n", "else:\n", " # If attached label, calculate the new offset\n", - " header['^IMAGE'] = pvl._collections.Units(len(pvl.dumps(header, cls=RealIsisCubeLabelEncoder)), 'BYTES')" + " header['^IMAGE'] = pvl.collections.Units(len(pvl.dumps(header, encoder=encoder, grammar=grammar)), 'BYTES')" ] }, { "cell_type": "code", - "execution_count": 78, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1796" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "label_fn, label_ext = os.path.splitext(marci_file)\n", - "out_label = label_fn + '_cropped' + label_ext\n", + "out_label = label_fn + crop + label_ext\n", "\n", - "pvl.dump(header, out_label, cls=RealIsisCubeLabelEncoder)" + "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" ] }, { "cell_type": "code", - "execution_count": 79, - "metadata": { - "collapsed": true - }, + "execution_count": 11, + "metadata": {}, "outputs": [], "source": [ "with open(mini_image_fn, 'ab+') as f:\n", @@ -196,27 +252,16 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python autocnet", + "display_name": "Python 3", "language": "python", - "name": "autocnet" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -228,7 +273,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.0" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_mimap.ipynb b/isis/notebooks/crop_mimap.ipynb new file mode 100755 index 0000000000..0907d4cbc0 --- /dev/null +++ b/isis/notebooks/crop_mimap.ipynb @@ -0,0 +1,731 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pvl\n", + "import struct\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import datetime\n", + "import os.path\n", + "import binascii" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "kaguya_file = '/Users/kdlee/builds/ISIS3/isis/tests/data/mimap2isis/MI_MAP_02_N65E328N64E329SC.img'\n", + "image_file = kaguya_file" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PVLModule([\n", + " ('PDS_VERSION_ID', 'PDS3')\n", + " ('RECORD_TYPE', 'UNDEFINED')\n", + " ('FILE_NAME', 'MI_MAP_02_N65E328N64E329SC.img')\n", + " ('PRODUCT_ID', 'MI_MAP_02_N65E328N64E329SC')\n", + " ('DATA_FORMAT', 'PDS')\n", + " ('^GEOMETRIC_DATA_ALTITUDE', Quantity(value=19800, units='BYTES'))\n", + " ('^IMAGE', Quantity(value=16797016, units='BYTES'))\n", + " ('SOFTWARE_NAME', 'RGC_TC_MI')\n", + " ('SOFTWARE_VERSION', '2.10.1')\n", + " ('PROCESS_VERSION_ID', 'MAP')\n", + " ('PRODUCT_CREATION_TIME',\n", + " datetime.datetime(2011, 10, 25, 4, 31, 2, tzinfo=datetime.timezone.utc))\n", + " ('PROGRAM_START_TIME',\n", + " datetime.datetime(2011, 10, 25, 4, 25, 7, tzinfo=datetime.timezone.utc))\n", + " ('PRODUCER_ID', 'LISM')\n", + " ('PRODUCT_SET_ID', 'MI_MAP')\n", + " ('PRODUCT_VERSION_ID', '02')\n", + " ('REGISTERED_PRODUCT', 'Y')\n", + " ('LEVEL2A_FILE_NAME',\n", + " ['MV52A0_02NM04884_004_0030.img',\n", + " 'MV52A0_02NM04883_004_0030.img',\n", + " 'MV52A0_02NM04884_004_0029.img',\n", + " 'MV52A0_02NM04883_004_0029.img',\n", + " 'MV52A0_02NM04884_004_0028.img',\n", + " 'MV52A0_02NM04883_004_0028.img',\n", + " frozenset({'MV22A0_02NL01385_002_0045.img', 'MV22A0_02NL01385_002_0044.img'}),\n", + " frozenset({'MV22A0_02NL01384_003_0045.img', 'MV22A0_02NL01384_003_0046.img'}),\n", + " frozenset({'MV22A0_02NL01385_002_0046.img', 'MV22A0_02NL01385_002_0045.img'}),\n", + " frozenset({'MV22A0_02NL01384_003_0047.img', 'MV22A0_02NL01384_003_0046.img'}),\n", + " frozenset({'MV22A0_02NL01385_002_0046.img',\n", + " 'MV22A0_02NL01385_002_0047.img'})])\n", + " ('SPICE_METAKERNEL_FILE_NAME',\n", + " ['RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk',\n", + " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk'])\n", + " ('MISSION_NAME', 'SELENE')\n", + " ('SPACECRAFT_NAME', 'SELENE-M')\n", + " ('DATA_SET_ID', 'MI_MAP')\n", + " ('INSTRUMENT_NAME', 'Multiband Imager')\n", + " ('INSTRUMENT_ID', 'MI')\n", + " ('TARGET_NAME', 'MOON')\n", + " ('OBSERVATION_MODE_ID', 'NORMAL')\n", + " ('SENSOR_DESCRIPTION',\n", + " 'MI is a multiband push-broom imaging camera consisting of VIS(V) and NIR(N) '\n", + " 'sensors (each has nadir-directed optics of f number 65 mm and F ratio 3.7). '\n", + " 'Detector pixel sizes in micron are 13(V) and 40(N).')\n", + " ('SENSOR_DESCRIPTION2',\n", + " 'Physical band arrangement [from satellite -x to +x] are '\n", + " 'VIS1>VIS2>VIS5>VIS4>VIS3 and NIR3>NIR4>NIR1>NIR2. Parallax between nearest '\n", + " 'band sets [degree] are 2.7 for VIS and 2.6 for NIR. Sampling time [msec] are '\n", + " '13 for VIS and 39 for NIR.')\n", + " ('FILTER_NAME', ['MV1', 'MV2', 'MV3', 'MV4', 'MV5', 'MN1', 'MN2', 'MN3', 'MN4'])\n", + " ('CENTER_FILTER_WAVELENGTH',\n", + " Quantity(value=[414.0, 749.0, 901.0, 950.0, 1001.0, 1000.0, 1049.0, 1248.0, 1548.0], units='nm'))\n", + " ('BANDWIDTH',\n", + " Quantity(value=[20.0, 12.0, 21.0, 30.0, 42.0, 27.0, 28.0, 33.0, 48.0], units='nm'))\n", + " ('BASE_BAND', 'MV5')\n", + " ('GEOMETRIC_DATA_ALTITUDE',\n", + " {'BINNING_INTERVAL': 1,\n", + " 'BINNING_START_PIXEL_POSITION': [1, 1],\n", + " 'LINES': 2048,\n", + " 'LINE_SAMPLES': 2048,\n", + " 'SAMPLE_BITS': 32,\n", + " 'SAMPLE_TYPE': 'IEEE_REAL',\n", + " 'UNIT': 'km'})\n", + " ('IMAGE',\n", + " {'BANDS': 9,\n", + " 'BAND_STORAGE_TYPE': 'BAND SEQUENTIAL',\n", + " 'IMAGE_VALUE_TYPE': 'REFLECTANCE',\n", + " 'INVALID_PIXELS': [[94, 365, 0, 0],\n", + " [176, 370, 0, 0],\n", + " [147, 378, 0, 0],\n", + " [228, 340, 0, 0],\n", + " [218, 386, 0, 0],\n", + " [161, 989, 0, 0],\n", + " [430, 774, 0, 0],\n", + " [162, 1245, 0, 0],\n", + " [585, 952, 0, 0]],\n", + " 'INVALID_TYPE': ['SATURATION', 'MINUS', 'DUMMY_DEFECT', 'OTHER'],\n", + " 'INVALID_VALUE': [-20000, -21000, -22000, -23000],\n", + " 'LINES': 2048,\n", + " 'LINE_SAMPLES': 2048,\n", + " 'MAX_FOR_STATISTICAL_EVALUATION': [32767,\n", + " 32767,\n", + " 32767,\n", + " 32767,\n", + " 32767,\n", + " 32767,\n", + " 32767,\n", + " 32767,\n", + " 32767],\n", + " 'MIN_FOR_STATISTICAL_EVALUATION': [0, 0, 0, 0, 0, 0, 0, 0, 0],\n", + " 'OFFSET': 0.0,\n", + " 'OUT_OF_IMAGE_BOUNDS_PIXELS': [0, 0, 0, 0, 0, 0, 0, 0, 0],\n", + " 'OUT_OF_IMAGE_BOUNDS_VALUE': -30000,\n", + " 'SAMPLE_BITS': 16,\n", + " 'SAMPLE_TYPE': 'MSB_INTEGER',\n", + " 'SCALING_FACTOR': 2e-05,\n", + " 'SCENE_AVERAGE_DN': [3096.5,\n", + " 5582.3,\n", + " 5993.3,\n", + " 6101.0,\n", + " 6480.5,\n", + " 6425.4,\n", + " 6767.4,\n", + " 8075.3,\n", + " 9526.2],\n", + " 'SCENE_MAXIMUM_DN': [32268,\n", + " 32178,\n", + " 32562,\n", + " 31727,\n", + " 32684,\n", + " 32528,\n", + " 32179,\n", + " 32293,\n", + " 32433],\n", + " 'SCENE_MINIMUM_DN': [0, 0, 0, 0, 0, 0, 0, 0, 1],\n", + " 'SCENE_MODE_DN': [2980, 5635, 3, 6095, 6324, 0, 0, 7965, 9305],\n", + " 'SCENE_STDEV_DN': [1232.1,\n", + " 1933.4,\n", + " 2080.3,\n", + " 2053.8,\n", + " 2138.1,\n", + " 2049.9,\n", + " 2110.4,\n", + " 2367.1,\n", + " 2629.7],\n", + " 'SHADOWED_AREA_MAXIMUM': [327, 327, 327, 327, 327, 327, 327, 327, 327],\n", + " 'SHADOWED_AREA_MINIMUM': [0, 0, 0, 0, 0, 0, 0, 0, 0],\n", + " 'SHADOWED_AREA_PERCENTAGE': [2, 2, 2, 2, 1, 3, 2, 1, 1],\n", + " 'STRETCHED_FLAG': False,\n", + " 'UNIT': 'ND'})\n", + " ('IMAGE_MAP_PROJECTION',\n", + " {'A_AXIS_RADIUS': Quantity(value=1737.4, units='km'),\n", + " 'B_AXIS_RADIUS': Quantity(value=1737.4, units='km'),\n", + " 'CENTER_LATITUDE': Quantity(value=0.0, units='deg'),\n", + " 'CENTER_LONGITUDE': Quantity(value=0.0, units='deg'),\n", + " 'COORDINATE_SYSTEM_NAME': 'PLANETOCENTRIC',\n", + " 'COORDINATE_SYSTEM_TYPE': 'BODY-FIXED ROTATING',\n", + " 'C_AXIS_RADIUS': Quantity(value=1737.4, units='km'),\n", + " 'EASTERNMOST_LONGITUDE': Quantity(value=328.99951172, units='deg'),\n", + " 'FIRST_STANDARD_PARALLEL': 'N/A',\n", + " 'LINE_FIRST_PIXEL': 1,\n", + " 'LINE_LAST_PIXEL': 2048,\n", + " 'LINE_PROJECTION_OFFSET': Quantity(value=133120.0, units='pixel'),\n", + " 'MAP_PROJECTION_ROTATION': Quantity(value=0.0, units='deg'),\n", + " 'MAP_PROJECTION_TYPE': 'Simple Cylindrical',\n", + " 'MAP_RESOLUTION': Quantity(value=2048.0, units='pixel/deg'),\n", + " 'MAP_SCALE': Quantity(value=0.01480632, units='km/pixel'),\n", + " 'MAXIMUM_LATITUDE': Quantity(value=65.0, units='deg'),\n", + " 'MINIMUM_LATITUDE': Quantity(value=64.00048828, units='deg'),\n", + " 'POSITIVE_LONGITUDE_DIRECTION': 'EAST',\n", + " 'REFERENCE_LATITUDE': 'N/A',\n", + " 'REFERENCE_LONGITUDE': 'N/A',\n", + " 'SAMPLE_FIRST_PIXEL': 1,\n", + " 'SAMPLE_LAST_PIXEL': 2048,\n", + " 'SAMPLE_PROJECTION_OFFSET': Quantity(value=-65536.0, units='pixel'),\n", + " 'SECOND_STANDARD_PARALLEL': 'N/A',\n", + " 'WESTERNMOST_LONGITUDE': Quantity(value=328.0, units='deg')})\n", + " ('PROCESSING_PARAMETERS',\n", + " {'DARK_FILE_NAME': [frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", + " 'MIV_DRK_04724_05494_M___002.csv'}),\n", + " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", + " 'MIV_DRK_04724_05494_M___002.csv'}),\n", + " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", + " 'MIV_DRK_04724_05494_M___002.csv'}),\n", + " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", + " 'MIV_DRK_04724_05494_M___002.csv'}),\n", + " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", + " 'MIV_DRK_04724_05494_M___002.csv'}),\n", + " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", + " 'MIV_DRK_04724_05494_M___002.csv'}),\n", + " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", + " 'MIV_DRK_01226_01571_L___002.csv'}),\n", + " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", + " 'MIV_DRK_01226_01571_L___002.csv'}),\n", + " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", + " 'MIV_DRK_01226_01571_L___002.csv'}),\n", + " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", + " 'MIV_DRK_01226_01571_L___002.csv'}),\n", + " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", + " 'MIV_DRK_01226_01571_L___002.csv'})],\n", + " 'DARK_VALID_MINIMUM': [-3, -3, -3, -3, -3, -10, -10, -10, -10],\n", + " 'DTM_MOSAIC_FILE_NAME': ['N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A'],\n", + " 'EFFIC_FILE_NAME': [frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", + " 'MIV_EFF_PRFLT_N___v01.csv'})],\n", + " 'FLAT_FILE_NAME': [frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", + " 'MIV_FLT_04724_05494_N___002.csv'}),\n", + " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", + " 'MIV_FLT_04724_05494_N___002.csv'}),\n", + " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", + " 'MIV_FLT_04724_05494_N___002.csv'}),\n", + " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", + " 'MIV_FLT_04724_05494_N___002.csv'}),\n", + " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", + " 'MIV_FLT_04724_05494_N___002.csv'}),\n", + " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", + " 'MIV_FLT_04724_05494_N___002.csv'}),\n", + " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", + " 'MIV_FLT_01226_01571_L___002.csv'}),\n", + " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", + " 'MIV_FLT_01226_01571_L___002.csv'}),\n", + " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", + " 'MIV_FLT_01226_01571_L___002.csv'}),\n", + " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", + " 'MIV_FLT_01226_01571_L___002.csv'}),\n", + " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", + " 'MIV_FLT_01226_01571_L___002.csv'})],\n", + " 'FT_FILE_NAME': ['MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv',\n", + " 'MIV_FTF_PRFLT_N___v01.csv'],\n", + " 'FT_VALID_MINIMUM': -2,\n", + " 'L2A_DEAD_PIXEL_THRESHOLD': [35, 35, 35, 35, 35, 200, 200, 200, 200],\n", + " 'L2A_SATURATION_THRESHOLD': [1023,\n", + " 1023,\n", + " 1023,\n", + " 1023,\n", + " 1023,\n", + " 4095,\n", + " 4095,\n", + " 4095,\n", + " 4095],\n", + " 'MATCHING_MOSAIC': 'N/A',\n", + " 'NONLIN_FILE_NAME': [frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", + " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", + " 'MIV_NLT_PRFLT_N___v01.csv'})],\n", + " 'OVERLAP_SELECTION_ID': 'Prioritized order : nominal mission period and '\n", + " 'phase angle closer to the standard geometry',\n", + " 'PHOTO_CORR_COEF': [[0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.05678,\n", + " 1.913,\n", + " 0.0643,\n", + " 0.2448,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.06797,\n", + " 1.3,\n", + " -0.0144,\n", + " 0.2441,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381],\n", + " [0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.06921,\n", + " 1.487,\n", + " -0.0382,\n", + " 0.2122,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.08916,\n", + " 0.997,\n", + " -0.2526,\n", + " 0.1986,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381],\n", + " [0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.05908,\n", + " 1.43,\n", + " 0.056,\n", + " 0.227,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.09298,\n", + " 0.918,\n", + " -0.2251,\n", + " 0.198,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381],\n", + " [0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.05345,\n", + " 1.413,\n", + " 0.1263,\n", + " 0.2409,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.08705,\n", + " 0.883,\n", + " -0.1655,\n", + " 0.2052,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381],\n", + " [0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.05096,\n", + " 1.377,\n", + " 0.0736,\n", + " 0.2383,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.09746,\n", + " 0.889,\n", + " -0.2248,\n", + " 0.1933,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381],\n", + " [0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.05096,\n", + " 1.377,\n", + " 0.0736,\n", + " 0.2383,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.09746,\n", + " 0.889,\n", + " -0.2248,\n", + " 0.1933,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381],\n", + " [0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.03968,\n", + " 1.335,\n", + " 0.1809,\n", + " 0.2632,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.09486,\n", + " 0.843,\n", + " -0.2059,\n", + " 0.1958,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381],\n", + " [0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.06407,\n", + " 1.103,\n", + " -0.0062,\n", + " 0.2168,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.11201,\n", + " 0.773,\n", + " -0.3129,\n", + " 0.175,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381],\n", + " [0.5,\n", + " -0.019,\n", + " 0.000242,\n", + " -1.46e-06,\n", + " 0.09175,\n", + " 0.954,\n", + " 0.0111,\n", + " 0.1967,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.12374,\n", + " 0.692,\n", + " -0.2914,\n", + " 0.1648,\n", + " -0.00265,\n", + " 0.00174,\n", + " -0.000381]],\n", + " 'PHOTO_CORR_ID': 'LISM ORIGINAL',\n", + " 'RADIANCE_SATURATION_THRESHOLD': Quantity(value=425.971, units='W/m**2/micron/sr'),\n", + " 'RAD_CNV_COEF': Quantity(value=[[1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085]], units='W/m**2/micron/sr'),\n", + " 'REF_CNV_COEF': Quantity(value=[0.002353311, 0.002450451, 0.003549924, 0.003886012, 0.004316842, 0.004316842, 0.004893535, 0.007400877, 0.01218292], units='1/(W/m**2/micron/sr)'),\n", + " 'REF_SATURATION_THRESHOLD': Quantity(value=0.65534, units='ND'),\n", + " 'RESAMPLING_METHOD': 'Bi-Linear',\n", + " 'STANDARD_GEOMETRY': [30.0, 0.0, 30.0],\n", + " 'TCO_MOSAIC_FILE_NAME': ['N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A',\n", + " 'N/A']})\n", + "])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "header = pvl.load(kaguya_file)\n", + "header" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "with open(kaguya_file, 'rb') as f:\n", + " try:\n", + " image_offset = header[\"^IMAGE\"].value-(header['IMAGE']['SAMPLE_BITS']//8)\n", + " f.seek(image_offset)\n", + " b_image_data = f.read()\n", + " except AttributeError:\n", + " # If detached label, \"^IMAGE\" will be a list.\n", + " image_file = os.path.dirname(kaguya_file) + \"/\" + header[\"^IMAGE\"][0]\n", + " image_offset = header[\"^IMAGE\"][1].value\n", + " with open(image_file, 'rb') as im_f:\n", + " b_image_data = im_f.read()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "n_lines = 5\n", + "n_samples = 5\n", + "line_length = n_samples * (header['IMAGE']['SAMPLE_BITS']//8)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "image_data = []\n", + "# Needs 9 bands in cropped image\n", + "for j in range(n_lines * header['IMAGE']['BANDS'] + 1):\n", + " image_sample = np.frombuffer(b_image_data[j*line_length:(j+1)*line_length], dtype=np.int16, count=int(line_length/2))\n", + " image_data.append(image_sample)\n", + "image_data = np.array(image_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(46, 5)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "image_data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADkAAAD6CAYAAAAbZO+fAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAALrklEQVR4nO2de4xdVRXGf+u+5tXOTJ9Y+qKQCSCGANYKIcaKNiHUWGMwAaORREM0IUDEYCGGxBiTGhNCDH8YEtESFSQilZQCKQgKsUgfUApWaCmdMrT2PZ3OzJ37XP5xT+nss8/tPfO4pzNnny+Z3Nnrrnv2/s66Z9199vn23qKqxB2p892AKJCQjAsSknFBQrIRRORGEXlPRPaKyNrJatRkQ8b7OykiaeB9YBXQB2wFblXV/9T7THpGh2ZmzTZtRdtPxVcOCoXYpsLBvmOqOs9vz9RrUAisAPaq6j4AEXkCWAPUJZmZNZsL77nbsM380GZQaTl3GaDSagdn70/v6Q2qdyJf14XAR6PKfZ5tymEiJAO+MFinV0RuF5FtIrKtMjQ0gerGj4mQ7AMWjyovAg76nVT1EVVdrqrL0x0dE6hu/JjINbkV6BGRZcDHwC3At871gVQZWo+a53X+dju6g0vajHJuoGL5tG7eadn21ql33CRVtSwidwAvAGngUVV9d7zHayYmEklUdROwaZLa0jQ40eOZUCTHiuxAhcXPnzJsqRG7N9B9crjhsY7f8lnb+NifAn2diGRCMi5wgmSkiafYlebA6i7Dll9asvwkb557zQXcKaXKtu2x4HqdiGRCMi5wgmSkiUdzSn6Z2cPp3p6z/IYXmIlm4T/sXtHAUvtzB+rU60QkE5JxgRMkI008mdPCBX83q8yM2EMbXR9WjXLu1Xcsn7n9PaHrdSKSCcm4INprcrjM7G3HDJsU7B96zY+YhrZWy+dkzwy7gq3B9ToRyYRkXOAEyUgTTzWXZmRpt2EbvDBr+fkfurYdtzsMnY+/HrpeJyKZkIwLnCAZbeLJipVoOnsLll+h2/QpdKYtn5HbrrMr+N1fAut1IpIJybjACZKRJh7E7s30X2LLrcTXwUnZHR7SxfByOScimZAEEJFHReSIiLwzyjZbRDaLyB7vdVZzmzkxhLkmfw88jPmIcy3wkqqu83Sua4GfNDqQVKBlwBxuTBfsaytd8A1Jvvy2fbCrLm1U3SdoGElV/SdwwmdeA6z3/l8PfD10jecB470mL1DVQwDe6/zJa9Lko+mJZ7QUtFQYbHZ1gRgvycMisgDAez1Sz3G0FDTbEjCMGAHG2xl4BvgusM57/VuYD6XzZTp39xu249fMtvxm9pnKjsE1V1s+h64P0BS/EVxvmJ+Qx4EtwKUi0ici36NGbpWI7KEmtF/X6DjnEw0jqaq31nnry5PclqYh6fHEBZHehZRmZjj0xTmGrWoPu5Kfbz7gUXv0g7bD4et1IpIJybjACZLRys7SUOzy2QJaUM2qrxxwrKBJVHXgRCQTknFB5NdkqdM33BEwsthyuTlBZri30/KptgWMU9aBE5FMSMYFTpCMWINepbLYlJSlUnbmKRTMZuUW2rNlC/mAHkIdOBHJhGRc4ATJSBNPeihF5+vm9PqhRXbiab2s3ygP9nZZPtqe9HgMJCTjAidIRpp4Ku3KqeWmzEwL9nme8UK3UU5dbB8rNRy+6U5EMiEZF0R6TUpRyPWaCqyUPQOfku+B9LKNecvnZI89IaYenIhkQjIucIJktHchBejcZ951SJCi02cbWGInmaClP+rBiUgmJOOCMGKlxSLysojsFpF3ReQuzz5tNK9hEk8ZuEdVd4jITGC7iGwGbmOMmtdyG5y40swqXe/ZT1OrGdMWpP4IstVDGL3rIVXd4f1/GthNbfXPaaN5HdM1KSIXAVcD/yak5nVarQoqIjOAp4C7VXUg7OemwqqgoUiKSJYawT+q6l89c2jN6/lGw8QjIgL8Ftitqg+OemvMmtd00V5+eM4u+yu872ZzbLZzj52cKpnw8o8w2fV64DvALhF5y7PdT43ck57+9QDwzdC1RowwetfXCF56GKaJ5tWJHk+0D2FTUJxp2g7da49/VA6bQyRDXxqxfDo7bBsP2iZwJJIJybjACZLRJp72KtVrThu2/EDj8dNSgNLj1Bj2jXAikgnJuMAJktE+8BEllzUHTLNd9gBqucMc2yiX7Vhks4n6w0BCMi6I9Jqc1zrI93v+ZdiePfwZy6+7xXzomgt48NGWtu9e/lunXicimZCMC5wgGWniKVQz7B8xZ8I+f9mzlt+GIVP+cVHmuOXzwIE1oet1IpIJybjACZKRJp7WVIke39z5+w9faflVfOd+Z2qJ5fOFOXssm53CanAikgnJuMAJktFq0DXFqUq7aQs4zyeK5mP33rK9MFEqaJ5wHTgRyYRkXBDpNZmv5th1uvEuxw8uNn/WNwzaG6BckrMX5PlzneM5EcmEZFwQRgraKiJviMhOTwr6M88eKyloAbhBVQc9+dlrIvIc8A3GKAUtVtN8PGTOar1+3j7L7/Mv3mmU5823pXzDr1qb3QM/Cqw3jBRUVfXMSpdZ70+JmxRURNKe5OwIsFlVQ0tBpwJCkVTViqpeRW0T+BUiYo/t14Gx9Gl/4/2Xm4ExZVdV7QdeAW4kpBTUWPq0uz3IpekIIwWdB5RUtV9E2oCvAL9kHFLQ4nCWvjcvNGxPn7R7QDN8z3KKO+wkkyuFvwsJk10XAOtFJE0t8k+q6kYR2UKMpKBvU9Od++3HSaSgUwdOkIz0VitVhPaDpgi6EqA6K/smHbSuPGb5HOvrDl9vaM9pjIRkXBDtbkwdVYZWmF27ask+z91bTA366R1zLJ+Wy8Kvju9EJBOScYETJKPdjamSonrSTCqZ2fYkltvvfMYob/jfVZZPZ87+nP1YtgYnIpmQjAucIBlp4unsGGbV58zto/IVe2LLi8cvN8qpgAVCBorJokMGEpJxgRMko9W7VjL0DppKDg3YSaEtYw68zm21b6tm5+zR+M116nUikgnJuCDSa7IjU+SaWR8ZtkLVbkLJt9hOvpKzfPYP2kMi9eBEJBOScYETJCNNPCdOz+CJV83d67uWnrL8SlvMDkN+ftXyaTkRPj5ORDIhGRc4QTLah7AlaD9o9mZKB219uR+tRycWCycimZAcDU9f96aIbPTK00YKOpZI3kVtscwzWEtNCtoDvOSVpyRCJR4RWQSsBn7BWVHpGmCl9/96apq7c+pdwd43MmgJ00qbOc466+qjls/h/Y0T1hmEjeRDwL3A6P5VfKSgIvJV4Iiqbh9PBaOloOXh87P0adi1JL8mIjcBrUCniPwBTwqqqocaSUGBRwDaFiwew8pWk4cwAsL7gPsARGQl8GNV/baI/IoxSkGrOWV4qW8dj4x9hyEZ81wcPTHT8skGPLyth4n8Tq4DVonIHmCVV56SGFO3TlVfoZZFEynoVIMTJKO9C8lWaZ/X+GekUjHPfbUSEIsx7EbtRCQTknGBEySjXfpUxUoqQRvf+lEasZvZva0lwDMYTkQyIRkXOEEy2h5PqkpHm7n/ZP8H9jCGZn3JKOB2bOBae/87Hq5Tb+gWTmMkJOOCaCe/qJAvmEqOOT326oKDW8yZr8UuOxZLnrI7Efvr1OtEJBOScYETJEU1uvFeETkK9AJzAXt6a32E9V+qqtZ8/UhJflKpyDZVXd4sfz+c+LomJJuIR5rsb+C8XJNRI/m6ThQicqOIvCcie70lpvzvi4j82nt/t4hs9W/L6vNfKSKnROQt7++BUA1R1ab8AWngA+BiIAfsBD7t87kJeI7aXnqrgV2efSbwfoD/SmDjWNvSzEiuAPaq6j5VLQJPUBNTjMYa4DFvHa5ngZz39Hr0tqwTRjNJLgRGq+r7sBsd6OPbltWP67zl5Z4TkSvCNKSZ95NBj538qTzIp5X627LuoNZ1G/Q0DBsAe6FJH5oZyT5g8ajyIuBgCJ+fY27L+glUdeDM8nKqugnIisjchi1pYuLJAPuAZZxNPFf4fFZzNvFcS60T/tA5jvkpzv62r6C2bJU0akvTvq6qWhaRO4AXqGXaR1X1XRH5gff+b4BN1DLsXu9jc4AbfNuyLhnlfzPwQxEpA3ngFg3Rm0l6PHFBQjIuSEjGBQnJuMAJkv8HrgCMR0yHp4oAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(image_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", + " def encode_time(self, value):\n", + " if value.microsecond:\n", + " second = u'%02d.%06d' % (value.second, value.microsecond)\n", + " else:\n", + " second = u'%02d' % value.second\n", + "\n", + " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", + " return time" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "image_fn, image_ext = os.path.splitext(image_file)\n", + "crop = '_cropped'\n", + "mini_image_fn = image_fn + crop + image_ext\n", + "mini_image_bn = os.path.basename(mini_image_fn)\n", + "\n", + "grammar = pvl.grammar.ISISGrammar()\n", + "grammar.comments+=((\"#\", \"\\n\"), )\n", + "encoder = RealIsisCubeLabelEncoder()\n", + "\n", + "# Overwrite the number of lines and samples in the label\n", + "header['IMAGE']['LINES'] = n_lines\n", + "header['IMAGE']['LINE_SAMPLES'] = n_samples\n", + "\n", + "if kaguya_file != image_file:\n", + " # If detached label, point the mini label to the mini image\n", + " header['^IMAGE'] = [mini_image_bn, pvl.collections.Units(1, 'BYTES')]\n", + " header['FILE_NAME'] = mini_image_bn\n", + "else:\n", + " # If attached label, calculate the new offset\n", + " header['^IMAGE'] = pvl.collections.Units(len(pvl.dumps(header, encoder=encoder, grammar=grammar)), 'BYTES')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "15766" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "label_fn, label_ext = os.path.splitext(kaguya_file)\n", + "out_label = label_fn + crop + label_ext\n", + "\n", + "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "with open(mini_image_fn, 'ab+') as f:\n", + " b_reduced_image_data = image_data.tobytes()\n", + " f.seek(0, 2)\n", + " f.write(b'\\n')\n", + " f.write(b_reduced_image_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/isis/src/base/apps/demprep/demprep.cpp b/isis/src/base/apps/demprep/demprep.cpp new file mode 100644 index 0000000000..c0df1aa2f1 --- /dev/null +++ b/isis/src/base/apps/demprep/demprep.cpp @@ -0,0 +1,416 @@ +#include + +#include "Distance.h" +#include "ProcessByLine.h" +#include "TProjection.h" +#include "SpecialPixel.h" +#include "LineManager.h" +#include "OriginalLabel.h" +#include "History.h" +#include "Table.h" +#include "Pvl.h" +#include "UserInterface.h" + +using namespace std; + +namespace Isis{ + + void DoWrap(Buffer &in); + void GetStats(Buffer &in, Buffer &out); + + Cube *ocube; + + int leftPad; + int rightPad; + int topPad; + int bottomPad; + int inl; + Statistics inCubeStats; + Statistics outCubeStats; + + void demprep(UserInterface &ui, Pvl *log) { + // We will be using a mosaic technique so get the size of the input file + ProcessByLine p; + + CubeAttributeInput &inputAtt = ui.GetInputAttribute("FROM"); + Cube *icube = p.SetInputCube(ui.GetFileName("FROM"), inputAtt); + int ins = icube->sampleCount(); + inl = icube->lineCount(); + int inb = icube->bandCount(); + outCubeStats.Reset(); + + PvlGroup mapgrp = icube->label()->findGroup("Mapping", Pvl::Traverse); + bool hasExtents = false; + bool isGlobal = false; + double minLat,maxLat,minLon,maxLon; + if (mapgrp.hasKeyword("MinimumLatitude") && mapgrp.hasKeyword("MaximumLatitude") && + mapgrp.hasKeyword("MinimumLongitude") && mapgrp.hasKeyword("MaximumLongitude")) { + hasExtents = true; + minLat = mapgrp["MinimumLatitude"]; + maxLat = mapgrp["MaximumLatitude"]; + minLon = mapgrp["MinimumLongitude"]; + maxLon = mapgrp["MaximumLongitude"]; + if ((maxLat - minLat) >= 180.0 && (maxLon - minLon) >= 360.0) isGlobal = true; + } + + TProjection *proj = (TProjection *) icube->projection(); + if(proj == NULL) { + IString message = "The input cube must be a DEM file, which means it must be projected. "; + message += "This file is not map projected."; + throw IException(IException::User, message, _FILEINFO_); + } + + if(!proj->IsEquatorialCylindrical()) { + CubeAttributeOutput &att = ui.GetOutputAttribute("TO"); + ocube = p.SetOutputCube(ui.GetFileName("TO"), att); + p.StartProcess(GetStats); + + PvlGroup demRange("Results"); + demRange += PvlKeyword("MinimumRadius", toString(inCubeStats.Minimum()), "meters"); + demRange += PvlKeyword("MaximumRadius", toString(inCubeStats.Maximum()), "meters"); + if (log){ + log->addGroup(demRange); + } + + // Store min/max radii values in new ShapeModelStatistics table + QString shp_name = "ShapeModelStatistics"; + TableField fmin("MinimumRadius",Isis::TableField::Double); + TableField fmax("MaximumRadius",Isis::TableField::Double); + + TableRecord record; + record += fmin; + record += fmax; + + Table table(shp_name,record); + + record[0] = Distance(inCubeStats.Minimum(), + Distance::Meters).kilometers(); + record[1] = Distance(inCubeStats.Maximum(), + Distance::Meters).kilometers(); + table += record; + + ocube->write(table); + p.EndProcess(); + return; + } + + if (proj->LatitudeTypeString() != "Planetocentric") { + IString message = "The input cube must have Planetocentric latitude type."; + throw IException(IException::User, message, _FILEINFO_); + } + + // Determine if the file is global + bool isPadded = false; + int insideImage = 0; + if (!hasExtents) { + if (proj->LongitudeDomainString() == "360") { + proj->SetGround(90.0,0.0); + if (proj->IsGood()) { + if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && + proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + insideImage = insideImage + 1; + } + proj->SetGround(90.0,360.0); + } + if (proj->IsGood()) { + if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && + proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + insideImage = insideImage + 1; + } + proj->SetGround(-90.0,0.0); + } + if (proj->IsGood()) { + if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && + proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + insideImage = insideImage + 1; + } + proj->SetGround(-90.0,360.0); + } + if (proj->IsGood()) { + if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && + proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + insideImage = insideImage + 1; + } + } + if (proj->IsGood() && insideImage == 4) isGlobal = true; + } else { + proj->SetGround(90.0,-180.0); + if (proj->IsGood()) { + if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && + proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + insideImage = insideImage + 1; + } + proj->SetGround(90.0,180.0); + } + if (proj->IsGood()) { + if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && + proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + insideImage = insideImage + 1; + } + proj->SetGround(-90.0,-180.0); + } + if (proj->IsGood()) { + if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && + proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + insideImage = insideImage + 1; + } + proj->SetGround(-90.0,180.0); + } + if (proj->IsGood()) { + if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && + proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + insideImage = insideImage + 1; + } + } + if (proj->IsGood() && insideImage == 4) isGlobal = true; + } + } + + if (isGlobal) { + if (proj->LongitudeDomainString() == "360") { + if (proj->LongitudeDirectionString() == "PositiveEast") { + proj->SetGround(90.0,0.0); + } else { + proj->SetGround(90.0,360.0); + } + if (proj->WorldX() >= 1.0 && proj->WorldY() >= 1.0) isPadded = true; + } else { + if (proj->LongitudeDirectionString() == "PositiveEast") { + proj->SetGround(90.0,-180.0); + } else { + proj->SetGround(90.0,180.0); + } + if (proj->WorldX() >= 1.0 && proj->WorldY() >= 1.0) isPadded = true; + } + } + + // If the file isn't global, then determine if it contains either + // the south or north pole + bool hasSPole = false; + bool hasNPole = false; + if (!isGlobal) { + proj->SetGround(90.0,0.0); + if (proj->IsGood()) { + if (proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + hasNPole = true; + if (proj->WorldY() >= 1.0) isPadded = true; + } + } + proj->SetGround(-90.0,0.0); + if (proj->IsGood()) { + if (proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { + hasSPole = true; + if (proj->WorldY() <= inl) isPadded = true; + } + } + } + + // Set the padding parameters + leftPad = 0; + rightPad = 0; + topPad = 0; + bottomPad = 0; + + if (isGlobal && !isPadded) { + leftPad = 1; + rightPad = 1; + topPad = 1; + bottomPad = 1; + } + if (!isGlobal && !isPadded) { + leftPad = 0; + rightPad = 0; + if (hasNPole) { + topPad = 1; + } else { + topPad = 0; + } + if (hasSPole) { + bottomPad = 1; + } else { + bottomPad = 0; + } + } + + // Compute the output size + int ns = ins + leftPad + rightPad; + int nl = inl + topPad + bottomPad; + int nb = inb; + + double upperLeftCorner = mapgrp["UpperLeftCornerX"]; + upperLeftCorner -= leftPad * proj->Resolution(); + mapgrp.addKeyword(PvlKeyword("UpperLeftCornerX", toString(upperLeftCorner), "meters"), + Pvl::Replace); + + upperLeftCorner = mapgrp["UpperLeftCornerY"]; + upperLeftCorner += topPad * proj->Resolution(); + mapgrp.addKeyword(PvlKeyword("UpperLeftCornerY", toString(upperLeftCorner), "meters"), + Pvl::Replace); + + + CubeAttributeOutput &att = ui.GetOutputAttribute("TO"); + ocube = p.SetOutputCube(ui.GetFileName("TO"), att, ns, nl, nb); + // Make sure everything is propagated and closed + p.EndProcess(); + + // Now we'll really be processing our input cube + p.SetInputCube(ui.GetFileName("FROM"), inputAtt); + + // We need to create the output file + ocube = new Cube(); + ocube->open(FileName(ui.GetFileName("TO")).expanded(), "rw"); + + p.StartProcess(DoWrap); + + // Update mapping grp + ocube->putGroup(mapgrp); + + PvlGroup demRange("Results"); + demRange += PvlKeyword("MinimumRadius", toString(outCubeStats.Minimum()), "meters"); + demRange += PvlKeyword("MaximumRadius", toString(outCubeStats.Maximum()), "meters"); + if (log){ + log->addGroup(demRange); + } + + // Store min/max radii values in new ShapeModelStatistics table + QString shp_name = "ShapeModelStatistics"; + TableField fmin("MinimumRadius",Isis::TableField::Double); + TableField fmax("MaximumRadius",Isis::TableField::Double); + + TableRecord record; + record += fmin; + record += fmax; + + Table table(shp_name,record); + + record[0] = Distance(outCubeStats.Minimum(), + Distance::Meters).kilometers(); + record[1] = Distance(outCubeStats.Maximum(), + Distance::Meters).kilometers(); + table += record; + + ocube->write(table); + + p.EndProcess(); + ocube->close(); + delete ocube; + } + + void GetStats(Buffer &in, Buffer &out) { + inCubeStats.AddData(&in[0], in.size()); + for (int i=0; iwrite(outMan); + outMan.SetLine(2); + } + + // Copy most data + for(int outputIndex = 0; outputIndex < outputSize; outputIndex++) { + int inputIndex = outputIndex - leftPad; + if(inputIndex < 0) { + outMan[outputIndex] = in[inputIndex + inputSize]; + } + else if(inputIndex < inputSize) { + outMan[outputIndex] = in[inputIndex]; + } + else { + outMan[outputIndex] = in[inputIndex - inputSize]; + } + } + + outCubeStats.AddData(&outMan[0], outMan.size()); + ocube->write(outMan); + + // Write bottom pad? + if (bottomPad == 1 && in.Line() == inl) { + double average = inputLineStats.Average(); //may be Isis::NULL8 + for (int outputIndex = 0; outputIndex < outputSize; outputIndex++) { + int inputIndex = outputIndex - leftPad; + if (average == Isis::NULL8) { + if(inputIndex < 0) { + outMan[outputIndex] = in[inputIndex + inputSize]; + } + else if(inputIndex < inputSize) { + outMan[outputIndex] = in[inputIndex]; + } + else { + outMan[outputIndex] = in[inputIndex - inputSize]; + } + } + else { + if(inputIndex < 0) { + outMan[outputIndex] = 2.0 * average - in[inputIndex + inputSize]; + } + else if(inputIndex < inputSize) { + outMan[outputIndex] = 2.0 * average - in[inputIndex]; + } + else { + outMan[outputIndex] = 2.0 * average - in[inputIndex - inputSize]; + } + } + } + outMan.SetLine(inl + topPad + bottomPad); + outCubeStats.AddData(&outMan[0], outMan.size()); + ocube->write(outMan); + } + } +} diff --git a/isis/src/base/apps/demprep/demprep.h b/isis/src/base/apps/demprep/demprep.h new file mode 100644 index 0000000000..29af3c4e92 --- /dev/null +++ b/isis/src/base/apps/demprep/demprep.h @@ -0,0 +1,11 @@ +#ifndef demprep_h // Change this to your app name in all lower case suffixed with _h (e.g. campt_h, cam2map_h etc.) +#define demprep_h + +#include "Cube.h" +#include "UserInterface.h" + +namespace Isis{ + extern void demprep(UserInterface &ui, Pvl *log); +} + +#endif diff --git a/isis/src/base/apps/demprep/main.cpp b/isis/src/base/apps/demprep/main.cpp index ff87ea920e..95cb0e9271 100644 --- a/isis/src/base/apps/demprep/main.cpp +++ b/isis/src/base/apps/demprep/main.cpp @@ -1,407 +1,25 @@ #include "Isis.h" -#include +#include "Application.h" +#include "Pvl.h" +#include "demprep.h" -#include "Distance.h" -#include "ProcessByLine.h" -#include "TProjection.h" -#include "SpecialPixel.h" -#include "LineManager.h" -#include "OriginalLabel.h" -#include "History.h" -#include "Table.h" - -using namespace std; using namespace Isis; -void DoWrap(Buffer &in); -void GetStats(Buffer &in, Buffer &out); - -Cube *ocube; - -int leftPad; -int rightPad; -int topPad; -int bottomPad; -int inl; -Statistics inCubeStats; -Statistics outCubeStats; - void IsisMain() { - // We will be using a mosaic technique so get the size of the input file - ProcessByLine p; UserInterface &ui = Application::GetUserInterface(); - Cube *icube = p.SetInputCube("FROM"); - int ins = icube->sampleCount(); - inl = icube->lineCount(); - int inb = icube->bandCount(); - outCubeStats.Reset(); - - PvlGroup mapgrp = icube->label()->findGroup("Mapping", Pvl::Traverse); - bool hasExtents = false; - bool isGlobal = false; - double minLat,maxLat,minLon,maxLon; - if (mapgrp.hasKeyword("MinimumLatitude") && mapgrp.hasKeyword("MaximumLatitude") && - mapgrp.hasKeyword("MinimumLongitude") && mapgrp.hasKeyword("MaximumLongitude")) { - hasExtents = true; - minLat = mapgrp["MinimumLatitude"]; - maxLat = mapgrp["MaximumLatitude"]; - minLon = mapgrp["MinimumLongitude"]; - maxLon = mapgrp["MaximumLongitude"]; - if ((maxLat - minLat) >= 180.0 && (maxLon - minLon) >= 360.0) isGlobal = true; - } - - TProjection *proj = (TProjection *) icube->projection(); - if(proj == NULL) { - IString message = "The input cube must be a DEM file, which means it must be projected. "; - message += "This file is not map projected."; - throw IException(IException::User, message, _FILEINFO_); - } - - if(!proj->IsEquatorialCylindrical()) { - ocube = p.SetOutputCube("TO"); - p.StartProcess(GetStats); - - PvlGroup demRange("Results"); - demRange += PvlKeyword("MinimumRadius", toString(inCubeStats.Minimum()), "meters"); - demRange += PvlKeyword("MaximumRadius", toString(inCubeStats.Maximum()), "meters"); - Application::Log(demRange); - - // Store min/max radii values in new ShapeModelStatistics table - QString shp_name = "ShapeModelStatistics"; - TableField fmin("MinimumRadius",Isis::TableField::Double); - TableField fmax("MaximumRadius",Isis::TableField::Double); - - TableRecord record; - record += fmin; - record += fmax; - - Table table(shp_name,record); - - record[0] = Distance(inCubeStats.Minimum(), - Distance::Meters).kilometers(); - record[1] = Distance(inCubeStats.Maximum(), - Distance::Meters).kilometers(); - table += record; - - ocube->write(table); - p.EndProcess(); - return; - } - - if (proj->LatitudeTypeString() != "Planetocentric") { - IString message = "The input cube must have Planetocentric latitude type."; - throw IException(IException::User, message, _FILEINFO_); - } - - // Determine if the file is global - bool isPadded = false; - int insideImage = 0; - if (!hasExtents) { - if (proj->LongitudeDomainString() == "360") { - proj->SetGround(90.0,0.0); - if (proj->IsGood()) { - if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && - proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - insideImage = insideImage + 1; - } - proj->SetGround(90.0,360.0); - } - if (proj->IsGood()) { - if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && - proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - insideImage = insideImage + 1; - } - proj->SetGround(-90.0,0.0); - } - if (proj->IsGood()) { - if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && - proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - insideImage = insideImage + 1; - } - proj->SetGround(-90.0,360.0); - } - if (proj->IsGood()) { - if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && - proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - insideImage = insideImage + 1; - } - } - if (proj->IsGood() && insideImage == 4) isGlobal = true; - } else { - proj->SetGround(90.0,-180.0); - if (proj->IsGood()) { - if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && - proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - insideImage = insideImage + 1; - } - proj->SetGround(90.0,180.0); - } - if (proj->IsGood()) { - if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && - proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - insideImage = insideImage + 1; - } - proj->SetGround(-90.0,-180.0); - } - if (proj->IsGood()) { - if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && - proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - insideImage = insideImage + 1; - } - proj->SetGround(-90.0,180.0); - } - if (proj->IsGood()) { - if (proj->WorldX() > 0.0 && proj->WorldX() < ins+1 && - proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - insideImage = insideImage + 1; - } - } - if (proj->IsGood() && insideImage == 4) isGlobal = true; - } - } - - if (isGlobal) { - if (proj->LongitudeDomainString() == "360") { - if (proj->LongitudeDirectionString() == "PositiveEast") { - proj->SetGround(90.0,0.0); - } else { - proj->SetGround(90.0,360.0); - } - if (proj->WorldX() >= 1.0 && proj->WorldY() >= 1.0) isPadded = true; - } else { - if (proj->LongitudeDirectionString() == "PositiveEast") { - proj->SetGround(90.0,-180.0); - } else { - proj->SetGround(90.0,180.0); - } - if (proj->WorldX() >= 1.0 && proj->WorldY() >= 1.0) isPadded = true; - } - } - - // If the file isn't global, then determine if it contains either - // the south or north pole - bool hasSPole = false; - bool hasNPole = false; - if (!isGlobal) { - proj->SetGround(90.0,0.0); - if (proj->IsGood()) { - if (proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - hasNPole = true; - if (proj->WorldY() >= 1.0) isPadded = true; - } - } - proj->SetGround(-90.0,0.0); - if (proj->IsGood()) { - if (proj->WorldY() > 0.0 && proj->WorldY() < inl+1) { - hasSPole = true; - if (proj->WorldY() <= inl) isPadded = true; - } - } - } - - // Set the padding parameters - leftPad = 0; - rightPad = 0; - topPad = 0; - bottomPad = 0; - - if (isGlobal && !isPadded) { - leftPad = 1; - rightPad = 1; - topPad = 1; - bottomPad = 1; - } - if (!isGlobal && !isPadded) { - leftPad = 0; - rightPad = 0; - if (hasNPole) { - topPad = 1; - } else { - topPad = 0; - } - if (hasSPole) { - bottomPad = 1; - } else { - bottomPad = 0; - } - } - - // Compute the output size - int ns = ins + leftPad + rightPad; - int nl = inl + topPad + bottomPad; - int nb = inb; - - double upperLeftCorner = mapgrp["UpperLeftCornerX"]; - upperLeftCorner -= leftPad * proj->Resolution(); - mapgrp.addKeyword(PvlKeyword("UpperLeftCornerX", toString(upperLeftCorner), "meters"), - Pvl::Replace); - - upperLeftCorner = mapgrp["UpperLeftCornerY"]; - upperLeftCorner += topPad * proj->Resolution(); - mapgrp.addKeyword(PvlKeyword("UpperLeftCornerY", toString(upperLeftCorner), "meters"), - Pvl::Replace); - - - p.SetOutputCube("TO", ns, nl, nb); - // Make sure everything is propagated and closed - p.EndProcess(); - - // Now we'll really be processing our input cube - p.SetInputCube("FROM"); - - // We need to create the output file - ocube = new Cube(); - ocube->open(FileName(ui.GetFileName("TO")).expanded(), "rw"); - - p.StartProcess(DoWrap); - - // Update mapping grp - ocube->putGroup(mapgrp); - - PvlGroup demRange("Results"); - demRange += PvlKeyword("MinimumRadius", toString(outCubeStats.Minimum()), "meters"); - demRange += PvlKeyword("MaximumRadius", toString(outCubeStats.Maximum()), "meters"); - Application::Log(demRange); - - // Store min/max radii values in new ShapeModelStatistics table - QString shp_name = "ShapeModelStatistics"; - TableField fmin("MinimumRadius",Isis::TableField::Double); - TableField fmax("MaximumRadius",Isis::TableField::Double); - - TableRecord record; - record += fmin; - record += fmax; - - Table table(shp_name,record); - - record[0] = Distance(outCubeStats.Minimum(), - Distance::Meters).kilometers(); - record[1] = Distance(outCubeStats.Maximum(), - Distance::Meters).kilometers(); - table += record; - - ocube->write(table); - - p.EndProcess(); - ocube->close(); - delete ocube; -} - -void GetStats(Buffer &in, Buffer &out) { - inCubeStats.AddData(&in[0], in.size()); - for (int i=0; iwrite(outMan); - outMan.SetLine(2); - } - - // Copy most data - for(int outputIndex = 0; outputIndex < outputSize; outputIndex++) { - int inputIndex = outputIndex - leftPad; - if(inputIndex < 0) { - outMan[outputIndex] = in[inputIndex + inputSize]; - } - else if(inputIndex < inputSize) { - outMan[outputIndex] = in[inputIndex]; - } - else { - outMan[outputIndex] = in[inputIndex - inputSize]; - } - } - - outCubeStats.AddData(&outMan[0], outMan.size()); - ocube->write(outMan); - - // Write bottom pad? - if (bottomPad == 1 && in.Line() == inl) { - double average = inputLineStats.Average(); //may be Isis::NULL8 - for (int outputIndex = 0; outputIndex < outputSize; outputIndex++) { - int inputIndex = outputIndex - leftPad; - if (average == Isis::NULL8) { - if(inputIndex < 0) { - outMan[outputIndex] = in[inputIndex + inputSize]; - } - else if(inputIndex < inputSize) { - outMan[outputIndex] = in[inputIndex]; - } - else { - outMan[outputIndex] = in[inputIndex - inputSize]; - } - } - else { - if(inputIndex < 0) { - outMan[outputIndex] = 2.0 * average - in[inputIndex + inputSize]; - } - else if(inputIndex < inputSize) { - outMan[outputIndex] = 2.0 * average - in[inputIndex]; - } - else { - outMan[outputIndex] = 2.0 * average - in[inputIndex - inputSize]; - } - } - } - outMan.SetLine(inl + topPad + bottomPad); - outCubeStats.AddData(&outMan[0], outMan.size()); - ocube->write(outMan); + for (auto grpIt = appLog.beginGroup(); grpIt!= appLog.endGroup(); grpIt++) { + Application::Log(*grpIt); } } diff --git a/isis/src/base/apps/demprep/tsts/Makefile b/isis/src/base/apps/demprep/tsts/Makefile deleted file mode 100644 index 46d84c74c2..0000000000 --- a/isis/src/base/apps/demprep/tsts/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -BLANKS = "%-6s" -LENGTH = "%-40s" - -include $(ISISROOT)/make/isismake.tststree diff --git a/isis/src/base/apps/demprep/tsts/prepglobal/Makefile b/isis/src/base/apps/demprep/tsts/prepglobal/Makefile deleted file mode 100644 index 67ec73d0e3..0000000000 --- a/isis/src/base/apps/demprep/tsts/prepglobal/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -APPNAME = demprep - -labels.txt.IGNORELINES = Bytes StartByte ByteOrder TileSamples TileLines - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/ulcn2005_lpo.cub \ - to=$(OUTPUT)/ulcn2005_lpo_pad.cub > /dev/null; - catlab from=$(OUTPUT)/ulcn2005_lpo_pad.cub to=$(OUTPUT)/labels.txt > /dev/null; diff --git a/isis/src/base/apps/demprep/tsts/prepinside/Makefile b/isis/src/base/apps/demprep/tsts/prepinside/Makefile deleted file mode 100644 index 20c7a77d41..0000000000 --- a/isis/src/base/apps/demprep/tsts/prepinside/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -APPNAME = demprep - -labels.txt.IGNORELINES = Bytes StartByte ByteOrder TileSamples TileLines - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/ulcn2005_lpo_inside.cub \ - to=$(OUTPUT)/ulcn2005_lpo_inside_pad.cub > /dev/null; - catlab from=$(OUTPUT)/ulcn2005_lpo_inside_pad.cub to=$(OUTPUT)/labels.txt > /dev/null; diff --git a/isis/src/base/apps/demprep/tsts/prepnpole/Makefile b/isis/src/base/apps/demprep/tsts/prepnpole/Makefile deleted file mode 100644 index bf45698152..0000000000 --- a/isis/src/base/apps/demprep/tsts/prepnpole/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -APPNAME = demprep - -labels.txt.IGNORELINES = Bytes StartByte ByteOrder TileSamples TileLines - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/ulcn2005_lpo_npole.cub \ - to=$(OUTPUT)/ulcn2005_lpo_npole_pad.cub > /dev/null; - catlab from=$(OUTPUT)/ulcn2005_lpo_npole_pad.cub to=$(OUTPUT)/labels.txt > /dev/null; diff --git a/isis/src/base/apps/demprep/tsts/prepspole/Makefile b/isis/src/base/apps/demprep/tsts/prepspole/Makefile deleted file mode 100644 index a528150816..0000000000 --- a/isis/src/base/apps/demprep/tsts/prepspole/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -APPNAME = demprep - -labels.txt.IGNORELINES = Bytes StartByte ByteOrder TileSamples TileLines - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/ulcn2005_lpo_spole.cub \ - to=$(OUTPUT)/ulcn2005_lpo_spole_pad.cub > /dev/null; - catlab from=$(OUTPUT)/ulcn2005_lpo_spole_pad.cub to=$(OUTPUT)/labels.txt > /dev/null; diff --git a/isis/src/base/apps/demprep/tsts/specialpixels/Makefile b/isis/src/base/apps/demprep/tsts/specialpixels/Makefile deleted file mode 100644 index 5e0b280be2..0000000000 --- a/isis/src/base/apps/demprep/tsts/specialpixels/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -APPNAME = demprep - -labels.txt.IGNORELINES = Bytes StartByte ByteOrder TileSamples TileLines - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/vest64_dtm_specialpixels.cub \ - to=$(OUTPUT)/vest64_dtm_specialpixels.cub > /dev/null; - catlab from=$(OUTPUT)/vest64_dtm_specialpixels.cub \ - to=$(OUTPUT)/labels.txt > /dev/null; diff --git a/isis/src/base/apps/mappt/mappt.xml b/isis/src/base/apps/mappt/mappt.xml index 54f9a4eefa..6cb5e1cfe7 100644 --- a/isis/src/base/apps/mappt/mappt.xml +++ b/isis/src/base/apps/mappt/mappt.xml @@ -311,10 +311,8 @@ COORDLIST - TYPE - TYPE SAMPLE X Y diff --git a/isis/src/base/apps/pds2isis/Makefile b/isis/src/base/apps/pds2isis/Makefile deleted file mode 100644 index 7578f0b21d..0000000000 --- a/isis/src/base/apps/pds2isis/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -ifeq ($(ISISROOT), $(BLANK)) -.SILENT: -error: - echo "Please set ISISROOT"; -else - include $(ISISROOT)/make/isismake.apps -endif \ No newline at end of file diff --git a/isis/src/base/apps/pds2isis/pds2isis.cpp b/isis/src/base/apps/pds2isis/pds2isis.cpp new file mode 100644 index 0000000000..6e9cc20a1b --- /dev/null +++ b/isis/src/base/apps/pds2isis/pds2isis.cpp @@ -0,0 +1,84 @@ +#include "ProcessImportPds.h" + +#include "UserInterface.h" +#include "FileName.h" + +using namespace std; +namespace Isis { + void pds2isis(UserInterface &ui, Pvl *log) { + ProcessImportPds p; + Pvl label; + QString labelFile = ui.GetFileName("FROM"); + QString imageFile(""); + if(ui.WasEntered("IMAGE")) { + imageFile = ui.GetFileName("IMAGE"); + } + + p.SetPdsFile(labelFile, imageFile, label); + + + CubeAttributeOutput &att = ui.GetOutputAttribute("TO"); + Cube *ocube = p.SetOutputCube(ui.GetFileName("TO"), att); + + // Get user entered special pixel ranges + if(ui.GetBoolean("SETNULLRANGE")) { + p.SetNull(ui.GetDouble("NULLMIN"), ui.GetDouble("NULLMAX")); + } + if(ui.GetBoolean("SETHRSRANGE")) { + p.SetHRS(ui.GetDouble("HRSMIN"), ui.GetDouble("HRSMAX")); + } + if(ui.GetBoolean("SETHISRANGE")) { + p.SetHIS(ui.GetDouble("HISMIN"), ui.GetDouble("HISMAX")); + } + if(ui.GetBoolean("SETLRSRANGE")) { + p.SetLRS(ui.GetDouble("LRSMIN"), ui.GetDouble("LRSMAX")); + } + if(ui.GetBoolean("SETLISRANGE")) { + p.SetLIS(ui.GetDouble("LISMIN"), ui.GetDouble("LISMAX")); + } + + // Export the cube + p.StartProcess(); + + // Get as many of the other labels as we can + Pvl otherLabels; + p.TranslatePdsProjection(otherLabels); + if(p.IsIsis2()) { + p.TranslateIsis2Labels(otherLabels); + } + else { + p.TranslatePdsLabels(otherLabels); + } + + if(otherLabels.hasGroup("Mapping") && + (otherLabels.findGroup("Mapping").keywords() > 0)) { + ocube->putGroup(otherLabels.findGroup("Mapping")); + } + if(otherLabels.hasGroup("Instrument") && + (otherLabels.findGroup("Instrument").keywords() > 0)) { + ocube->putGroup(otherLabels.findGroup("Instrument")); + } + if(otherLabels.hasGroup("BandBin") && + (otherLabels.findGroup("BandBin").keywords() > 0)) { + ocube->putGroup(otherLabels.findGroup("BandBin")); + } + if(otherLabels.hasGroup("Archive") && + (otherLabels.findGroup("Archive").keywords() > 0)) { + ocube->putGroup(otherLabels.findGroup("Archive")); + } + + // Check for and log any change from the default projection offsets and multipliers + if (p.GetProjectionOffsetChange()) { + PvlGroup results = p.GetProjectionOffsetGroup(); + results.setName("Results"); + results[0].addComment("Projection offsets and multipliers have been changed from"); + results[0].addComment("defaults. New values are below."); + log->addGroup(results); + } + + p.EndProcess(); + + return; + } +} + diff --git a/isis/src/base/apps/pds2isis/pds2isis.h b/isis/src/base/apps/pds2isis/pds2isis.h new file mode 100644 index 0000000000..d7f9e94aeb --- /dev/null +++ b/isis/src/base/apps/pds2isis/pds2isis.h @@ -0,0 +1,11 @@ +#ifndef pds2isis_h +#define pds2isis_h + +#include "Pvl.h" +#include "UserInterface.h" + +namespace Isis{ + extern void pds2isis(UserInterface &ui, Pvl *log); +} + +#endif diff --git a/isis/src/base/apps/pds2isis/tsts/Makefile b/isis/src/base/apps/pds2isis/tsts/Makefile deleted file mode 100644 index 46d84c74c2..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -BLANKS = "%-6s" -LENGTH = "%-40s" - -include $(ISISROOT)/make/isismake.tststree diff --git a/isis/src/base/apps/pds2isis/tsts/bandbin/Makefile b/isis/src/base/apps/pds2isis/tsts/bandbin/Makefile deleted file mode 100644 index e978b5b36d..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/bandbin/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -APPNAME = pds2isis - - -include $(ISISROOT)/make/isismake.tsts - -# Test translation of PDS BAND_BIN group with BAND_BIN prefixed keywords. -commands: - $(APPNAME) from=$(INPUT)/gaspra_nims_hires_radiance.lbl \ - to=$(OUTPUT)/gaspra_nims_hires_radiance.cub > /dev/null; \ - catlab from=$(OUTPUT)/gaspra_nims_hires_radiance.cub \ - to=$(OUTPUT)/gaspra_nims_hires_radiance.pvl > /dev/null; diff --git a/isis/src/base/apps/pds2isis/tsts/default/Makefile b/isis/src/base/apps/pds2isis/tsts/default/Makefile deleted file mode 100644 index db8e6fa4b1..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/default/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -APPNAME = pds2isis - -labels.txt.IGNORELINES = Bytes StartByte ByteOrder TileSamples TileLines - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/ab102401.img \ - to=$(OUTPUT)/pds2isisTruth.cub > /dev/null; - catlab from=$(OUTPUT)/pds2isisTruth.cub to=$(OUTPUT)/pds2isisTruth.pvl > /dev/null; diff --git a/isis/src/base/apps/pds2isis/tsts/offsetTest/Makefile b/isis/src/base/apps/pds2isis/tsts/offsetTest/Makefile deleted file mode 100644 index ed1e3e7f00..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/offsetTest/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -APPNAME = pds2isis - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/ldem_4.lbl \ - to=$(OUTPUT)/ldem_4.cub > /dev/null; - catlab from=$(OUTPUT)/ldem_4.cub to=$(OUTPUT)/ldem_4truth.pvl > /dev/null; - diff --git a/isis/src/base/apps/pds2isis/tsts/projection/Makefile b/isis/src/base/apps/pds2isis/tsts/projection/Makefile deleted file mode 100644 index fd71b1d7f8..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/projection/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -APPNAME = pds2isis - -labels.txt.IGNORELINES = Bytes StartByte ByteOrder TileSamples TileLines - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/ff17.lbl \ - to=$(OUTPUT)/ff17Truth.cub \ - | $(SED) 's+.*% Processed.*#+#+' \ - | grep -v "Processed" \ - | grep -v "Working" \ - | grep -v "Importing" \ - >& $(OUTPUT)/print.txt; - catlab from=$(OUTPUT)/ff17Truth.cub to=$(OUTPUT)/ff17Truth.pvl > /dev/null; diff --git a/isis/src/base/apps/pds2isis/tsts/specialPixels/Makefile b/isis/src/base/apps/pds2isis/tsts/specialPixels/Makefile deleted file mode 100644 index ee86ab1978..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/specialPixels/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -APPNAME = pds2isis - -labels.txt.IGNORELINES = Bytes StartByte ByteOrder TileSamples TileLines - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/ab102401.img \ - to=$(OUTPUT)/pds2isisTruth.cub+32bit \ - setnullrange=yes nullmin=15.0 nullmax=45.0 \ - sethrsrange=yes hrsmin=220.0 hrsmax=250.0 \ - sethisrange=yes hismin=190.0 hismax=219.0 \ - setlrsrange=yes lrsmin=96.0 lrsmax=125.0 \ - setlisrange=yes lismin=65.0 lismax=95.0 \ - > /dev/null; - catlab from=$(OUTPUT)/pds2isisTruth.cub to=$(OUTPUT)/pds2isisTruth.pvl > /dev/null; diff --git a/isis/src/base/apps/pds2isis/tsts/testBIL/Makefile b/isis/src/base/apps/pds2isis/tsts/testBIL/Makefile deleted file mode 100644 index 9299c05af0..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/testBIL/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -APPNAME = pds2isis - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/BILtestData.LBL \ - to=$(OUTPUT)/testBILtruth.cub+32bit > /dev/null; - catlab from=$(OUTPUT)/testBILtruth.cub to=$(OUTPUT)/testBILtruth.pvl > /dev/null; - diff --git a/isis/src/base/apps/pds2isis/tsts/testBIP/Makefile b/isis/src/base/apps/pds2isis/tsts/testBIP/Makefile deleted file mode 100644 index bcf0f803a2..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/testBIP/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -APPNAME = pds2isis - -include $(ISISROOT)/make/isismake.tsts - -# The output of this test will not look like a usable image -# because the band storage type was changed from BIL to BIP -# for this test. - -commands: - $(APPNAME) from=$(INPUT)/BIPtestData.LBL \ - to=$(OUTPUT)/testBIPtruth.cub+32bit > /dev/null; - catlab from=$(OUTPUT)/testBIPtruth.cub to=$(OUTPUT)/testBIPtruth.pvl > /dev/null; diff --git a/isis/src/base/apps/pds2isis/tsts/testNIMSQub/Makefile b/isis/src/base/apps/pds2isis/tsts/testNIMSQub/Makefile deleted file mode 100644 index ee35d052b6..0000000000 --- a/isis/src/base/apps/pds2isis/tsts/testNIMSQub/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -APPNAME = pds2isis - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/30i001ci.qub \ - to=$(OUTPUT)/30i001ci.cub > /dev/null; - catlab from=$(OUTPUT)/30i001ci.cub to=$(OUTPUT)/30i001ci.pvl > /dev/null; diff --git a/isis/src/base/apps/ringsautomos/main.cpp b/isis/src/base/apps/ringsautomos/main.cpp index 5af7a38d8b..f4cf98a52c 100644 --- a/isis/src/base/apps/ringsautomos/main.cpp +++ b/isis/src/base/apps/ringsautomos/main.cpp @@ -1,18 +1,20 @@ #define GUIHELPERS - #include "Isis.h" -#include "ProcessMapMosaic.h" + +#include "Application.h" #include "FileList.h" #include "IException.h" #include "SpecialPixel.h" #include "RingPlaneProjection.h" #include "ProjectionFactory.h" -using namespace std; +#include "ringsautomos.h" // replace with your new header + using namespace Isis; +using namespace std; -void calcRange(double &minRingRad, double &maxRingRad, double &minRingLon, double &maxRingLon); void helperButtonCalcRange(); +void calcRange(double &minRingRad, double &maxRingRad, double &minRingLon, double &maxRingLon); map GuiHelpers() { map helper; @@ -21,104 +23,51 @@ map GuiHelpers() { } void IsisMain() { - FileList list; UserInterface &ui = Application::GetUserInterface(); + Pvl appLog; - // Get the list of cubes to mosaic - list.read(FileName(ui.GetFileName("FROMLIST"))); - // Redundant test. Already checked in FileList - // if(list.size() < 1) { - // QString msg = "The list file [" + ui.GetFileName("FROMLIST") +"does not contain any data"; - // throw IException(IException::User, msg, _FILEINFO_); - // } - - fstream os; - bool olistFlag = false; - if (ui.WasEntered("TOLIST")){ - QString olist = ui.GetFileName("TOLIST"); - olistFlag = true; - os.open(olist.toLatin1().data(), std::ios::out); + try { + ringsautomos(ui, &appLog); } - - ProcessMapMosaic m; - - // Set the create flag-mosaic is always created in ringsautomos - m.SetCreateFlag(true); - - // Get the Track Flag - bool bTrack = ui.GetBoolean("TRACK"); - m.SetTrackFlag(bTrack); - - ProcessMosaic::ImageOverlay overlay = ProcessMosaic::StringToOverlay( - ui.GetString("PRIORITY")); - - if (overlay == ProcessMapMosaic::UseBandPlacementCriteria) { - if(ui.GetString("TYPE") == "BANDNUMBER") { - m.SetBandNumber(ui.GetInteger("NUMBER")); - } - else { - // Key name & value - m.SetBandKeyword(ui.GetString("KEYNAME"), ui.GetString("KEYVALUE")); + catch (...) { + for (auto grpIt = appLog.beginGroup(); grpIt!= appLog.endGroup(); grpIt++) { + Application::Log(*grpIt); } - // Band Criteria - m.SetBandUseMaxValue( (ui.GetString("CRITERIA") == "GREATER") ); + throw; } - - // Priority - m.SetImageOverlay(overlay); - - CubeAttributeOutput &oAtt = ui.GetOutputAttribute("MOSAIC"); - if(ui.GetString("GRANGE") == "USER") { - m.RingsSetOutputCube(list, - ui.GetDouble("MINRINGRAD"), ui.GetDouble("MAXRINGRAD"), - ui.GetDouble("MINRINGLON"), ui.GetDouble("MAXRINGLON"), - oAtt, ui.GetFileName("MOSAIC")); + + for (auto grpIt = appLog.beginGroup(); grpIt!= appLog.endGroup(); grpIt++) { + Application::Log(*grpIt); } - else { - m.RingsSetOutputCube(list, oAtt, ui.GetFileName("MOSAIC")); - } - - m.SetHighSaturationFlag(ui.GetBoolean("HIGHSATURATION")); - m.SetLowSaturationFlag(ui.GetBoolean("LOWSATURATION")); - m.SetNullFlag(ui.GetBoolean("NULL")); - - // Loop for each input file and place it in the output mosaic - - m.SetBandBinMatch(ui.GetBoolean("MATCHBANDBIN")); +} - // Get the MatchDEM Flag - m.SetMatchDEM(ui.GetBoolean("MATCHDEM")); - bool mosaicCreated = false; - for (int i = 0; i < list.size(); i++) { - if (!m.StartProcess(list[i].toString())) { - PvlGroup outsiders("Outside"); - outsiders += PvlKeyword("File", list[i].toString()); - Application::Log(outsiders); - } - else { - mosaicCreated = true; - if(olistFlag) { - os << list[i].toString() << endl; - } - } - if(mosaicCreated) { - // Mosaic is already created, use the existing mosaic - m.SetCreateFlag(false); - } - } - // Logs the input file location in the mosaic - for (int i = 0; i < m.imagePositions().groups(); i++) { - Application::Log(m.imagePositions().group(i)); - } +// Helper function to run calcRange function. +void helperButtonCalcRange() { + UserInterface &ui = Application::GetUserInterface(); + double minRingRad; + double maxRingRad; + double minRingLon; + double maxRingLon; - if(olistFlag) { - os.close(); - } + // Run the function calcRange of calculate range info + calcRange(minRingRad, maxRingRad, minRingLon, maxRingLon); - m.EndProcess(); + // Write ranges to the GUI + QString use = "USER"; + ui.Clear("GRANGE"); + ui.PutAsString("GRANGE", use); + ui.Clear("MINRINGRAD"); + ui.PutDouble("MINRINGRAD", minRingRad); + ui.Clear("MAXRINGRAD"); + ui.PutDouble("MAXRINGRAD", maxRingRad); + ui.Clear("MINRINGLON"); + ui.PutDouble("MINRINGLON", minRingLon); + ui.Clear("MAXRINGLON"); + ui.PutDouble("MAXRINGLON", maxRingLon); } + // Function to calculate the ground range from multiple inputs (list of images) void calcRange(double &minRingRad, double &maxRingRad, double &minRingLon, double &maxRingLon) { UserInterface &ui = Application::GetUserInterface(); @@ -162,29 +111,4 @@ void calcRange(double &minRingRad, double &maxRingRad, double &minRingLon, doubl if(proj != firstProj) delete proj; } -} - -// Helper function to run calcRange function. -void helperButtonCalcRange() { - UserInterface &ui = Application::GetUserInterface(); - double minRingRad; - double maxRingRad; - double minRingLon; - double maxRingLon; - - // Run the function calcRange of calculate range info - calcRange(minRingRad, maxRingRad, minRingLon, maxRingLon); - - // Write ranges to the GUI - QString use = "USER"; - ui.Clear("GRANGE"); - ui.PutAsString("GRANGE", use); - ui.Clear("MINRINGRAD"); - ui.PutDouble("MINRINGRAD", minRingRad); - ui.Clear("MAXRINGRAD"); - ui.PutDouble("MAXRINGRAD", maxRingRad); - ui.Clear("MINRINGLON"); - ui.PutDouble("MINRINGLON", minRingLon); - ui.Clear("MAXRINGLON"); - ui.PutDouble("MAXRINGLON", maxRingLon); -} +} \ No newline at end of file diff --git a/isis/src/base/apps/ringsautomos/ringsautomos.cpp b/isis/src/base/apps/ringsautomos/ringsautomos.cpp new file mode 100644 index 0000000000..411e42c37a --- /dev/null +++ b/isis/src/base/apps/ringsautomos/ringsautomos.cpp @@ -0,0 +1,111 @@ +#include "ProcessMapMosaic.h" +#include "FileList.h" +#include "IException.h" +#include "SpecialPixel.h" +#include "RingPlaneProjection.h" +#include "ProjectionFactory.h" + +#include "ringsautomos.h" + +using namespace std; + +namespace Isis { + + void ringsautomos(UserInterface &ui, Pvl *log){ + FileList list; + + // Get the list of cubes to mosaic + list.read(FileName(ui.GetFileName("FROMLIST"))); + + fstream os; + bool olistFlag = false; + if (ui.WasEntered("TOLIST")){ + QString olist = ui.GetFileName("TOLIST"); + olistFlag = true; + os.open(olist.toLatin1().data(), std::ios::out); + } + + ProcessMapMosaic m; + + // Set the create flag-mosaic is always created in ringsautomos + m.SetCreateFlag(true); + + // Get the Track Flag + bool bTrack = ui.GetBoolean("TRACK"); + m.SetTrackFlag(bTrack); + + ProcessMosaic::ImageOverlay overlay = ProcessMosaic::StringToOverlay( + ui.GetString("PRIORITY")); + + if (overlay == ProcessMosaic::UseBandPlacementCriteria) { + if(ui.GetString("TYPE") == "BANDNUMBER") { + m.SetBandNumber(ui.GetInteger("NUMBER")); + } + else { + // Key name & value + m.SetBandKeyword(ui.GetString("KEYNAME"), ui.GetString("KEYVALUE")); + } + // Band Criteria + m.SetBandUseMaxValue( (ui.GetString("CRITERIA") == "GREATER") ); + } + + // Priority + m.SetImageOverlay(overlay); + + CubeAttributeOutput &oAtt = ui.GetOutputAttribute("MOSAIC"); + if(ui.GetString("GRANGE") == "USER") { + m.RingsSetOutputCube(list, + ui.GetDouble("MINRINGRAD"), ui.GetDouble("MAXRINGRAD"), + ui.GetDouble("MINRINGLON"), ui.GetDouble("MAXRINGLON"), + oAtt, ui.GetFileName("MOSAIC")); + } + else { + m.RingsSetOutputCube(list, oAtt, ui.GetFileName("MOSAIC")); + } + + m.SetHighSaturationFlag(ui.GetBoolean("HIGHSATURATION")); + m.SetLowSaturationFlag(ui.GetBoolean("LOWSATURATION")); + m.SetNullFlag(ui.GetBoolean("NULL")); + + // Loop for each input file and place it in the output mosaic + + m.SetBandBinMatch(ui.GetBoolean("MATCHBANDBIN")); + + // Get the MatchDEM Flag + m.SetMatchDEM(ui.GetBoolean("MATCHDEM")); + + bool mosaicCreated = false; + for (int i = 0; i < list.size(); i++) { + if (!m.StartProcess(list[i].toString())) { + PvlGroup outsiders("Outside"); + outsiders += PvlKeyword("File", list[i].toString()); + if(log) { + log->addGroup(outsiders); + } + } + else { + mosaicCreated = true; + if(olistFlag) { + os << list[i].toString() << endl; + } + } + if(mosaicCreated) { + // Mosaic is already created, use the existing mosaic + m.SetCreateFlag(false); + } + } + // Logs the input file location in the mosaic + for (int i = 0; i < m.imagePositions().groups(); i++) { + if(log) { + log->addGroup(m.imagePositions().group(i)); + } + } + + if(olistFlag) { + os.close(); + } + + m.EndProcess(); + } +} + \ No newline at end of file diff --git a/isis/src/base/apps/ringsautomos/ringsautomos.h b/isis/src/base/apps/ringsautomos/ringsautomos.h new file mode 100644 index 0000000000..d18f8e4981 --- /dev/null +++ b/isis/src/base/apps/ringsautomos/ringsautomos.h @@ -0,0 +1,10 @@ +#ifndef ringsautomos_h +#define ringsautomos_h + +#include "UserInterface.h" + +namespace Isis{ + extern void ringsautomos(UserInterface &ui, Pvl *log=nullptr); +} + +#endif \ No newline at end of file diff --git a/isis/src/base/apps/ringsautomos/tsts/Makefile b/isis/src/base/apps/ringsautomos/tsts/Makefile deleted file mode 100644 index 46d84c74c2..0000000000 --- a/isis/src/base/apps/ringsautomos/tsts/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -BLANKS = "%-6s" -LENGTH = "%-40s" - -include $(ISISROOT)/make/isismake.tststree diff --git a/isis/src/base/apps/ringsautomos/tsts/combination1/Makefile b/isis/src/base/apps/ringsautomos/tsts/combination1/Makefile deleted file mode 100644 index 874e48750a..0000000000 --- a/isis/src/base/apps/ringsautomos/tsts/combination1/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# This case tests the following combination of parameters for ringsautomos -# -# tolist is given -# priority=beneath -# groundrange=user minringlon=0 maxringlon=100 minringrad=8000000 maxringrad=100000000 -# track=true -# matchbandbin=false -# matchdem=true -# -APPNAME = ringsautomos - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.projected.cub > $(OUTPUT)/fromlist.lis; - $(APPNAME) from=$(OUTPUT)/fromlist.lis \ - mosaic=$(OUTPUT)/wacMosaic.cub \ - tolist=$(OUTPUT)/tolist.txt \ - priority=beneath \ - grange=user \ - minringlon= 0 \ - maxringlon= 100 \ - minringrad= 8000000 \ - maxringrad= 100000000 \ - track=true \ - matchbandbin=false \ - matchdem=true \ - > /dev/null; - catlab from=$(OUTPUT)/wacMosaic.cub \ - to=$(OUTPUT)/wacMosaic.pvl > /dev/null; - $(SED) 's+/.*input/+input/+' $(OUTPUT)/tolist.txt > $(OUTPUT)/tolist_mod.txt - $(RM) $(OUTPUT)/fromlist.lis; - $(RM) $(OUTPUT)/tolist.txt; diff --git a/isis/src/base/apps/ringsautomos/tsts/combination2/Makefile b/isis/src/base/apps/ringsautomos/tsts/combination2/Makefile deleted file mode 100644 index 4e38ebacbe..0000000000 --- a/isis/src/base/apps/ringsautomos/tsts/combination2/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# This case tests the following combination of parameters for ringsautomos -# -# priority=average -# hisat=true -# losat=true -# null=true -# -APPNAME = ringsautomos - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.projected.cub > $(OUTPUT)/fromlist.lis; - $(APPNAME) from=$(OUTPUT)/fromlist.lis \ - mosaic=$(OUTPUT)/wacMosaic.cub \ - priority=average \ - highsat=true \ - lowsat=true \ - null=true \ - > /dev/null; - catlab from=$(OUTPUT)/wacMosaic.cub \ - to=$(OUTPUT)/wacMosaic.pvl > /dev/null; - $(RM) $(OUTPUT)/fromlist.lis; diff --git a/isis/src/base/apps/ringsautomos/tsts/combination3/Makefile b/isis/src/base/apps/ringsautomos/tsts/combination3/Makefile deleted file mode 100644 index 40d502fb20..0000000000 --- a/isis/src/base/apps/ringsautomos/tsts/combination3/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# This case tests the following combination of parameters for ringsautomos -# -# priority=band -# type=bandnumber -# number=1 -# criteria=lesser -# -APPNAME = ringsautomos - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.projected.cub > $(OUTPUT)/fromlist.lis; - $(APPNAME) from=$(OUTPUT)/fromlist.lis \ - mosaic=$(OUTPUT)/wacMosaic.cub \ - priority=band \ - type=bandnumber \ - number=1 \ - criteria=lesser \ - > /dev/null; - catlab from=$(OUTPUT)/wacMosaic.cub \ - to=$(OUTPUT)/wacMosaic.pvl > /dev/null; - $(RM) $(OUTPUT)/fromlist.lis; diff --git a/isis/src/base/apps/ringsautomos/tsts/combination4/Makefile b/isis/src/base/apps/ringsautomos/tsts/combination4/Makefile deleted file mode 100644 index 5ec5b76cbe..0000000000 --- a/isis/src/base/apps/ringsautomos/tsts/combination4/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -# This case tests the following combination of parameters for ringsautomos -# -# priority=band -# type=keyword -# keywordname= -# keywordvalue= -# criteria=greater -# -APPNAME = ringsautomos - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.projected.cub > $(OUTPUT)/fromlist.lis; - $(APPNAME) from=$(OUTPUT)/fromlist.lis \ - mosaic=$(OUTPUT)/vimsIrMosaic.cub \ - priority=band \ - type=keyword \ - keyname=OriginalBand \ - keyvalue=98 \ - criteria=greater \ - > /dev/null; - catlab from=$(OUTPUT)/vimsIrMosaic.cub \ - to=$(OUTPUT)/vimsIrMosaic.pvl > /dev/null; - $(RM) $(OUTPUT)/fromlist.lis; diff --git a/isis/src/base/apps/ringsautomos/tsts/default/Makefile b/isis/src/base/apps/ringsautomos/tsts/default/Makefile deleted file mode 100644 index 6ea8ba2be0..0000000000 --- a/isis/src/base/apps/ringsautomos/tsts/default/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# This case tests the following default parameters for ringsautomos -# -# tolist=None -# priority=ontop -# groundrange=auto -# track=false -# matchbandbin=true -# matchdem=false -# highsat=false -# lowsat=false -# null=false -# -APPNAME = ringsautomos - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) $(INPUT)/*.projected.cub > $(OUTPUT)/fromlist.lis; - $(APPNAME) from=$(OUTPUT)/fromlist.lis \ - mosaic=$(OUTPUT)/wacMosaic.cub > /dev/null; - catlab from=$(OUTPUT)/wacMosaic.cub \ - to=$(OUTPUT)/wacMosaic.pvl > /dev/null; - $(RM) $(OUTPUT)/fromlist.lis; diff --git a/isis/src/lro/apps/lronac2isis/lronac2isis.cpp b/isis/src/lro/apps/lronac2isis/lronac2isis.cpp new file mode 100644 index 0000000000..ac9e79fc1c --- /dev/null +++ b/isis/src/lro/apps/lronac2isis/lronac2isis.cpp @@ -0,0 +1,236 @@ +#include "ProcessImportPds.h" +#include "UserInterface.h" +#include "FileName.h" +#include "IException.h" +#include "IString.h" +#include "Pvl.h" +#include "OriginalLabel.h" +#include "History.h" +#include "LineManager.h" +#include "Application.h" + +#include + +#include "lronac2isis.h" + +#define MAX_INPUT_VALUE 4095 + +using namespace std; + +namespace Isis { + + static void ResetGlobals(); + static void Import(Buffer &buf); + static void TranslateLrocNacLabels(FileName &labelFile, Cube *ocube); + + // Global variables for processing functions + Cube *g_ocube; + std::vector< double> g_xterm, g_bterm, g_mterm; + bool g_flip = false; + + void lronac2isis(UserInterface &ui) { + // Initialize variables + ResetGlobals(); + //Check that the file comes from the right camera + FileName inFile = ui.GetFileName("FROM"); + QString id; + try { + Pvl lab(inFile.expanded()); + if(lab.hasKeyword("DATA_SET_ID")) + id = (QString) lab.findKeyword("DATA_SET_ID"); + else { + QString msg = "Unable to read [DATA_SET_ID] from input file [" + inFile.expanded() + "]"; + throw IException(IException::Unknown, msg, _FILEINFO_); + } + //Checks if in file is rdr + bool projected = lab.hasObject("IMAGE_MAP_PROJECTION"); + if(projected) { + QString msg = "[" + inFile.name() + "] appears to be an rdr file."; + msg += " Use pds2isis."; + throw IException(IException::User, msg, _FILEINFO_); + } + + // Store the decompanding information + PvlKeyword xtermKeyword = lab.findKeyword("LRO:XTERM"), + mtermKeyword = lab.findKeyword("LRO:MTERM"), + btermKeyword = lab.findKeyword("LRO:BTERM"); + + if(mtermKeyword.size() != xtermKeyword.size() || btermKeyword.size() != xtermKeyword.size()) { + QString msg = "The decompanding terms do not have the same dimensions"; + throw IException(IException::Io, msg, _FILEINFO_); + } + + for(int i = 0; i < xtermKeyword.size(); i++) { + g_xterm.push_back(toDouble(xtermKeyword[i])); + g_mterm.push_back(toDouble(mtermKeyword[i])); + g_bterm.push_back(toDouble(btermKeyword[i])); + } + + double versionId = toDouble(lab.findKeyword("PRODUCT_VERSION_ID")[0].remove(QRegExp("^v"))); + if(lab.findKeyword("FRAME_ID")[0] == "RIGHT" && versionId < 1.30) + g_flip = true; + else + g_flip = false; + } + catch(IException &e) { + QString msg = "The PDS header is missing important keyword(s)."; + IException finalException(IException::Io, msg, _FILEINFO_); + finalException.append(e); + throw finalException; + } + + id = id.simplified().trimmed(); + if(id.mid(13, 3) != "EDR") { + QString msg = "Input file [" + inFile.expanded() + "] does not appear to be " + + "in LROC-NAC EDR format. DATA_SET_ID is [" + id + "]"; + throw IException(IException::Io, msg, _FILEINFO_); + } + + //Process the file + Pvl pdsLab; + ProcessImportPds p; + p.SetPdsFile(inFile.expanded(), "", pdsLab); + // Set the output bit type to Real + CubeAttributeOutput &outAtt = ui.GetOutputAttribute("TO"); + + g_ocube = new Cube(); + g_ocube->setByteOrder(outAtt.byteOrder()); + g_ocube->setFormat(outAtt.fileFormat()); + g_ocube->setMinMax((double) VALID_MIN2, (double) VALID_MAX2); + g_ocube->setLabelsAttached(outAtt.labelAttachment() == AttachedLabel); + g_ocube->setDimensions(p.Samples(), p.Lines(), p.Bands()); + g_ocube->setPixelType(Isis::Real); + g_ocube->create(ui.GetFileName("TO")); + // Do 8 bit to 12 bit conversion + // And if NAC-R, flip the frame + p.StartProcess(Import); + + // Then translate the labels + TranslateLrocNacLabels(inFile, g_ocube); + p.EndProcess(); + + // Add History + if (iApp) { + History history("IsisCube"); + history.AddEntry(); + g_ocube->write(history); + } + + // Add original label + OriginalLabel origLabel(pdsLab); + g_ocube->write(origLabel); + g_ocube->close(); + delete g_ocube; + } + + // The input buffer has a raw 16 bit buffer but the values are still 0 to 255. + // See "Appendix B - NAC and WAC Companding Schemes" of the LROC_SOC_SPEC + // document for reference. + void Import(Buffer &in) { + LineManager outLines(*g_ocube); + outLines.SetLine(in.Line(), in.Band()); + Buffer buf(in.SampleDimension(), in.LineDimension(), in.BandDimension(), + g_ocube->pixelType()); + + // Do the decompanding + for(int pixin = 0; pixin < in.size(); pixin++) { + + // if pixin < xtermo0, then it is in "segment 0" + if(in[pixin] < g_xterm[0]) + buf[pixin] = (int) in[pixin]; + + // otherwise, it is in segments 1 to 5 + else { + unsigned int segment = 1; + while(segment < g_xterm.size() && (in[pixin] - g_bterm[segment - 1]) / g_mterm[segment - 1] >= g_xterm[segment]) + segment++; + + // Compute the upper and lower bin values + double upper = (in[pixin] + 1 - g_bterm[segment - 1]) / g_mterm[segment - 1] - 1; + double lower = (in[pixin] - g_bterm[segment - 1]) / g_mterm[segment - 1]; + + // Check if the bin is on the upper boundary of the last segment + if(upper > MAX_INPUT_VALUE) + upper = MAX_INPUT_VALUE; + else if(segment < g_xterm.size() && upper >= g_xterm[segment]) { + if((int)(g_bterm[segment] + g_mterm[segment]*upper) != in[pixin]) + upper = g_xterm[segment] - 1; + } + + // Check if it is on the lower boundary of a segment + if(lower < g_xterm[segment-1]) + lower = g_xterm[segment-1]; + + // Output the middle bin value + buf[pixin] = (upper + lower) / 2.0; + + } + } + + // flip the NAC-R frame + if(g_flip) { + Buffer tmpbuf(buf); + for(int i = 0; i < buf.size(); i++) + buf[i] = tmpbuf[buf.size() - i - 1]; + } + outLines.Copy(buf); + g_ocube->write(outLines); + } + + //Function to translate the labels + void TranslateLrocNacLabels(FileName &labelFile, Cube *ocube) { + + //Pvl to store the labels + Pvl outLabel; + //Set up the directory where the translations are + Pvl labelPvl(labelFile.expanded()); + + //Translate the Instrument group + FileName transFile("$ISISROOT/appdata/translations/LroNacInstrument.trn"); + PvlToPvlTranslationManager instrumentXlator(labelPvl, transFile.expanded()); + instrumentXlator.Auto(outLabel); + + //Translate the Archive group + transFile = "$ISISROOT/appdata/translations/LroNacArchive.trn"; + PvlToPvlTranslationManager archiveXlater(labelPvl, transFile.expanded()); + archiveXlater.Auto(outLabel); + + //Translate the BandBin group + transFile = "$ISISROOT/appdata/translations/LroNacBandBin.trn"; + PvlToPvlTranslationManager bandBinXlater(labelPvl, transFile.expanded()); + bandBinXlater.Auto(outLabel); + + Pvl lab(labelFile.expanded()); + + //Set up the Kernels group + PvlGroup kern("Kernels"); + if(lab.findKeyword("FRAME_ID")[0] == "LEFT") + kern += PvlKeyword("NaifFrameCode", "-85600"); + else + kern += PvlKeyword("NaifFrameCode", "-85610"); + + PvlGroup inst = outLabel.findGroup("Instrument", Pvl::Traverse); + if(lab.findKeyword("FRAME_ID")[0] == "LEFT") { + inst.findKeyword("InstrumentId") = "NACL"; + inst.findKeyword("InstrumentName") = "LUNAR RECONNAISSANCE ORBITER NARROW ANGLE CAMERA LEFT"; + } + else { + inst.findKeyword("InstrumentId") = "NACR"; + inst.findKeyword("InstrumentName") = "LUNAR RECONNAISSANCE ORBITER NARROW ANGLE CAMERA RIGHT"; + } + + //Add all groups to the output cube + ocube->putGroup(inst); + ocube->putGroup(outLabel.findGroup("Archive", Pvl::Traverse)); + ocube->putGroup(outLabel.findGroup("BandBin", Pvl::Traverse)); + ocube->putGroup(kern); + } + + void ResetGlobals() { + g_ocube = NULL; + g_xterm.clear(); + g_mterm.clear(); + g_bterm.clear(); + g_flip = false; + } +} diff --git a/isis/src/lro/apps/lronac2isis/lronac2isis.h b/isis/src/lro/apps/lronac2isis/lronac2isis.h new file mode 100644 index 0000000000..947423c1d9 --- /dev/null +++ b/isis/src/lro/apps/lronac2isis/lronac2isis.h @@ -0,0 +1,12 @@ +#ifndef lronac2isis_h // Change this to your app name in all lower case suffixed with _h (e.g. campt_h, cam2map_h etc.) +#define lronac2isis_h + +#include "Cube.h" +#include "UserInterface.h" + +namespace Isis{ + extern void lronac2isis(Cube *cube, UserInterface &ui); + extern void lronac2isis(UserInterface &ui); +} + +#endif \ No newline at end of file diff --git a/isis/src/lro/apps/lronac2isis/main.cpp b/isis/src/lro/apps/lronac2isis/main.cpp index 65b4b1300e..b361350667 100644 --- a/isis/src/lro/apps/lronac2isis/main.cpp +++ b/isis/src/lro/apps/lronac2isis/main.cpp @@ -1,237 +1,11 @@ #include "Isis.h" -#include "ProcessImportPds.h" -#include "UserInterface.h" -#include "FileName.h" -#include "IException.h" -#include "IString.h" -#include "Pvl.h" -#include "OriginalLabel.h" -#include "History.h" -#include "LineManager.h" -#include -#define MAX_INPUT_VALUE 4095 +#include "Application.h" +#include "lronac2isis.h" -using namespace std; using namespace Isis; -void ResetGlobals(); -void Import(Buffer &buf); -void TranslateLrocNacLabels(FileName &labelFile, Cube *ocube); - -// Global variables for processing functions -Cube *g_ocube; -std::vector< double> g_xterm, g_bterm, g_mterm; -bool g_flip = false; - void IsisMain() { - // Initialize variables - ResetGlobals(); - - //Check that the file comes from the right camera UserInterface &ui = Application::GetUserInterface(); - FileName inFile = ui.GetFileName("FROM"); - QString id; - try { - Pvl lab(inFile.expanded()); - - if(lab.hasKeyword("DATA_SET_ID")) - id = (QString) lab.findKeyword("DATA_SET_ID"); - else { - QString msg = "Unable to read [DATA_SET_ID] from input file [" + inFile.expanded() + "]"; - throw IException(IException::Unknown, msg, _FILEINFO_); - } - - //Checks if in file is rdr - bool projected = lab.hasObject("IMAGE_MAP_PROJECTION"); - if(projected) { - QString msg = "[" + inFile.name() + "] appears to be an rdr file."; - msg += " Use pds2isis."; - throw IException(IException::User, msg, _FILEINFO_); - } - - // Store the decompanding information - PvlKeyword xtermKeyword = lab.findKeyword("LRO:XTERM"), - mtermKeyword = lab.findKeyword("LRO:MTERM"), - btermKeyword = lab.findKeyword("LRO:BTERM"); - - if(mtermKeyword.size() != xtermKeyword.size() || btermKeyword.size() != xtermKeyword.size()) { - QString msg = "The decompanding terms do not have the same dimensions"; - throw IException(IException::Io, msg, _FILEINFO_); - } - - for(int i = 0; i < xtermKeyword.size(); i++) { - g_xterm.push_back(toDouble(xtermKeyword[i])); - g_mterm.push_back(toDouble(mtermKeyword[i])); - g_bterm.push_back(toDouble(btermKeyword[i])); - } - - double versionId = toDouble(lab.findKeyword("PRODUCT_VERSION_ID")[0].remove(QRegExp("^v"))); - - if(lab.findKeyword("FRAME_ID")[0] == "RIGHT" && versionId < 1.30) - g_flip = true; - else - g_flip = false; - } - catch(IException &e) { - QString msg = "The PDS header is missing important keyword(s)."; - IException finalException(IException::Io, msg, _FILEINFO_); - finalException.append(e); - throw finalException; - } - - id = id.simplified().trimmed(); - if(id.mid(13, 3) != "EDR") { - QString msg = "Input file [" + inFile.expanded() + "] does not appear to be " - + "in LROC-NAC EDR format. DATA_SET_ID is [" + id + "]"; - throw IException(IException::Io, msg, _FILEINFO_); - } - - //Process the file - Pvl pdsLab; - ProcessImportPds p; - p.SetPdsFile(inFile.expanded(), "", pdsLab); - - // Set the output bit type to Real - CubeAttributeOutput &outAtt = ui.GetOutputAttribute("TO"); - - g_ocube = new Cube(); - g_ocube->setByteOrder(outAtt.byteOrder()); - g_ocube->setFormat(outAtt.fileFormat()); - g_ocube->setMinMax((double) VALID_MIN2, (double) VALID_MAX2); - g_ocube->setLabelsAttached(outAtt.labelAttachment() == AttachedLabel); - g_ocube->setDimensions(p.Samples(), p.Lines(), p.Bands()); - g_ocube->setPixelType(Isis::Real); - g_ocube->create(ui.GetFileName("TO")); - - // Do 8 bit to 12 bit conversion - // And if NAC-R, flip the frame - p.StartProcess(Import); - - // Then translate the labels - TranslateLrocNacLabels(inFile, g_ocube); - p.EndProcess(); - - // Add History - History history("IsisCube"); - history.AddEntry(); - g_ocube->write(history); - - // Add original label - OriginalLabel origLabel(pdsLab); - g_ocube->write(origLabel); - - g_ocube->close(); - delete g_ocube; -} - -// The input buffer has a raw 16 bit buffer but the values are still 0 to 255. -// See "Appendix B - NAC and WAC Companding Schemes" of the LROC_SOC_SPEC -// document for reference. -void Import(Buffer &in) { - LineManager outLines(*g_ocube); - outLines.SetLine(in.Line(), in.Band()); - Buffer buf(in.SampleDimension(), in.LineDimension(), in.BandDimension(), - g_ocube->pixelType()); - - // Do the decompanding - for(int pixin = 0; pixin < in.size(); pixin++) { - - // if pixin < xtermo0, then it is in "segment 0" - if(in[pixin] < g_xterm[0]) - buf[pixin] = (int) in[pixin]; - - // otherwise, it is in segments 1 to 5 - else { - unsigned int segment = 1; - while(segment < g_xterm.size() && (in[pixin] - g_bterm[segment - 1]) / g_mterm[segment - 1] >= g_xterm[segment]) - segment++; - - // Compute the upper and lower bin values - double upper = (in[pixin] + 1 - g_bterm[segment - 1]) / g_mterm[segment - 1] - 1; - double lower = (in[pixin] - g_bterm[segment - 1]) / g_mterm[segment - 1]; - - // Check if the bin is on the upper boundary of the last segment - if(upper > MAX_INPUT_VALUE) - upper = MAX_INPUT_VALUE; - else if(segment < g_xterm.size() && upper >= g_xterm[segment]) { - if((int)(g_bterm[segment] + g_mterm[segment]*upper) != in[pixin]) - upper = g_xterm[segment] - 1; - } - - // Check if it is on the lower boundary of a segment - if(lower < g_xterm[segment-1]) - lower = g_xterm[segment-1]; - - // Output the middle bin value - buf[pixin] = (upper + lower) / 2.0; - - } - } - - // flip the NAC-R frame - if(g_flip) { - Buffer tmpbuf(buf); - for(int i = 0; i < buf.size(); i++) - buf[i] = tmpbuf[buf.size() - i - 1]; - } - outLines.Copy(buf); - g_ocube->write(outLines); -} - -//Function to translate the labels -void TranslateLrocNacLabels(FileName &labelFile, Cube *ocube) { - - //Pvl to store the labels - Pvl outLabel; - //Set up the directory where the translations are - Pvl labelPvl(labelFile.expanded()); - - //Translate the Instrument group - FileName transFile("$ISISROOT/appdata/translations/LroNacInstrument.trn"); - PvlToPvlTranslationManager instrumentXlator(labelPvl, transFile.expanded()); - instrumentXlator.Auto(outLabel); - - //Translate the Archive group - transFile = "$ISISROOT/appdata/translations/LroNacArchive.trn"; - PvlToPvlTranslationManager archiveXlater(labelPvl, transFile.expanded()); - archiveXlater.Auto(outLabel); - - //Translate the BandBin group - transFile = "$ISISROOT/appdata/translations/LroNacBandBin.trn"; - PvlToPvlTranslationManager bandBinXlater(labelPvl, transFile.expanded()); - bandBinXlater.Auto(outLabel); - - Pvl lab(labelFile.expanded()); - - //Set up the Kernels group - PvlGroup kern("Kernels"); - if(lab.findKeyword("FRAME_ID")[0] == "LEFT") - kern += PvlKeyword("NaifFrameCode", "-85600"); - else - kern += PvlKeyword("NaifFrameCode", "-85610"); - - PvlGroup inst = outLabel.findGroup("Instrument", Pvl::Traverse); - if(lab.findKeyword("FRAME_ID")[0] == "LEFT") { - inst.findKeyword("InstrumentId") = "NACL"; - inst.findKeyword("InstrumentName") = "LUNAR RECONNAISSANCE ORBITER NARROW ANGLE CAMERA LEFT"; - } - else { - inst.findKeyword("InstrumentId") = "NACR"; - inst.findKeyword("InstrumentName") = "LUNAR RECONNAISSANCE ORBITER NARROW ANGLE CAMERA RIGHT"; - } - - //Add all groups to the output cube - ocube->putGroup(inst); - ocube->putGroup(outLabel.findGroup("Archive", Pvl::Traverse)); - ocube->putGroup(outLabel.findGroup("BandBin", Pvl::Traverse)); - ocube->putGroup(kern); -} - -void ResetGlobals() { - g_ocube = NULL; - g_xterm.clear(); - g_mterm.clear(); - g_bterm.clear(); - g_flip = false; -} + lronac2isis(ui); +} \ No newline at end of file diff --git a/isis/src/lro/apps/lronac2isis/tsts/Makefile b/isis/src/lro/apps/lronac2isis/tsts/Makefile deleted file mode 100644 index 46d84c74c2..0000000000 --- a/isis/src/lro/apps/lronac2isis/tsts/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -BLANKS = "%-6s" -LENGTH = "%-40s" - -include $(ISISROOT)/make/isismake.tststree diff --git a/isis/src/lro/apps/lronac2isis/tsts/nac-fail/Makefile b/isis/src/lro/apps/lronac2isis/tsts/nac-fail/Makefile deleted file mode 100644 index 4f1ed795ce..0000000000 --- a/isis/src/lro/apps/lronac2isis/tsts/nac-fail/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -APPNAME = lronac2isis -FILE=nacl00015d79Edit - -include $(ISISROOT)/make/isismake.tsts - -commands: -# TEST A: Check that lronac2isis is returning the correct error messages - if [ `$(APPNAME) from=$(INPUT)/$(FILE).img \ - to=$(OUTPUT)/$(FILE).cub > /dev/null \ - 2>> $(OUTPUT)/error_message_temp.txt > /dev/null` ]; \ - then true; \ - fi; \ No newline at end of file diff --git a/isis/src/lro/apps/lronac2isis/tsts/nacl-full/Makefile b/isis/src/lro/apps/lronac2isis/tsts/nacl-full/Makefile deleted file mode 100644 index ca180ea71f..0000000000 --- a/isis/src/lro/apps/lronac2isis/tsts/nacl-full/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -APPNAME = lronac2isis -FILE=nacl00015d79 - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/$(FILE).img \ - to=$(OUTPUT)/$(FILE).cub > /dev/null; - crop from=$(OUTPUT)/$(FILE).cub nlines=5 \ - to=$(OUTPUT)/$(FILE).small.cub > /dev/null; - catlab from=$(OUTPUT)/$(FILE).small.cub \ - to=$(OUTPUT)/$(FILE).small.pvl > /dev/null; - $(RM) $(OUTPUT)/$(FILE).cub; diff --git a/isis/src/lro/apps/lronac2isis/tsts/nacl-summed/Makefile b/isis/src/lro/apps/lronac2isis/tsts/nacl-summed/Makefile deleted file mode 100644 index bf334155ae..0000000000 --- a/isis/src/lro/apps/lronac2isis/tsts/nacl-summed/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -APPNAME = lronac2isis -FILE=nacl0002df94 - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/$(FILE).img \ - to=$(OUTPUT)/$(FILE).cub > /dev/null; - crop from=$(OUTPUT)/$(FILE).cub nlines=5 \ - to=$(OUTPUT)/$(FILE).small.cub > /dev/null; - catlab from=$(OUTPUT)/$(FILE).small.cub \ - to=$(OUTPUT)/$(FILE).small.pvl > /dev/null; - $(RM) $(OUTPUT)/$(FILE).cub; diff --git a/isis/src/lro/apps/lronac2isis/tsts/nacr-full/Makefile b/isis/src/lro/apps/lronac2isis/tsts/nacr-full/Makefile deleted file mode 100644 index 19fc44f30b..0000000000 --- a/isis/src/lro/apps/lronac2isis/tsts/nacr-full/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -APPNAME = lronac2isis -FILE=nacr00015d79 - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/$(FILE).img \ - to=$(OUTPUT)/$(FILE).cub > /dev/null; - crop from=$(OUTPUT)/$(FILE).cub nlines=5 \ - to=$(OUTPUT)/$(FILE).small.cub > /dev/null; - catlab from=$(OUTPUT)/$(FILE).small.cub \ - to=$(OUTPUT)/$(FILE).small.pvl > /dev/null; - $(RM) $(OUTPUT)/$(FILE).cub; diff --git a/isis/src/lro/apps/lronac2isis/tsts/nacr-summed/Makefile b/isis/src/lro/apps/lronac2isis/tsts/nacr-summed/Makefile deleted file mode 100644 index d672a3669b..0000000000 --- a/isis/src/lro/apps/lronac2isis/tsts/nacr-summed/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -APPNAME = lronac2isis -FILE=nacr0002df94 - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/$(FILE).img \ - to=$(OUTPUT)/$(FILE).cub > /dev/null; - crop from=$(OUTPUT)/$(FILE).cub nlines=5 \ - to=$(OUTPUT)/$(FILE).small.cub > /dev/null; - catlab from=$(OUTPUT)/$(FILE).small.cub \ - to=$(OUTPUT)/$(FILE).small.pvl > /dev/null; - $(RM) $(OUTPUT)/$(FILE).cub; diff --git a/isis/src/mro/apps/himos/himos.cpp b/isis/src/mro/apps/himos/himos.cpp new file mode 100644 index 0000000000..d327c457be --- /dev/null +++ b/isis/src/mro/apps/himos/himos.cpp @@ -0,0 +1,312 @@ +#include "himos.h" + +#include "Camera.h" +#include "Cube.h" +#include "FileList.h" +#include "IException.h" +#include "Pvl.h" +#include "IString.h" +#include "Longitude.h" +#include "OriginalLabel.h" +#include "Process.h" +#include "ProgramLauncher.h" +#include "TProjection.h" + +#include + +using namespace std; + +namespace Isis { + //functions in the code + static void CompareLabels(Pvl &match, Pvl &comp); + + + void himos(UserInterface &ui) { + + // Get the list of cubes to mosaic + FileList flist(ui.GetFileName("FROMLIST")); + + + vector clist; + try { + if(flist.size() < 1) { + QString msg = "the list file [" + ui.GetFileName("FROMLIST") + + "does not contain any data"; + throw IException(IException::User, msg, _FILEINFO_); + } + + // open all the cube and place in vector clist + for(int i = 0; i < flist.size(); i++) { + Cube *c = new Cube(); + clist.push_back(c); + c->open(flist[i].toString()); + } + + // run the compair function here. This will conpair the + // labels of the first cube to the labels of each following cube. + PvlKeyword sourceProductId("SourceProductId"); + QString ProdId; + for(int i = 0; i < (int)clist.size(); i++) { + Pvl *pmatch = clist[0]->label(); + Pvl *pcomp = clist[i]->label(); + CompareLabels(*pmatch, *pcomp); + PvlGroup g = pcomp->findGroup("Instrument", Pvl::Traverse); + if(g.hasKeyword("StitchedProductIds")) { + PvlKeyword k = g["StitchedProductIds"]; + for(int j = 0; j < (int)k.size(); j++) { + sourceProductId += g["stitchedProductIds"][j]; + } + } + ProdId = (QString)pmatch->findGroup("Archive", Pvl::Traverse)["ObservationId"]; + QString bandname = (QString)pmatch->findGroup("BandBin", Pvl::Traverse)["Name"]; + bandname = bandname.toUpper(); + ProdId = ProdId + "_" + bandname; + } + bool runXY = true; + + //calculate the min and max lon + double minLat = DBL_MAX; + double maxLat = -DBL_MAX; + double minLon = DBL_MAX; + double maxLon = -DBL_MAX; + double avgLat; + double avgLon; + for(int i = 0; i < (int)clist.size(); i++) { + TProjection *proj = (TProjection *) clist[i]->projection(); + if(proj->MinimumLatitude() < minLat) minLat = proj->MinimumLatitude(); + if(proj->MaximumLatitude() > maxLat) maxLat = proj->MaximumLatitude(); + if(proj->MinimumLongitude() < minLon) minLon = proj->MinimumLongitude(); + if(proj->MaximumLongitude() > maxLon) maxLon = proj->MaximumLongitude(); + } + avgLat = (minLat + maxLat) / 2; + avgLon = (minLon + maxLon) / 2; + TProjection *proj = (TProjection *) clist[0]->projection(); + proj->SetGround(avgLat, avgLon); + avgLat = proj->UniversalLatitude(); + avgLon = proj->UniversalLongitude(); + + // Use camera class to get Inc., emi., phase, and other values + double Cemiss; + double Cphase; + double Cincid; + double ClocalSolTime; + double CsolarLong; + double CsunAzimuth; + double CnorthAzimuth; + for(int i = 0; i < (int)clist.size(); i++) { + Camera *cam = clist[i]->camera(); + if(cam->SetUniversalGround(avgLat, avgLon)) { + Cemiss = cam->EmissionAngle(); + Cphase = cam->PhaseAngle(); + Cincid = cam->IncidenceAngle(); + ClocalSolTime = cam->LocalSolarTime(); + CsolarLong = cam->solarLongitude().degrees(); + CsunAzimuth = cam->SunAzimuth(); + CnorthAzimuth = cam->NorthAzimuth(); + runXY = false; + break; + } + } + + //The code within the if runXY was added in 10/07 to find an intersect with + //pole images that would fail when using projection set universal ground. + // This is run if no intersect is found when using lat and lon in + // projection space. + if(runXY) { + double startX = DBL_MAX; + double endX = DBL_MIN; + double startY = DBL_MAX; + double endY = DBL_MIN; + for(int i = 0; i < (int)clist.size(); i++) { + TProjection *proj = (TProjection *) clist[i]->projection(); + proj->SetWorld(0.5, 0.5); + if(i == 0) { + startX = proj->XCoord(); + endY = proj->YCoord(); + } + else { + if(proj->XCoord() < startX) startX = proj->XCoord(); + if(proj->YCoord() > endY) endY = proj->YCoord(); + } + Pvl *p = clist[i]->label(); + double nlines = p->findGroup("Dimensions", Pvl::Traverse)["Lines"]; + double nsamps = p->findGroup("Dimensions", Pvl::Traverse)["Samples"]; + + proj->SetWorld((nsamps + 0.5), (nlines + 0.5)); + if(i == 0) { + endX = proj->XCoord(); + startY = proj->YCoord(); + } + else { + if(proj->XCoord() > endX) endX = proj->XCoord(); + if(proj->YCoord() < startY) startY = proj->YCoord(); + } + } + + double avgX = (startX + endX) / 2; + double avgY = (startY + endY) / 2; + double sample = proj->ToWorldX(avgX); + double line = proj->ToWorldY(avgY); + + for(int i = 0; i < (int)clist.size(); i++) { + Camera *cam = clist[i]->camera(); + if(cam->SetImage(sample, line)) { + Cemiss = cam->EmissionAngle(); + Cphase = cam->PhaseAngle(); + Cincid = cam->IncidenceAngle(); + ClocalSolTime = cam->LocalSolarTime(); + CsolarLong = cam->solarLongitude().degrees(); + CsunAzimuth = cam->SunAzimuth(); + CnorthAzimuth = cam->NorthAzimuth(); + runXY = false; + break; + } + } + } + if(runXY) { + QString msg = "Camera did not intersect images to gather stats"; + throw IException(IException::User, msg, _FILEINFO_); + } + + // get the min and max SCLK values ( do this with QString comp.) + // get the value from the original label blob + QString startClock; + QString stopClock; + QString startTime; + QString stopTime; + for(int i = 0; i < (int)clist.size(); i++) { + OriginalLabel origLab; + clist[i]->read(origLab); + PvlGroup timegrp = origLab.ReturnLabels().findGroup("TIME_PARAMETERS", Pvl::Traverse); + if(i == 0) { + startClock = (QString)timegrp["SpacecraftClockStartCount"]; + stopClock = (QString)timegrp["SpacecraftClockStopCount"]; + startTime = (QString)timegrp["StartTime"]; + stopTime = (QString)timegrp["StopTime"]; + } + else { + QString testStartTime = (QString)timegrp["StartTime"]; + QString testStopTime = (QString)timegrp["StopTime"]; + if(testStartTime < startTime) { + startTime = testStartTime; + startClock = (QString)timegrp["SpacecraftClockStartCount"]; + } + if(testStopTime > stopTime) { + stopTime = testStopTime; + stopClock = (QString)timegrp["spacecraftClockStopCount"]; + } + } + } + + // Concatenate all TDI's and summing and specialProcessingFlat into one keyword + PvlKeyword cpmmTdiFlag("cpmmTdiFlag"); + PvlKeyword cpmmSummingFlag("cpmmSummingFlag"); + PvlKeyword specialProcessingFlag("SpecialProcessingFlag"); + for(int i = 0; i < 14; i++) { + cpmmTdiFlag += (QString)""; + cpmmSummingFlag += (QString)""; + specialProcessingFlag += (QString)""; + } + + for(int i = 0; i < (int)clist.size(); i++) { + Pvl *clab = clist[i]->label(); + PvlGroup cInst = clab->findGroup("Instrument", Pvl::Traverse); + OriginalLabel cOrgLab; + clist[i]->read(cOrgLab); + PvlGroup cGrp = cOrgLab.ReturnLabels().findGroup("INSTRUMENT_SETTING_PARAMETERS", Pvl::Traverse); + cpmmTdiFlag[(int)cInst["CpmmNumber"]] = (QString) cGrp["MRO:TDI"]; + cpmmSummingFlag[(int)cInst["CpmmNumber"]] = (QString) cGrp["MRO:BINNING"]; + + if(cInst.hasKeyword("Special_Processing_Flag")) { + specialProcessingFlag[cInst["CpmmNumber"]] = (QString) cInst["Special_Processing_Flag"]; + } + else { + // there may not be the keyword Special_Processing_Flag if no + //keyword then set the output to NOMINAL + specialProcessingFlag[cInst["CpmmNumber"]] = "NOMINAL"; + } + } + + // Get the blob of original labels from first image in list + OriginalLabel org; + clist[0]->read(org); + + //close all cubes + for(int i = 0; i < (int)clist.size(); i++) { + clist[i]->close(); + delete clist[i]; + } + clist.clear(); + + // automos step + QString list = ui.GetFileName("FROMLIST"); + QString toMosaic = ui.GetFileName("TO"); + QString MosaicPriority = ui.GetString("PRIORITY"); + + QString parameters = "FROMLIST=" + list + " MOSAIC=" + toMosaic + " PRIORITY=" + MosaicPriority; + ProgramLauncher::RunIsisProgram("automos", parameters); + + // write out new information to new group mosaic + PvlGroup mos("Mosaic"); + mos += PvlKeyword("ProductId ", ProdId); + mos += PvlKeyword(sourceProductId); + mos += PvlKeyword("StartTime ", startTime); + mos += PvlKeyword("SpacecraftClockStartCount ", startClock); + mos += PvlKeyword("StopTime ", stopTime); + mos += PvlKeyword("SpacecraftClockStopCount ", stopClock); + mos += PvlKeyword("IncidenceAngle ", toString(Cincid), "DEG"); + mos += PvlKeyword("EmissionAngle ", toString(Cemiss), "DEG"); + mos += PvlKeyword("PhaseAngle ", toString(Cphase), "DEG"); + mos += PvlKeyword("LocalTime ", toString(ClocalSolTime), "LOCALDAY/24"); + mos += PvlKeyword("SolarLongitude ", toString(CsolarLong), "DEG"); + mos += PvlKeyword("SubSolarAzimuth ", toString(CsunAzimuth), "DEG"); + mos += PvlKeyword("NorthAzimuth ", toString(CnorthAzimuth), "DEG"); + mos += cpmmTdiFlag; + mos += cpmmSummingFlag; + mos += specialProcessingFlag; + + Cube mosCube; + mosCube.open(ui.GetFileName("TO"), "rw"); + PvlObject &lab = mosCube.label()->findObject("IsisCube"); + lab.addGroup(mos); + //add orginal label blob to the output cube + mosCube.write(org); + mosCube.close(); + + } + catch(IException &e) { + for(int i = 0; i < (int)clist.size(); i++) { + clist[i]->close(); + delete clist[i]; + } + std::cout << e.what() << '\n'; + QString msg = "The mosaic [" + ui.GetFileName("TO") + "] was NOT created"; + throw IException(IException::User, msg, _FILEINFO_); + } + } // end of isis main + + //Function to compare label - CompareLabels + void CompareLabels(Pvl &pmatch, Pvl &pcomp) { + // test of the ObservationId + PvlGroup matchgrp = pmatch.findGroup("Archive", Pvl::Traverse); + PvlGroup compgrp = pcomp.findGroup("Archive", Pvl::Traverse); + QString obsMatch = matchgrp["ObservationId"]; + QString obsComp = compgrp["ObservationId"]; + + if(obsMatch != obsComp) { + QString msg = "Images not from the same observation"; + throw IException(IException::User, msg, _FILEINFO_); + } + + // Test of the BandBin filter name + PvlGroup bmatchgrp = pmatch.findGroup("BandBin", Pvl::Traverse); + PvlGroup bcompgrp = pcomp.findGroup("BandBin", Pvl::Traverse); + QString bandMatch = bmatchgrp["Name"]; + QString bandComp = bcompgrp["Name"]; + + if(bandMatch != bandComp) { + QString msg = "Images not the same filter"; + throw IException(IException::User, msg, _FILEINFO_); + } + } +} diff --git a/isis/src/mro/apps/himos/himos.h b/isis/src/mro/apps/himos/himos.h new file mode 100644 index 0000000000..349171e6bb --- /dev/null +++ b/isis/src/mro/apps/himos/himos.h @@ -0,0 +1,10 @@ +#ifndef himos_h +#define himos_h + +#include "UserInterface.h" + +namespace Isis{ + extern void himos(UserInterface &ui); +} + +#endif diff --git a/isis/src/mro/apps/himos/main.cpp b/isis/src/mro/apps/himos/main.cpp index 0a790c0f4e..2f9b18f41a 100644 --- a/isis/src/mro/apps/himos/main.cpp +++ b/isis/src/mro/apps/himos/main.cpp @@ -1,320 +1,13 @@ #include "Isis.h" -#include "Application.h" -#include "Camera.h" -#include "Cube.h" -#include "FileList.h" -#include "IException.h" -#include "Pvl.h" -#include "IString.h" -#include "Longitude.h" -#include "OriginalLabel.h" -#include "Process.h" -#include "ProgramLauncher.h" -#include "TProjection.h" -#include "UserInterface.h" +#include "himos.h" +#include "Application.h" using namespace std; using namespace Isis; -#include - -//functions in the code -void CompareLabels(Pvl &match, Pvl &comp); - - void IsisMain() { - - // Get the list of cubes to mosaic - UserInterface &ui = Application::GetUserInterface(); - FileList flist(ui.GetFileName("FROMLIST")); - - - vector clist; - try { - if(flist.size() < 1) { - QString msg = "the list file [" + ui.GetFileName("FROMLIST") + - "does not contain any data"; - throw IException(IException::User, msg, _FILEINFO_); - } - - // open all the cube and place in vector clist - - for(int i = 0; i < flist.size(); i++) { - Cube *c = new Cube(); - clist.push_back(c); - c->open(flist[i].toString()); - } - - - - // run the compair function here. This will conpair the - // labels of the first cube to the labels of each following cube. - PvlKeyword sourceProductId("SourceProductId"); - QString ProdId; - for(int i = 0; i < (int)clist.size(); i++) { - Pvl *pmatch = clist[0]->label(); - Pvl *pcomp = clist[i]->label(); - CompareLabels(*pmatch, *pcomp); - PvlGroup g = pcomp->findGroup("Instrument", Pvl::Traverse); - if(g.hasKeyword("StitchedProductIds")) { - PvlKeyword k = g["StitchedProductIds"]; - for(int j = 0; j < (int)k.size(); j++) { - sourceProductId += g["stitchedProductIds"][j]; - } - } - ProdId = (QString)pmatch->findGroup("Archive", Pvl::Traverse)["ObservationId"]; - QString bandname = (QString)pmatch->findGroup("BandBin", Pvl::Traverse)["Name"]; - bandname = bandname.toUpper(); - ProdId = ProdId + "_" + bandname; - } - bool runXY = true; - - //calculate the min and max lon - double minLat = DBL_MAX; - double maxLat = -DBL_MAX; - double minLon = DBL_MAX; - double maxLon = -DBL_MAX; - double avgLat; - double avgLon; - for(int i = 0; i < (int)clist.size(); i++) { - TProjection *proj = (TProjection *) clist[i]->projection(); - if(proj->MinimumLatitude() < minLat) minLat = proj->MinimumLatitude(); - if(proj->MaximumLatitude() > maxLat) maxLat = proj->MaximumLatitude(); - if(proj->MinimumLongitude() < minLon) minLon = proj->MinimumLongitude(); - if(proj->MaximumLongitude() > maxLon) maxLon = proj->MaximumLongitude(); - } - avgLat = (minLat + maxLat) / 2; - avgLon = (minLon + maxLon) / 2; - TProjection *proj = (TProjection *) clist[0]->projection(); - proj->SetGround(avgLat, avgLon); - avgLat = proj->UniversalLatitude(); - avgLon = proj->UniversalLongitude(); - - // Use camera class to get Inc., emi., phase, and other values - double Cemiss; - double Cphase; - double Cincid; - double ClocalSolTime; - double CsolarLong; - double CsunAzimuth; - double CnorthAzimuth; - for(int i = 0; i < (int)clist.size(); i++) { - Camera *cam = clist[i]->camera(); - if(cam->SetUniversalGround(avgLat, avgLon)) { - Cemiss = cam->EmissionAngle(); - Cphase = cam->PhaseAngle(); - Cincid = cam->IncidenceAngle(); - ClocalSolTime = cam->LocalSolarTime(); - CsolarLong = cam->solarLongitude().degrees(); - CsunAzimuth = cam->SunAzimuth(); - CnorthAzimuth = cam->NorthAzimuth(); - runXY = false; - break; - } - } - - //The code within the if runXY was added in 10/07 to find an intersect with - //pole images that would fail when using projection set universal ground. - // This is run if no intersect is found when using lat and lon in - // projection space. - if(runXY) { - double startX = DBL_MAX; - double endX = DBL_MIN; - double startY = DBL_MAX; - double endY = DBL_MIN; - for(int i = 0; i < (int)clist.size(); i++) { - TProjection *proj = (TProjection *) clist[i]->projection(); - proj->SetWorld(0.5, 0.5); - if(i == 0) { - startX = proj->XCoord(); - endY = proj->YCoord(); - } - else { - if(proj->XCoord() < startX) startX = proj->XCoord(); - if(proj->YCoord() > endY) endY = proj->YCoord(); - } - Pvl *p = clist[i]->label(); - double nlines = p->findGroup("Dimensions", Pvl::Traverse)["Lines"]; - double nsamps = p->findGroup("Dimensions", Pvl::Traverse)["Samples"]; - - proj->SetWorld((nsamps + 0.5), (nlines + 0.5)); - if(i == 0) { - endX = proj->XCoord(); - startY = proj->YCoord(); - } - else { - if(proj->XCoord() > endX) endX = proj->XCoord(); - if(proj->YCoord() < startY) startY = proj->YCoord(); - } - } - - double avgX = (startX + endX) / 2; - double avgY = (startY + endY) / 2; - double sample = proj->ToWorldX(avgX); - double line = proj->ToWorldY(avgY); - - for(int i = 0; i < (int)clist.size(); i++) { - Camera *cam = clist[i]->camera(); - if(cam->SetImage(sample, line)) { - Cemiss = cam->EmissionAngle(); - Cphase = cam->PhaseAngle(); - Cincid = cam->IncidenceAngle(); - ClocalSolTime = cam->LocalSolarTime(); - CsolarLong = cam->solarLongitude().degrees(); - CsunAzimuth = cam->SunAzimuth(); - CnorthAzimuth = cam->NorthAzimuth(); - runXY = false; - break; - } - } - } - if(runXY) { - QString msg = "Camera did not intersect images to gather stats"; - throw IException(IException::User, msg, _FILEINFO_); - } - - // get the min and max SCLK values ( do this with QString comp.) - // get the value from the original label blob - QString startClock; - QString stopClock; - QString startTime; - QString stopTime; - for(int i = 0; i < (int)clist.size(); i++) { - OriginalLabel origLab; - clist[i]->read(origLab); - PvlGroup timegrp = origLab.ReturnLabels().findGroup("TIME_PARAMETERS", Pvl::Traverse); - if(i == 0) { - startClock = (QString)timegrp["SpacecraftClockStartCount"]; - stopClock = (QString)timegrp["SpacecraftClockStopCount"]; - startTime = (QString)timegrp["StartTime"]; - stopTime = (QString)timegrp["StopTime"]; - } - else { - QString testStartTime = (QString)timegrp["StartTime"]; - QString testStopTime = (QString)timegrp["StopTime"]; - if(testStartTime < startTime) { - startTime = testStartTime; - startClock = (QString)timegrp["SpacecraftClockStartCount"]; - } - if(testStopTime > stopTime) { - stopTime = testStopTime; - stopClock = (QString)timegrp["spacecraftClockStopCount"]; - } - } - } - - // Concatenate all TDI's and summing and specialProcessingFlat into one keyword - PvlKeyword cpmmTdiFlag("cpmmTdiFlag"); - PvlKeyword cpmmSummingFlag("cpmmSummingFlag"); - PvlKeyword specialProcessingFlag("SpecialProcessingFlag"); - for(int i = 0; i < 14; i++) { - cpmmTdiFlag += (QString)""; - cpmmSummingFlag += (QString)""; - specialProcessingFlag += (QString)""; - } - - for(int i = 0; i < (int)clist.size(); i++) { - Pvl *clab = clist[i]->label(); - PvlGroup cInst = clab->findGroup("Instrument", Pvl::Traverse); - OriginalLabel cOrgLab; - clist[i]->read(cOrgLab); - PvlGroup cGrp = cOrgLab.ReturnLabels().findGroup("INSTRUMENT_SETTING_PARAMETERS", Pvl::Traverse); - cpmmTdiFlag[(int)cInst["CpmmNumber"]] = (QString) cGrp["MRO:TDI"]; - cpmmSummingFlag[(int)cInst["CpmmNumber"]] = (QString) cGrp["MRO:BINNING"]; - - if(cInst.hasKeyword("Special_Processing_Flag")) { - specialProcessingFlag[cInst["CpmmNumber"]] = (QString) cInst["Special_Processing_Flag"]; - } - else { - // there may not be the keyword Special_Processing_Flag if no - //keyword then set the output to NOMINAL - specialProcessingFlag[cInst["CpmmNumber"]] = "NOMINAL"; - } - } - - - // Get the blob of original labels from first image in list - OriginalLabel org; - clist[0]->read(org); - - //close all cubes - for(int i = 0; i < (int)clist.size(); i++) { - clist[i]->close(); - delete clist[i]; - } - clist.clear(); - - // automos step - QString list = ui.GetFileName("FROMLIST"); - QString toMosaic = ui.GetFileName("TO"); - QString MosaicPriority = ui.GetString("PRIORITY"); - - QString parameters = "FROMLIST=" + list + " MOSAIC=" + toMosaic + " PRIORITY=" + MosaicPriority; - ProgramLauncher::RunIsisProgram("automos", parameters); - - // write out new information to new group mosaic - - PvlGroup mos("Mosaic"); - mos += PvlKeyword("ProductId ", ProdId); - mos += PvlKeyword(sourceProductId); - mos += PvlKeyword("StartTime ", startTime); - mos += PvlKeyword("SpacecraftClockStartCount ", startClock); - mos += PvlKeyword("StopTime ", stopTime); - mos += PvlKeyword("SpacecraftClockStopCount ", stopClock); - mos += PvlKeyword("IncidenceAngle ", toString(Cincid), "DEG"); - mos += PvlKeyword("EmissionAngle ", toString(Cemiss), "DEG"); - mos += PvlKeyword("PhaseAngle ", toString(Cphase), "DEG"); - mos += PvlKeyword("LocalTime ", toString(ClocalSolTime), "LOCALDAY/24"); - mos += PvlKeyword("SolarLongitude ", toString(CsolarLong), "DEG"); - mos += PvlKeyword("SubSolarAzimuth ", toString(CsunAzimuth), "DEG"); - mos += PvlKeyword("NorthAzimuth ", toString(CnorthAzimuth), "DEG"); - mos += cpmmTdiFlag; - mos += cpmmSummingFlag; - mos += specialProcessingFlag; - - Cube mosCube; - mosCube.open(ui.GetFileName("TO"), "rw"); - PvlObject &lab = mosCube.label()->findObject("IsisCube"); - lab.addGroup(mos); - //add orginal label blob to the output cube - mosCube.write(org); - mosCube.close(); - - } - catch(IException &e) { - for(int i = 0; i < (int)clist.size(); i++) { - clist[i]->close(); - delete clist[i]; - } - QString msg = "The mosaic [" + ui.GetFileName("TO") + "] was NOT created"; - throw IException(IException::User, msg, _FILEINFO_); - } -} // end of isis main - -//Function to compare label - CompareLabels -void CompareLabels(Pvl &pmatch, Pvl &pcomp) { - // test of the ObservationId - PvlGroup matchgrp = pmatch.findGroup("Archive", Pvl::Traverse); - PvlGroup compgrp = pcomp.findGroup("Archive", Pvl::Traverse); - QString obsMatch = matchgrp["ObservationId"]; - QString obsComp = compgrp["ObservationId"]; - - if(obsMatch != obsComp) { - QString msg = "Images not from the same observation"; - throw IException(IException::User, msg, _FILEINFO_); - } - - // Test of the BandBin filter name - PvlGroup bmatchgrp = pmatch.findGroup("BandBin", Pvl::Traverse); - PvlGroup bcompgrp = pcomp.findGroup("BandBin", Pvl::Traverse); - QString bandMatch = bmatchgrp["Name"]; - QString bandComp = bcompgrp["Name"]; - - if(bandMatch != bandComp) { - QString msg = "Images not the same filter"; - throw IException(IException::User, msg, _FILEINFO_); - } + himos(ui); } diff --git a/isis/src/mro/apps/himos/tsts/Makefile b/isis/src/mro/apps/himos/tsts/Makefile deleted file mode 100644 index 46d84c74c2..0000000000 --- a/isis/src/mro/apps/himos/tsts/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -BLANKS = "%-6s" -LENGTH = "%-40s" - -include $(ISISROOT)/make/isismake.tststree diff --git a/isis/src/mro/apps/himos/tsts/case01/Makefile b/isis/src/mro/apps/himos/tsts/case01/Makefile deleted file mode 100644 index 4b21ac1ab0..0000000000 --- a/isis/src/mro/apps/himos/tsts/case01/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -APPNAME = himos - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) -1 $(INPUT)/*.cub > $(OUTPUT)/cube.lis; - $(APPNAME) fromlist=$(OUTPUT)/cube.lis \ - to=$(OUTPUT)/test_himos_070418.cub > /dev/null; - catlab from=$(OUTPUT)/test_himos_070418.cub to=$(OUTPUT)/himos.pvl > /dev/null; - $(RM) $(OUTPUT)/cube.lis; diff --git a/isis/src/mro/apps/himos/tsts/case02pole/Makefile b/isis/src/mro/apps/himos/tsts/case02pole/Makefile deleted file mode 100644 index f4eaa16dd6..0000000000 --- a/isis/src/mro/apps/himos/tsts/case02pole/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -APPNAME = himos - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(LS) -1 $(INPUT)/*.cub > $(OUTPUT)/cube.lis; - $(APPNAME) fromlist=$(OUTPUT)/cube.lis \ - to=$(OUTPUT)/test_himos_pole.cub > /dev/null; - catlab from=$(OUTPUT)/test_himos_pole.cub to=$(OUTPUT)/himos_pole.pvl > /dev/null; - $(RM) $(OUTPUT)/cube.lis; diff --git a/isis/tests/Fixtures.cpp b/isis/tests/Fixtures.cpp index 296013e8ba..a50509fac2 100644 --- a/isis/tests/Fixtures.cpp +++ b/isis/tests/Fixtures.cpp @@ -739,4 +739,16 @@ namespace Isis { testCube->reopen("r"); } + void RingsCube::SetUp() { + TempTestingFiles::SetUp(); + + ring1 = new Cube("data/rings/rings1proj.cub", "r"); + ring2 = new Cube("data/rings/rings2proj.cub", "r"); + + cubeListPath = tempDir.path() + "/filelist.txt"; + cubeFileList.append("data/rings/rings1proj.cub"); + cubeFileList.append("data/rings/rings2proj.cub"); + cubeFileList.write(cubeListPath); + } + } diff --git a/isis/tests/Fixtures.h b/isis/tests/Fixtures.h index dc4fbea231..b3f3e8ad70 100644 --- a/isis/tests/Fixtures.h +++ b/isis/tests/Fixtures.h @@ -187,6 +187,18 @@ namespace Isis { protected: void SetUp() override; }; + + class RingsCube : public TempTestingFiles { + protected: + + // pixtures of Saturn's rings + Cube *ring1; + Cube *ring2; + FileList cubeFileList; + QString cubeListPath; + + void SetUp() override; + }; } #endif diff --git a/isis/tests/FunctionalTestsDemprep.cpp b/isis/tests/FunctionalTestsDemprep.cpp new file mode 100644 index 0000000000..82dcad7551 --- /dev/null +++ b/isis/tests/FunctionalTestsDemprep.cpp @@ -0,0 +1,225 @@ +#include +#include +#include + +#include "demprep.h" + +#include "Cube.h" +#include "Pvl.h" +#include "TestUtilities.h" +#include "FileName.h" +#include "LineManager.h" +#include "Table.h" +#include "Histogram.h" + +#include "Fixtures.h" + +#include "gmock/gmock.h" + +using namespace Isis; + +static QString APP_XML = FileName("$ISISROOT/bin/xml/demprep.xml").expanded(); + +TEST(Demprep, DemprepDefault){ + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/padded.cub"; + QVector args = {"from=data/demprep/ulcn2005_lpo_downsampled.cub", "to=" + cubeFileName }; + + UserInterface options(APP_XML, args); + try { + demprep(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to prep DEM: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube cube(cubeFileName); + Pvl *isisLabel = cube.label(); + + ASSERT_EQ(cube.sampleCount(), 439); + ASSERT_EQ(cube.lineCount(), 221); + ASSERT_EQ(cube.bandCount(), 1); + + // Pixels Group + PvlGroup &pixels = isisLabel->findGroup("Pixels", Pvl::Traverse); + ASSERT_EQ(pixels["Type"][0].toStdString(), "SignedWord"); + ASSERT_EQ(pixels["ByteOrder"][0].toStdString(), "Lsb"); + ASSERT_EQ(double(pixels["Base"]), 1737400.0); + ASSERT_EQ(double(pixels["Multiplier"]), 1.0); + + // BandBin Group + // Check size, first, 2 middle, and last values? Enough? + PvlGroup &bandbin = isisLabel->findGroup("BandBin", Pvl::Traverse); + ASSERT_EQ(bandbin["Center"].size(), 1); + ASSERT_EQ(bandbin["OriginalBand"].size(), 1); + + // Mapping Group + PvlGroup &mapping = isisLabel->findGroup("Mapping", Pvl::Traverse); + ASSERT_EQ(mapping["ProjectionName"][0].toStdString(), "Equirectangular"); + ASSERT_DOUBLE_EQ(double(mapping["CenterLongitude"]), 180.0); + ASSERT_EQ(mapping["TargetName"][0].toStdString(), "Moon"); + ASSERT_DOUBLE_EQ(double(mapping["EquatorialRadius"]), 1737400.0); + ASSERT_DOUBLE_EQ(double(mapping["PolarRadius"]), 1737400.0); + ASSERT_EQ(mapping["LatitudeType"][0].toStdString(), "Planetocentric"); + ASSERT_EQ(mapping["LongitudeDirection"][0].toStdString(), "PositiveEast"); + ASSERT_EQ(int(mapping["LongitudeDomain"]), 180); + ASSERT_DOUBLE_EQ(double(mapping["MinimumLatitude"]), -90.0); + ASSERT_DOUBLE_EQ(double(mapping["MaximumLatitude"]), 90.0); + ASSERT_DOUBLE_EQ(double(mapping["MinimumLongitude"]), -180.0); + ASSERT_DOUBLE_EQ(double(mapping["MaximumLongitude"]), 180.0); + ASSERT_DOUBLE_EQ(double(mapping["UpperLeftCornerX"]), -10950000.0); + ASSERT_DOUBLE_EQ(double(mapping["UpperLeftCornerY"]), 2775000.0); + ASSERT_DOUBLE_EQ(double(mapping["PixelResolution"]), 25000.0); + ASSERT_NEAR(double(mapping["Scale"]), 1.21293, .00001); + ASSERT_DOUBLE_EQ(double(mapping["CenterLatitude"]), 0.0); + + Table shapeModel("ShapeModelStatistics"); + cube.read(shapeModel); + // Assertion for minimum radius + ASSERT_DOUBLE_EQ(double(shapeModel[0][0]), 1728.805); + // Assertion for maximum radius + ASSERT_DOUBLE_EQ(double(shapeModel[0][1]), 1745.313); + + + std::unique_ptr hist (cube.histogram()); + + ASSERT_NEAR(hist->Average(), 1736765.71744, .00001); + ASSERT_DOUBLE_EQ(hist->Sum(), 166974392841); + ASSERT_EQ(hist->ValidPixels(), 96141); + ASSERT_NEAR(hist->StandardDeviation(), 2055.78, .01); +} + + +TEST(Demprep, DemprepInside){ + + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/padded.cub"; + QVector args = {"from=data/demprep/ulcn2005_lpo_inside.cub", "to=" + cubeFileName }; + + UserInterface options(APP_XML, args); + try { + demprep(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to prep DEM: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube cube(cubeFileName); + Pvl *isisLabel = cube.label(); + ASSERT_EQ(cube.sampleCount(), 250); + ASSERT_EQ(cube.lineCount(), 250); + ASSERT_EQ(cube.bandCount(), 1); + + // Mapping Group + PvlGroup &mapping = isisLabel->findGroup("Mapping", Pvl::Traverse); + ASSERT_EQ(mapping["ProjectionName"][0].toStdString(), "SimpleCylindrical"); + ASSERT_NEAR(double(mapping["UpperLeftCornerX"]), -5801235.97802, .00001); + ASSERT_NEAR(double(mapping["UpperLeftCornerY"]), 77703.58546, .00001); + ASSERT_NEAR(double(mapping["PixelResolution"]), 1895.20940, .00001); + ASSERT_DOUBLE_EQ(double(mapping["Scale"]), 16.0); +} + + + +TEST(Demprep, DemprepSpecialPixels){ + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/padded.cub"; + QVector args = {"from=data/demprep/vest64_dtm_specialpixels_downsampled.cub", "to=" + cubeFileName }; + + UserInterface options(APP_XML, args); + try { + demprep(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to prep DEM: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube cube(cubeFileName); + Pvl *isisLabel = cube.label(); + ASSERT_EQ(cube.sampleCount(), 366); + ASSERT_EQ(cube.lineCount(), 184); + ASSERT_EQ(cube.bandCount(), 1); + + // Mapping Group + PvlGroup &mapping = isisLabel->findGroup("Mapping", Pvl::Traverse); + ASSERT_EQ(mapping["ProjectionName"][0].toStdString(), "Equirectangular"); + ASSERT_DOUBLE_EQ(double(mapping["UpperLeftCornerX"]), -915000.0); + ASSERT_DOUBLE_EQ(double(mapping["UpperLeftCornerY"]), 460000.0); + ASSERT_DOUBLE_EQ(double(mapping["PixelResolution"]), 5000); + ASSERT_NEAR(double(mapping["Scale"]), 1.00880, .00001); + + + std::unique_ptr hist (cube.histogram()); + + ASSERT_NEAR(double(hist->Average()), 254239.25400, .00001); + ASSERT_DOUBLE_EQ(hist->Sum(), 3869267206.65625); + ASSERT_EQ(hist->ValidPixels(), 15219); + ASSERT_EQ(hist->NullPixels(), 51665); + ASSERT_EQ(hist->LisPixels(), 460); + ASSERT_EQ(hist->LrsPixels(), 0); + ASSERT_EQ(hist->HisPixels(), 0); + ASSERT_EQ(hist->HrsPixels(), 0); + ASSERT_NEAR(hist->StandardDeviation(), 22217.85549, .00001); +} + + +TEST(Demprep, DemprepSouthPole){ + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/padded.cub"; + QVector args = {"from=data/demprep/ulcn2005_lpo_npole.cub", "to=" + cubeFileName }; + + UserInterface options(APP_XML, args); + try { + demprep(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to prep DEM: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube cube(cubeFileName); + ASSERT_EQ(cube.sampleCount(), 250); + ASSERT_EQ(cube.lineCount(), 251); + ASSERT_EQ(cube.bandCount(), 1); + + std::unique_ptr hist (cube.histogram()); + + ASSERT_NEAR(double(hist->Average()), 1737016.52267, .00001); + ASSERT_EQ(hist->Sum(), 108997786798); + ASSERT_EQ(hist->ValidPixels(), 62750); + ASSERT_EQ(hist->NullPixels(), 0); + ASSERT_NEAR(hist->StandardDeviation(), 449.297, .001); +} + + + +TEST(Demprep, DemprepNorthPole){ + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/padded.cub"; + QVector args = {"from=data/demprep/ulcn2005_lpo_npole.cub", "to=" + cubeFileName }; + + UserInterface options(APP_XML, args); + try { + demprep(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to prep DEM: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube cube(cubeFileName); + ASSERT_EQ(cube.sampleCount(), 250); + ASSERT_EQ(cube.lineCount(), 251); + ASSERT_EQ(cube.bandCount(), 1); + + std::unique_ptr hist (cube.histogram()); + + ASSERT_NEAR(double(hist->Average()), 1737016.52267, .00001); + ASSERT_DOUBLE_EQ(hist->Sum(), 108997786798); + ASSERT_EQ(hist->ValidPixels(), 62750); + ASSERT_EQ(hist->NullPixels(), 0); + ASSERT_NEAR(hist->StandardDeviation(), 449.297, .001); +} diff --git a/isis/tests/FunctionalTestsHimos.cpp b/isis/tests/FunctionalTestsHimos.cpp new file mode 100644 index 0000000000..5abd7940ff --- /dev/null +++ b/isis/tests/FunctionalTestsHimos.cpp @@ -0,0 +1,127 @@ +#include + +#include "himos.h" +#include "Fixtures.h" +#include "Pvl.h" +#include "PvlGroup.h" +#include "TestUtilities.h" +#include "Histogram.h" + +#include "gtest/gtest.h" +#include "gmock/gmock.h" + +using namespace Isis; + +static QString APP_XML = FileName("$ISISROOT/bin/xml/himos.xml").expanded(); + +TEST_F(MroHiriseCube, FunctionalTestsHimosDefault) { + + FileName mosFileList(tempDir.path() + "/himosFileList.lis"); + + FileList * cubeList = new FileList(); + cubeList->append(dejitteredCube.fileName()); + cubeList->write(mosFileList); + + QVector args = {"from=" + mosFileList.toString(), + "to=" + tempDir.path() + "outputMos.cub"}; + + UserInterface options(APP_XML, args); + try { + himos(options); + } + catch (IException &e) { + FAIL() << "Unable to create mosaic image: " << e.toString().toStdString().c_str() << std::endl; + } + Cube outputMos(options.GetFileName("TO")); + PvlObject inputCubeLabel = dejitteredCube.label()->findObject("IsisCube"); + PvlObject outputCubeLabel = outputMos.label()->findObject("IsisCube"); + PvlGroup dimensions = outputCubeLabel.findObject("Core").findGroup("Dimensions"); + PvlGroup pixels = outputCubeLabel.findObject("Core").findGroup("Pixels"); + + EXPECT_EQ(int(dimensions["Samples"]), 21); + EXPECT_EQ(int(dimensions["Lines"]), 91); + EXPECT_EQ(int(dimensions["Bands"]), 3); + + EXPECT_EQ(pixels["Type"][0], "SignedWord"); + EXPECT_EQ(pixels["ByteOrder"][0], "Lsb"); + EXPECT_EQ(double(pixels["Base"]), 1.4996565881653); + EXPECT_EQ(double(pixels["Multiplier"]), 4.57882446313283e-05); + + AssertPvlGroupEqual("InputMapping", "OutputMapping", + inputCubeLabel.findGroup("Mapping"), outputCubeLabel.findGroup("Mapping")); + AssertPvlGroupEqual("InputMosaic", "OutputMosaic", + inputCubeLabel.findGroup("Mosaic"), outputCubeLabel.findGroup("Mosaic")); +} + +TEST_F(MroHiriseCube, FunctionalTestsHimosError) { + + FileName mosFileList(tempDir.path() + "/himosFileList.lis"); + + FileList * cubeList = new FileList(); + cubeList->append(testCube->fileName()); + cubeList->write(mosFileList); + + QVector args = {"from=" + mosFileList.toString(), + "to=" + tempDir.path() + "outputMos.cub"}; + + UserInterface options(APP_XML, args); + try { + himos(options); + FAIL() << "Should not have been able to create mosaic: " << options.GetFileName("TO").toStdString().c_str() << std::endl; + } + catch (IException &e) { + EXPECT_THAT(e.what(), testing::HasSubstr("was NOT created")); + } +} + +TEST_F(MroHiriseCube, FunctionalTestsHimosMismatchObs) { + CubeAttributeOutput cubeAtts(FileName(dejitteredCube.fileName())); + Cube *copyDejitteredCube = dejitteredCube.copy(tempDir.path() + "/copyDejitteredCube.cub", cubeAtts); + copyDejitteredCube->label()->findObject("IsisCube").findGroup("Archive")["ObservationId"] = "Banana"; + copyDejitteredCube->reopen("rw"); + + FileName mosFileList(tempDir.path() + "/himosFileList.lis"); + + FileList * cubeList = new FileList(); + cubeList->append(dejitteredCube.fileName()); + cubeList->append(copyDejitteredCube->fileName()); + cubeList->write(mosFileList); + + QVector args = {"from=" + mosFileList.toString(), + "to=" + tempDir.path() + "outputMos.cub"}; + + UserInterface options(APP_XML, args); + try { + himos(options); + FAIL() << "Should not have been able to create mosaic: " << options.GetFileName("TO").toStdString().c_str() << std::endl; + } + catch (IException &e) { + EXPECT_THAT(e.what(), testing::HasSubstr("was NOT created")); + } +} + +TEST_F(MroHiriseCube, FunctionalTestsHimosMismatchFilter) { + CubeAttributeOutput cubeAtts(FileName(dejitteredCube.fileName())); + Cube *copyDejitteredCube = dejitteredCube.copy(tempDir.path() + "/copyDejitteredCube.cub", cubeAtts); + copyDejitteredCube->label()->findObject("IsisCube").findGroup("BandBin")["Name"] = "Red"; + copyDejitteredCube->reopen("rw"); + + FileName mosFileList(tempDir.path() + "/himosFileList.lis"); + + FileList * cubeList = new FileList(); + cubeList->append(dejitteredCube.fileName()); + cubeList->append(copyDejitteredCube->fileName()); + cubeList->write(mosFileList); + + QVector args = {"from=" + mosFileList.toString(), + "to=" + tempDir.path() + "outputMos.cub"}; + + UserInterface options(APP_XML, args); + try { + himos(options); + FAIL() << "Should not have been able to create mosaic: " << options.GetFileName("TO").toStdString().c_str() << std::endl; + } + catch (IException &e) { + EXPECT_THAT(e.what(), testing::HasSubstr("was NOT created")); + } +} diff --git a/isis/tests/FunctionalTestsLronac2isis.cpp b/isis/tests/FunctionalTestsLronac2isis.cpp new file mode 100644 index 0000000000..0093096823 --- /dev/null +++ b/isis/tests/FunctionalTestsLronac2isis.cpp @@ -0,0 +1,175 @@ +#include + +#include "Fixtures.h" +#include "Pvl.h" +#include "PvlGroup.h" +#include "TestUtilities.h" +#include "Endian.h" +#include "PixelType.h" +#include "Histogram.h" + +#include "lronac2isis.h" + +#include "gtest/gtest.h" +#include "gmock/gmock.h" + +using namespace Isis; +using namespace testing; + +static QString APP_XML = FileName("$ISISROOT/bin/xml/lronac2isis.xml").expanded(); + +TEST(Lronac2isisTests, Lro2isisNacLFull) { + QTemporaryDir prefix; + ASSERT_TRUE(prefix.isValid()); + + QString cubeFileName = prefix.path() + "/lo2isisTEMP.cub"; + QVector args = {"from=data/lronac/nacl.img", "to="+cubeFileName}; + + UserInterface options(APP_XML, args); + try { + lronac2isis(options); + } + catch (IException &e) { + FAIL() << "Unable to ingest LO image: " <findGroup("Instrument", Pvl::Traverse); + ASSERT_EQ(inst["SpacecraftName"][0].toStdString(), "LUNAR RECONNAISSANCE ORBITER"); + ASSERT_EQ(inst["InstrumentId"][0].toStdString(), "NACL"); + ASSERT_EQ(inst["TargetName"][0].toStdString(), "MOON"); + ASSERT_EQ(inst["StartTime"][0].toStdString(), "2009-11-29T14:51:21.968000"); + + ASSERT_EQ(inst["TemperatureSCS"][0].toStdString(), "3.88"); + ASSERT_EQ(inst["TemperatureFPA"][0].toStdString(), "17.73"); + ASSERT_EQ(inst["TemperatureFPGA"][0].toStdString(), "-12.94"); + ASSERT_EQ(inst["TemperatureTelescope"][0].toStdString(), "8.89"); + ASSERT_EQ(inst["SpatialSumming"][0].toStdString(), "1"); + + ASSERT_EQ(inst["TemperatureSCSRaw"][0].toStdString(), "2770"); + ASSERT_EQ(inst["TemperatureFPARaw"][0].toStdString(), "2115"); + ASSERT_EQ(inst["TemperatureFPGARaw"][0].toStdString(), "3440"); + ASSERT_EQ(inst["TemperatureTelescopeRaw"][0].toStdString(), "2536"); + + // Bandbin Group + PvlGroup &bandbin = isisLabel->findGroup("BandBin", Pvl::Traverse); + ASSERT_EQ(bandbin["FilterName"][0], "BroadBand"); + ASSERT_EQ(bandbin["Center"][0], "600"); + ASSERT_EQ(bandbin["Width"][0], "300"); + + // Kernels Group + PvlGroup &kern = isisLabel->findGroup("Kernels", Pvl::Traverse); + ASSERT_EQ(int(kern["NaifFrameCode"]), -85600); + + std::unique_ptr hist (cube.histogram()); + + ASSERT_NEAR(hist->Average(), 167.19855845181675, .00001); + ASSERT_EQ(hist->Sum(), 8466935); + ASSERT_EQ(hist->ValidPixels(), 50640); + ASSERT_NEAR(hist->StandardDeviation(), 85.2134, .0001); +} + + +TEST(Lronac2isisTests, Lro2isisNacR) { + QTemporaryDir prefix; + ASSERT_TRUE(prefix.isValid()); + + QString cubeFileName = prefix.path() + "/lo2isisTEMP.cub"; + QVector args = {"from=data/lronac/nacr.img", "to="+cubeFileName}; + + UserInterface options(APP_XML, args); + try { + lronac2isis(options); + } + catch (IException &e) { + FAIL() << "Unable to ingest LO image: " <findGroup("Instrument", Pvl::Traverse); + ASSERT_EQ(inst["SpacecraftName"][0].toStdString(), "LUNAR RECONNAISSANCE ORBITER"); + ASSERT_EQ(inst["InstrumentId"][0].toStdString(), "NACR"); + ASSERT_EQ(inst["TargetName"][0].toStdString(), "MOON"); + ASSERT_EQ(inst["StartTime"][0].toStdString(), "2009-11-29T14:51:21.968000"); + + ASSERT_EQ(inst["TemperatureSCS"][0].toStdString(), "3.88"); + ASSERT_EQ(inst["TemperatureFPA"][0].toStdString(), "17.67"); + ASSERT_EQ(inst["TemperatureFPGA"][0].toStdString(), "-11.38"); + ASSERT_EQ(inst["TemperatureTelescope"][0].toStdString(), "11.14"); + ASSERT_EQ(inst["SpatialSumming"][0].toStdString(), "1"); + + ASSERT_EQ(inst["TemperatureSCSRaw"][0].toStdString(), "2770"); + ASSERT_EQ(inst["TemperatureFPARaw"][0].toStdString(), "2118"); + ASSERT_EQ(inst["TemperatureFPGARaw"][0].toStdString(), "3388"); + ASSERT_EQ(inst["TemperatureTelescopeRaw"][0].toStdString(), "2429"); + + // Bandbin Group + PvlGroup &bandbin = isisLabel->findGroup("BandBin", Pvl::Traverse); + ASSERT_EQ(bandbin["FilterName"][0], "BroadBand"); + ASSERT_EQ(bandbin["Center"][0], "600"); + ASSERT_EQ(bandbin["Width"][0], "300"); + + // Kernels Group + PvlGroup &kern = isisLabel->findGroup("Kernels", Pvl::Traverse); + ASSERT_EQ(int(kern["NaifFrameCode"]), -85610); + + std::unique_ptr hist (cube.histogram()); + + ASSERT_NEAR(hist->Average(), 159.45262638230648, .00001); + ASSERT_EQ(hist->Sum(), 8074681); + ASSERT_EQ(hist->ValidPixels(), 50640); + ASSERT_NEAR(hist->StandardDeviation(), 82.499865428882416, .0001); +} + + +TEST(Lronac2isisTests, Lro2isisLabelFail) { + QTemporaryDir prefix; + ASSERT_TRUE(prefix.isValid()); + + QString badLabelPath = prefix.path() + "/badLabel.img"; + Pvl lab("data/lronac/nacr.img"); + PvlKeyword &bterm = lab.findKeyword("LRO:BTERM"); + bterm.setValue("fake"); + lab.write(badLabelPath); + + QString cubeFileName = prefix.path() + "/doesntMatter.cub"; + QVector args = {"from="+badLabelPath, "to="+cubeFileName}; + + UserInterface options(APP_XML, args); + try { + lronac2isis(options); + FAIL() << "Expected to throw exception"; + } + catch (IException &e) { + EXPECT_THAT(e.what(), HasSubstr("The decompanding terms do not have the same dimensions")); + } + +} \ No newline at end of file diff --git a/isis/tests/FunctionalTestsPds2isis.cpp b/isis/tests/FunctionalTestsPds2isis.cpp new file mode 100644 index 0000000000..eb90a76962 --- /dev/null +++ b/isis/tests/FunctionalTestsPds2isis.cpp @@ -0,0 +1,393 @@ +#include + +#include "pds2isis.h" +#include "Fixtures.h" +#include "Pvl.h" +#include "PvlGroup.h" +#include "TestUtilities.h" +#include "Histogram.h" + +#include "gtest/gtest.h" + +using namespace Isis; + +static QString APP_XML = FileName("$ISISROOT/bin/xml/pds2isis.xml").expanded(); + +TEST(Pds2Isis, Pds2isisTestDefault) { + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/pds2isis_out.cub"; + QVector args = { "from=data/pds2isis/ab102401_cropped.img", + "to=" + cubeFileName }; + UserInterface options(APP_XML, args); + try { + pds2isis(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to ingest file: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube outCube(cubeFileName); + Pvl *outLabel = outCube.label(); + + PvlGroup dimensions = outLabel->findGroup("Dimensions", Pvl::Traverse); + ASSERT_EQ((int)dimensions["Samples"], 640); + ASSERT_EQ((int)dimensions["Lines"], 5); + ASSERT_EQ((int)dimensions["Bands"], 1); + + PvlGroup pixels = outLabel->findGroup("Pixels", Pvl::Traverse); + ASSERT_EQ(pixels["Type"][0].toStdString(), "UnsignedByte"); + ASSERT_EQ(pixels["ByteOrder"][0].toStdString(), "Lsb"); + ASSERT_EQ((double)pixels["Base"], 0.0); + ASSERT_EQ((double)pixels["Multiplier"], 1.0); + + PvlGroup archive = outLabel->findGroup("Archive", Pvl::Traverse); + ASSERT_EQ(archive["DataSetId"][0].toStdString(), "MGS-M-MOC-NA/WA-2-DSDP-L0-V1.0"); + ASSERT_EQ(archive["ProducerId"][0].toStdString(), "MGS_MOC_TEAM"); + ASSERT_EQ(archive["ProductId"][0].toStdString(), "AB-1-024/01"); + ASSERT_EQ(archive["InstrumentId"][0].toStdString(), "MOC-WA"); + ASSERT_EQ(archive["TargetName"][0].toStdString(), "MARS"); + ASSERT_EQ(archive["MissionPhaseName"][0].toStdString(), "AB-1"); + ASSERT_EQ(archive["RationaleDescription"][0].toStdString(), "OLYMPUS MONS SPECIAL RED WIDE ANGLE"); + + + std::unique_ptr hist (outCube.histogram()); + ASSERT_NEAR(hist->Average(), 81.5828125, .00001); + ASSERT_EQ(hist->Sum(), 261065); + ASSERT_EQ(hist->ValidPixels(), 3200); + ASSERT_NEAR(hist->StandardDeviation(), 30.5674, .0001); +} + + +TEST(Pds2Isis, Pds2isisTestBandBin) { + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/pds2isis_out.cub"; + QVector args = { "from=data/pds2isis/gaspra_nims_hires_radiance_cropped.lbl", + "to=" + cubeFileName }; + UserInterface options(APP_XML, args); + + try { + pds2isis(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to ingest file: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube outCube(cubeFileName); + Pvl *outLabel = outCube.label(); + + PvlGroup dimensions = outLabel->findGroup("Dimensions", Pvl::Traverse); + ASSERT_EQ((int)dimensions["Samples"], 100); + ASSERT_EQ((int)dimensions["Lines"], 3); + ASSERT_EQ((int)dimensions["Bands"], 3); + + bool ok = false; + PvlGroup bandbin = outLabel->findGroup("BandBin", Pvl::Traverse); + ASSERT_EQ(bandbin["Center"][0].toDouble(&ok), 0.7360); + ASSERT_EQ(bandbin["Center"][1].toDouble(&ok), 0.8750); + ASSERT_EQ(bandbin["Center"][2].toDouble(&ok), 1.0546); + ASSERT_EQ(bandbin["Center"][3].toDouble(&ok), 1.3326); + ASSERT_EQ(bandbin["Center"][4].toDouble(&ok), 1.6110); + ASSERT_EQ(bandbin["Center"][5].toDouble(&ok), 1.8914); + ASSERT_EQ(bandbin["Center"][6].toDouble(&ok), 2.1728); + ASSERT_EQ(bandbin["Center"][7].toDouble(&ok), 2.4529); + ASSERT_EQ(bandbin["Center"][8].toDouble(&ok), 2.7382); + ASSERT_EQ(bandbin["Center"][9].toDouble(&ok), 3.0178); + ASSERT_EQ(bandbin["Center"][10].toDouble(&ok), 3.3012); + ASSERT_EQ(bandbin["Center"][11].toDouble(&ok), 3.5839); + ASSERT_EQ(bandbin["Center"][12].toDouble(&ok), 3.8670); + ASSERT_EQ(bandbin["Center"][13].toDouble(&ok), 4.1503); + ASSERT_EQ(bandbin["Center"][14].toDouble(&ok), 4.4343); + ASSERT_EQ(bandbin["Center"][15].toDouble(&ok), 4.7164); + ASSERT_EQ(bandbin["Center"][16].toDouble(&ok), 4.9988); + + ASSERT_EQ(bandbin["Width"][0].toDouble(&ok), 0.0125); + ASSERT_EQ(bandbin["Width"][1].toDouble(&ok), 0.0125); + ASSERT_EQ(bandbin["Width"][2].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][3].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][4].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][5].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][6].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][7].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][8].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][9].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][10].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][11].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][12].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][13].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][14].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][15].toDouble(&ok), 0.0250); + ASSERT_EQ(bandbin["Width"][16].toDouble(&ok), 0.0250); + + ASSERT_EQ(bandbin["FilterNumber"][0].toInt(&ok, 10), 1); + ASSERT_EQ(bandbin["FilterNumber"][1].toInt(&ok, 10), 2); + ASSERT_EQ(bandbin["FilterNumber"][2].toInt(&ok, 10), 3); + ASSERT_EQ(bandbin["FilterNumber"][3].toInt(&ok, 10), 4); + ASSERT_EQ(bandbin["FilterNumber"][4].toInt(&ok, 10), 5); + ASSERT_EQ(bandbin["FilterNumber"][5].toInt(&ok, 10), 6); + ASSERT_EQ(bandbin["FilterNumber"][6].toInt(&ok, 10), 7); + ASSERT_EQ(bandbin["FilterNumber"][7].toInt(&ok, 10), 8); + ASSERT_EQ(bandbin["FilterNumber"][8].toInt(&ok, 10), 9); + ASSERT_EQ(bandbin["FilterNumber"][9].toInt(&ok, 10), 10); + ASSERT_EQ(bandbin["FilterNumber"][10].toInt(&ok, 10), 11); + ASSERT_EQ(bandbin["FilterNumber"][11].toInt(&ok, 10), 12); + ASSERT_EQ(bandbin["FilterNumber"][12].toInt(&ok, 10), 13); + ASSERT_EQ(bandbin["FilterNumber"][13].toInt(&ok, 10), 14); + ASSERT_EQ(bandbin["FilterNumber"][14].toInt(&ok, 10), 15); + ASSERT_EQ(bandbin["FilterNumber"][15].toInt(&ok, 10), 16); + ASSERT_EQ(bandbin["FilterNumber"][16].toInt(&ok, 10), 17); + + std::unique_ptr hist (outCube.histogram(0)); + ASSERT_NEAR(hist->Average(), 0.205984, 1e-3); + ASSERT_NEAR(hist->Sum(), 185.386, 1e-3); + ASSERT_EQ(hist->ValidPixels(), 900); + ASSERT_NEAR(hist->StandardDeviation(), 0.606295, 1e-3); +} + + +TEST(Pds2Isis, Pds2isisTestOffset) { + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/pds2isis_out.cub"; + QVector args = { "from=data/pds2isis/ldem_4_cropped.img", + "to=" + cubeFileName }; + UserInterface options(APP_XML, args); + + try { + pds2isis(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to ingest file: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube outCube(cubeFileName); + Pvl *outLabel = outCube.label(); + + PvlGroup mapping = outLabel->findGroup("Mapping", Pvl::Traverse); + ASSERT_EQ(mapping["ProjectionName"][0].toStdString(), "SimpleCylindrical"); + ASSERT_EQ((double)mapping["CenterLongitude"], 180.0); + ASSERT_EQ(mapping["TargetName"][0].toStdString(), "Moon"); + ASSERT_EQ((double)mapping["EquatorialRadius"], 1737400.0); + ASSERT_EQ((double)mapping["PolarRadius"], 1737400.0); + ASSERT_EQ(mapping["LatitudeType"][0].toStdString(), "Planetocentric"); + ASSERT_EQ(mapping["LongitudeDirection"][0].toStdString(), "PositiveEast"); + ASSERT_EQ((int)mapping["LongitudeDomain"], 360); + ASSERT_EQ((double)mapping["MinimumLatitude"], -90.0); + ASSERT_EQ((double)mapping["MaximumLatitude"], 90.0); + ASSERT_EQ((double)mapping["MinimumLongitude"], 0.0); + ASSERT_EQ((double)mapping["MaximumLongitude"], 360.0); + ASSERT_EQ((double)mapping["UpperLeftCornerX"], -5458204.8); + ASSERT_EQ((double)mapping["UpperLeftCornerY"], 2729102.4); + ASSERT_EQ((double)mapping["PixelResolution"], 7580.84); + ASSERT_EQ((double)mapping["Scale"], 4.0); + + std::unique_ptr hist (outCube.histogram()); + ASSERT_NEAR(hist->Average(), 1.7375e+06, 10); + ASSERT_NEAR(hist->Sum(), 2.50026e+09, 1e3); + ASSERT_EQ(hist->ValidPixels(), 1439); + ASSERT_NEAR(hist->StandardDeviation(), 9187.96, .0001); +} + +TEST(Pds2Isis, Pds2isisTestProjection) { + Pvl appLog; + QTemporaryDir prefix; + QString cubeFileName = prefix.path() + "/pds2isis_out.cub"; + QVector args = { "from=data/pds2isis/ff17_cropped.lbl", + "to=" + cubeFileName }; + UserInterface options(APP_XML, args); + + try { + pds2isis(options, &appLog); + } + catch (IException &e) { + FAIL() << "Unable to ingest file: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube outCube(cubeFileName); + Pvl *outLabel = outCube.label(); + + PvlGroup mapping = outLabel->findGroup("Mapping", Pvl::Traverse); + ASSERT_EQ(mapping["ProjectionName"][0].toStdString(), "Sinusoidal"); + ASSERT_EQ((double)mapping["CenterLongitude"], 325.3829); + ASSERT_EQ(mapping["TargetName"][0].toStdString(), "Venus"); + ASSERT_EQ((double)mapping["EquatorialRadius"], 6051920.0); + ASSERT_EQ((double)mapping["PolarRadius"], 6051920.0); + ASSERT_EQ(mapping["LatitudeType"][0].toStdString(), "Planetocentric"); + ASSERT_EQ(mapping["LongitudeDirection"][0].toStdString(), "PositiveEast"); + ASSERT_EQ((int)mapping["LongitudeDomain"], 360); + ASSERT_EQ((double)mapping["MinimumLatitude"], -29.6357); + ASSERT_EQ((double)mapping["MaximumLatitude"], -28.9092); + ASSERT_EQ((double)mapping["MinimumLongitude"], 322.0367); + ASSERT_EQ((double)mapping["MaximumLongitude"], 322.8903); + ASSERT_EQ((double)mapping["UpperLeftCornerX"], -307162.5); + ASSERT_EQ((double)mapping["UpperLeftCornerY"], -3053025.0); + ASSERT_EQ((double)mapping["PixelResolution"], 75.0); + ASSERT_EQ((double)mapping["Scale"], 1407.4); + + std::unique_ptr hist (outCube.histogram()); + ASSERT_NEAR(hist->Average(), 67.7978515625, .00001); + ASSERT_EQ(hist->Sum(), 69425); + ASSERT_EQ(hist->ValidPixels(), 1024); + ASSERT_NEAR(hist->StandardDeviation(), 26.0079, .0001); +} + +TEST(Pds2Isis, Pds2isisTestSpecialPixels) { + Pvl appLog; + QTemporaryDir prefix; + QVector args; + QString cubeFileName = prefix.path() + "/pds2isis_out.cub"; + + // test setnullrange + args = { "from=data/pds2isis/ab102401_cropped.img", + "to=" + cubeFileName, + "setnullrange=yes", "nullmin=15.0", "nullmax=45.0" }; + UserInterface options_nullrange(APP_XML, args); + try { + pds2isis(options_nullrange, &appLog); + } + catch (IException &e) { + FAIL() << "Failed for setnullrange=yes on file: " << e.toString().toStdString().c_str() << std::endl; + } + + // test sethrsrange + args = { "from=data/pds2isis/ab102401_cropped.img", + "to=" + cubeFileName, + "sethrsrange=yes", "hrsmin=220.0", "hrsmax=250.0"}; + UserInterface options_hrsrange(APP_XML, args); + try { + pds2isis(options_hrsrange, &appLog); + } + catch (IException &e) { + FAIL() << "Failed for sethrsrange=yes on file: " << e.toString().toStdString().c_str() << std::endl; + } + + // test sethisrange + args = { "from=data/pds2isis/ab102401_cropped.img", + "to=" + cubeFileName, + "sethisrange=yes", "hismin=190.0", "hismax=219.0"}; + UserInterface options_hisrange(APP_XML, args); + try { + pds2isis(options_hisrange, &appLog); + } + catch (IException &e) { + FAIL() << "Failed for sethisrange=yes on file: " << e.toString().toStdString().c_str() << std::endl; + } + + // test setlrsrange + args = { "from=data/pds2isis/ab102401_cropped.img", + "to=" + cubeFileName, + "setlrsrange=yes", "lrsmin=96.0", "lrsmax=125.0"}; + UserInterface options_lrsrange(APP_XML, args); + try { + pds2isis(options_lrsrange, &appLog); + } + catch (IException &e) { + FAIL() << "Failed for setlrsrange=yes on file: " << e.toString().toStdString().c_str() << std::endl; + } + + // test setlisrange + args = { "from=data/pds2isis/ab102401_cropped.img", + "to=" + cubeFileName, + "setlisrange=yes", "lismin=65.0", "lismax=95.0"}; + UserInterface options_lisrange(APP_XML, args); + try { + pds2isis(options_lisrange, &appLog); + } + catch (IException &e) { + FAIL() << "Failed for setlisrange=yes on file: " << e.toString().toStdString().c_str() << std::endl; + } +} + +TEST(Pds2Isis, Pds2isisTestBIL) { + Pvl appLog; + QTemporaryDir prefix; + QVector args; + QString cubeFileName = prefix.path() + "/pds2isis_BIL_out.cub"; + + args = { "from=data/pds2isis/BILtestData_cropped.LBL", + "to=" + cubeFileName}; + UserInterface options(APP_XML, args); + try { + pds2isis(options, &appLog); + } + catch (IException &e) { + FAIL() << "Failed to ingest file: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube outCube(cubeFileName); + Pvl *outLabel = outCube.label(); + + PvlGroup dimensions = outLabel->findGroup("Dimensions", Pvl::Traverse); + ASSERT_EQ((int)dimensions["Lines"], 1); + ASSERT_EQ((int)dimensions["Samples"], 304); + ASSERT_EQ((int)dimensions["Bands"], 1); + + std::unique_ptr hist (outCube.histogram()); + ASSERT_NEAR(hist->Average(), 6.35692e+31, 1e25); + ASSERT_NEAR(hist->Sum(), 1.9325e+34, 1e29); + ASSERT_EQ(hist->ValidPixels(), 304); + ASSERT_NEAR(hist->StandardDeviation(), 1.08618e+33, 1e28); +} + +TEST(Pds2Isis, Pds2isisTestBIP) { + Pvl appLog; + QTemporaryDir prefix; + QVector args; + QString cubeFileName = prefix.path() + "/pds2isis_BIP_out.cub"; + + args = { "from=data/pds2isis/BIPtestData_cropped.LBL", + "to=" + cubeFileName}; + UserInterface options(APP_XML, args); + try { + pds2isis(options, &appLog); + } + catch (IException &e) { + FAIL() << "Failed to ingest file: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube outCube(cubeFileName); + Pvl *outLabel = outCube.label(); + + PvlGroup dimensions = outLabel->findGroup("Dimensions", Pvl::Traverse); + ASSERT_EQ((int)dimensions["Lines"], 1); + ASSERT_EQ((int)dimensions["Samples"], 304); + ASSERT_EQ((int)dimensions["Bands"], 1); + + std::unique_ptr hist (outCube.histogram()); + ASSERT_NEAR(hist->Average(), 6.35692e+31, 1e25); + ASSERT_NEAR(hist->Sum(), 1.9325e+34, 1e29); + ASSERT_EQ(hist->ValidPixels(), 304); + ASSERT_NEAR(hist->StandardDeviation(), 1.08618e+33, 1e28); +} + +TEST(Pds2Isis, Pds2isisTestNIMSQub) { + Pvl appLog; + QTemporaryDir prefix; + QVector args; + QString cubeFileName = prefix.path() + "/pds2isis_QUB_out.cub"; + + args = { "from=data/pds2isis/30i001ci_cropped.qub", + "to=" + cubeFileName}; + UserInterface options(APP_XML, args); + try { + pds2isis(options, &appLog); + } + catch (IException &e) { + FAIL() << "Failed to ingest file: " << e.toString().toStdString().c_str() << std::endl; + } + + Cube outCube(cubeFileName); + Pvl *outLabel = outCube.label(); + + PvlGroup dimensions = outLabel->findGroup("Dimensions", Pvl::Traverse); + ASSERT_EQ((int)dimensions["Lines"], 46); + ASSERT_EQ((int)dimensions["Samples"], 1); + ASSERT_EQ((int)dimensions["Bands"], 12); + + std::unique_ptr hist (outCube.histogram()); + ASSERT_NEAR(hist->Average(), 1.64693e+30, 1e25); + ASSERT_NEAR(hist->Sum(), 7.57588e+31, 1e26); + ASSERT_EQ(hist->ValidPixels(), 46); + ASSERT_NEAR(hist->StandardDeviation(), 1.117e+31, 1e26); +} diff --git a/isis/tests/FunctionalTestsRingsAutomos.cpp b/isis/tests/FunctionalTestsRingsAutomos.cpp new file mode 100644 index 0000000000..6cede02a9c --- /dev/null +++ b/isis/tests/FunctionalTestsRingsAutomos.cpp @@ -0,0 +1,179 @@ +#include "ringsautomos.h" + +#include "Fixtures.h" +#include "TestUtilities.h" +#include "UserInterface.h" +#include "Histogram.h" + +#include "gmock/gmock.h" + +using namespace Isis; + +static QString APP_XML = FileName("$ISISROOT/bin/xml/ringsautomos.xml").expanded(); + +TEST_F(RingsCube, FunctionalTestRingsAutomos) { + QString outPath = tempDir.path() + "/mosaic.cub"; + + QVector args = {"fromlist=" + cubeListPath, "mosaic=" + outPath}; + UserInterface options(APP_XML, args); + Pvl appLog; + + ringsautomos(options, &appLog); + + Cube mos(outPath); + Pvl label = *mos.label(); + + PvlGroup mapping = label.findObject("IsisCube").findGroup("Mapping"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("ProjectionName"), "Planar"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("TargetName"), "Saturn"); + EXPECT_NEAR((double)mapping.findKeyword("UpperLeftCornerX"), -141593057.92723, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("UpperLeftCornerY"), 141593057.92723, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("PixelResolution"), 5899710.746968, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("Scale"), 0.5, 0.0001); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("RingLongitudeDirection"), "CounterClockwise"); + EXPECT_EQ((int)mapping.findKeyword("RingLongitudeDomain"), 360); + EXPECT_NEAR((double)mapping.findKeyword("MaximumRingRadius"), 198012526.14923, 0.0001); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("MinimumRingLongitude"), 0); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("MaximumRingLongitude"), 360); + EXPECT_NEAR((double)mapping.findKeyword("CenterRingRadius"), 169014263.07462, 0.0001); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("CenterRingLongitude"), 180); + + std::unique_ptr oCubeStats(mos.histogram()); + + EXPECT_NEAR(oCubeStats->Average(), 1336, 0.001); + EXPECT_NEAR(oCubeStats->Sum(), 903136, 0.001); + EXPECT_NEAR(oCubeStats->ValidPixels(), 676, 0.001); + EXPECT_NEAR(oCubeStats->StandardDeviation(), 1152.5415021048376, 0.001); +} + + +TEST_F(RingsCube, FunctionalTestRingsAutomosSetRanges) { + QString oFileListPath = tempDir.path() + "/outFileList.txt"; + QString outPath = tempDir.path() + "/mosaic.cub"; + + QVector args = {"fromlist=" + cubeListPath, "mosaic=" + outPath, + "tolist=" + oFileListPath, "priority=beneath", "grange=user", + "minringlon=0", "maxringlon=100", "minringrad=8000000", "maxringrad=100000000", + "track=true", "matchbandbin=false", "matchdem=true"}; + + UserInterface options(APP_XML, args); + Pvl appLog; + + ringsautomos(options, &appLog); + + Cube mos(outPath); + Pvl label = *mos.label(); + + PvlGroup mapping = label.findObject("IsisCube").findGroup("Mapping"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("ProjectionName"), "Planar"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("TargetName"), "Saturn"); + EXPECT_NEAR((double)mapping.findKeyword("UpperLeftCornerX"), -100295082.69846, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("UpperLeftCornerY"), -9.7971743931788306e-10, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("PixelResolution"), 5899710.746968, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("Scale"), 0.5, 0.0001); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("RingLongitudeDirection"), "CounterClockwise"); + EXPECT_EQ((int)mapping.findKeyword("RingLongitudeDomain"), 360); + EXPECT_NEAR((double)mapping.findKeyword("MaximumRingRadius"), 100000000, 0.0001); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("MinimumRingLongitude"), 0); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("MaximumRingLongitude"), 100); + EXPECT_NEAR((double)mapping.findKeyword("CenterRingRadius"), 169014263.07462, 0.0001); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("CenterRingLongitude"), 180); + + std::unique_ptr oCubeStats(mos.histogram()); + + EXPECT_NEAR(oCubeStats->Average(), 1079.2967741935483, 0.001); + EXPECT_NEAR(oCubeStats->Sum(), 167291, 0.001); + EXPECT_NEAR(oCubeStats->ValidPixels(), 155, 0.001); + EXPECT_NEAR(oCubeStats->StandardDeviation(), 753.01066871414162, 0.001); + + FileList lout; + lout.read(oFileListPath); + + EXPECT_EQ(lout.size(), cubeFileList.size()); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, lout.at(0).expanded(), cubeFileList.at(0).expanded()); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, lout.at(1).expanded(), cubeFileList.at(1).expanded()); +} + + +TEST_F(RingsCube, FunctionalTestRingsAutomosPriority) { + QString outPath = tempDir.path() + "/mosaic.cub"; + + QVector args = {"fromlist=" + cubeListPath, "mosaic=" + outPath, + "priority=average", "highsat=true", "lowsat=true", "null=true"}; + + UserInterface options(APP_XML, args); + Pvl appLog; + + ringsautomos(options, &appLog); + + Cube mos(outPath); + Pvl label = *mos.label(); + + PvlGroup mapping = label.findObject("IsisCube").findGroup("Mapping"); + + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("ProjectionName"), "Planar"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("TargetName"), "Saturn"); + EXPECT_NEAR((double)mapping.findKeyword("UpperLeftCornerX"), -141593057.92723, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("UpperLeftCornerY"), 141593057.92723, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("PixelResolution"), 5899710.746968, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("Scale"), 0.5, 0.0001); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("RingLongitudeDirection"), "CounterClockwise"); + EXPECT_EQ((int)mapping.findKeyword("RingLongitudeDomain"), 360); + EXPECT_NEAR((double)mapping.findKeyword("MaximumRingRadius"), 198012526.14923, 0.0001); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("MinimumRingLongitude"), 0); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("MaximumRingLongitude"), 360); + EXPECT_NEAR((double)mapping.findKeyword("CenterRingRadius"), 169014263.07462, 0.0001); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("CenterRingLongitude"), 180); + + std::unique_ptr oCubeStats(mos.histogram()); + + EXPECT_NEAR(oCubeStats->Average(), 1434.8758620689655, 0.001); + EXPECT_NEAR(oCubeStats->Sum(), 624171, 0.001); + EXPECT_NEAR(oCubeStats->ValidPixels(), 435, 0.001); + EXPECT_NEAR(oCubeStats->StandardDeviation(), 1167.5695079877848, 0.001); +} + + +TEST_F(RingsCube, FunctionalTestRingsAutomosBandSelect) { + QString outPath = tempDir.path() + "/mosaic.cub"; + + QVector args = {"fromlist=" + cubeListPath, "mosaic=" + outPath, + "priority=band", "number=1", "criteria=lesser"}; + + UserInterface options(APP_XML, args); + Pvl appLog; + + ringsautomos(options, &appLog); + + Cube mos(outPath); + Pvl label = *mos.label(); + + PvlGroup bandBin = label.findObject("IsisCube").findGroup("BandBin"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)bandBin.findKeyword("FilterName"), "CL1/CL2"); + ASSERT_EQ((int)bandBin.findKeyword("OriginalBand"), 1); + ASSERT_DOUBLE_EQ((double)bandBin.findKeyword("Center"), 633.837); + ASSERT_DOUBLE_EQ((double)bandBin.findKeyword("Width"), 285.938); + + PvlGroup mapping = label.findObject("IsisCube").findGroup("Mapping"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("ProjectionName"), "Planar"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("TargetName"), "Saturn"); + EXPECT_NEAR((double)mapping.findKeyword("UpperLeftCornerX"), -141593057.92723, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("UpperLeftCornerY"), 141593057.92723, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("PixelResolution"), 5899710.746968, 0.0001); + EXPECT_NEAR((double)mapping.findKeyword("Scale"), 0.5, 0.0001); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, (QString)mapping.findKeyword("RingLongitudeDirection"), "CounterClockwise"); + EXPECT_EQ((int)mapping.findKeyword("RingLongitudeDomain"), 360); + EXPECT_NEAR((double)mapping.findKeyword("MaximumRingRadius"), 198012526.14923, 0.0001); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("MinimumRingLongitude"), 0); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("MaximumRingLongitude"), 360); + EXPECT_NEAR((double)mapping.findKeyword("CenterRingRadius"), 169014263.07462, 0.0001); + EXPECT_DOUBLE_EQ((double)mapping.findKeyword("CenterRingLongitude"), 180); + + std::unique_ptr oCubeStats(mos.histogram()); + EXPECT_NEAR(oCubeStats->Average(), 1152.2840236686391, 0.001); + EXPECT_NEAR(oCubeStats->Sum(), 778944, 0.001); + EXPECT_NEAR(oCubeStats->ValidPixels(), 676, 0.001); + EXPECT_NEAR(oCubeStats->StandardDeviation(), 1054.3443835915498, 0.001); +} \ No newline at end of file diff --git a/isis/tests/data/demprep/ulcn2005_lpo_downsampled.cub b/isis/tests/data/demprep/ulcn2005_lpo_downsampled.cub new file mode 100644 index 0000000000000000000000000000000000000000..47b5576b0525e1458d41b1b584bbc3937f864fb8 GIT binary patch literal 262221 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≺NbBPt*12dVq3^(`F#oc>UE_4G_{5A+Gd>1-4XE9kAK zxmn#Mcwkks%%5tl+noM-x;7bXvw(Ju*|oEmkv=>F^{fgLLpie9C6LwX?koOcE4^Y} zF$!PGVRyDjjAnE2udtQh{v3a~4tBi)YvX*k*5-dN^|9aQwkbUZhR zHdi&2>zrP8d#jPP0i3y*ec5gZYgU%Nu%|GbfKvxgNN8O(Cz?&o+-5~{4d{3&J3HN= zeA3BiVlgTXdDBa{L@l?DcR(};2nB`)f(N1gUN6`FyAc`yKG-I5WPEEVH zC5+6*`Oxg(FR>S6TEqmS&qQyIo*g|fx?yy==u*)IqwNn*K0N%8HTr7wj+kb_lHsK0 zLu;$EP}Xy2az}@fDZZrBnL%A|&1^A&>@uI)F5v!`GMDB7QOzuGfecyB1~QuF+_!Z& zhEJW3$rusNNzkDF_Lp`ydmJcGX3nrM^JFKGzEbeYUoi(ChlAY2r9)A{rx3N?4Kn~k2T z44h#aZ6qArdg|)}>g+V;$`O1m1`&P-^E4OVJfQl5{7+Lq&_@P{tU~k@E$Iul@s1qe zL-oNaXTj)s9IriDd<^w>inc&IKqP#mm(wFS%c9yAxcpbJ_?MY`JJV&?)e`EP^-EN( zAILjviIXeLrWpdQsb~)aIU`m?yo(qSaZeww(Z|7=jsW$u#3k_qNW^R~_0PFOKd6E3 zDld~hC-6t$S-=StfZ=!xR#G*vQ!k@G0s|UHoh_*y8y z(OPY%c8*FLshwvM2zpJmjZ6wJ!Jv+D1wYbV4)i{CFUtC2ja}HvXdTG2iVhm~M zX28s2wlk-i3(e^;M!%WuEX&$To<1W=tC4O&ru&=dlfvG6CX5_R%zL$W+F#lsvc`Qp zH*0*)Uz5Inj(Z<8^aS0_C$?^-GPh8vS{p5m?+sxrHTzj5?H6|QcqFr^6S7akvi)p7 zwp%#?Eb#^G#7mgIR!%d!g*DNvWPV~UGILtntbTS`C#xtVcgk%dnKR5fZ_LOD$(7d=SJ_19v)pGI(u}I=$u5xA!oc8CcCO?Ofb3NKPQ4jRP|oqM`_*t zbj*8TwZ5Q|)rb8)0w)&(RystyhCeR^7gtkMLPt@RZaY9_nyH@4kK|Lj+Oc3oJK#X_ z%BHd>s}&4>dbyR3w~la8ApAk^Jkx0mzH`lfZWjV?U+z42iZgY+1Ob{McG@e~tXP42TgSakpCRRbSdsnm2j;QmavLnkP8ggG@-&*4GE6;* z@awkRjXrqhBW)|*UyT~ri=4ecd#jBiKc^0q4q+?8#yh{#-*DGb zXuHVs`8<=}(M11}mN`DRr+dFM%k%~5%S|2Zz$CVkZha#6K9$yi+ImqlwA65HIrO{Q zP_q7HuLNCbTV}00c*kpUMmcXUF_jEHIU}fIV|NDq>V2~HRW}Wj>Oeg6Ht0|xJg7h2 z;d`yFzKMGEm!2R{Fwi})DUbkmZ%RZr^1@I(oA!XtsjYg*jFOVRCJXg64M=X>WR+L@ z95(GZh(Qf)tG5-jq^jGRD%($cr;mwf6meW{sl9O9s(j4r3!IeBYrCj(#_1yJ%4_Pd zcSo;7?dun~rQe6?Oi2HC10|5<)(7L5PJE{z7jK}4EJpR$$Q&&}VRnHeWq?7yNzH2N z&URnB%fX~R)-r?YUPh<(HSFLJtlwNeq-O~f2z;wo*YbGB)FK%v9@|r_{N@T++p0!( z<7)UK3~f7Oym7&3ZO*oSw2wI%2pPdYL zIqjRbhk^l? zRbR=K!lC}xbB^1twasi`lsB50o2?13#}7ebUxS_&cA9bK<4^!q78~Fx`_S>NvpzTf zFus8Y|I^rSF1Oa((T)+4G~>A%ISJu z{Z}THCurx2)AywDK2X`_GNUyD-6~9!eGF#(9yBb2_AOYy#?hZ>N0}mmS|+^`lTsbH zs66`5Fj1|U?HUr9rND&mfj%~1y4$0YQyZl_)vHdXAE{Tv-IGS11=YSVhR^^Tcpj-Tk2T z3!Dt}1VOomTINsCpPXQXFW_bttLkK(+uklZjG}apX}m9pvr_cF6PZS{!j1F*g+n>HixNLd5g5+dhNimKxCk+zD6sf9r8Z&mNKP}m-n2d z;*vb2dV`I&^Bxh~f}Wx$(`;k%Q4esb`r0M$x|$}dsb?w*)TAqT+9qOt6qEbUa;oe? zb`QwsA{o4PaX4~MJQF9W+!IiwHNdlX5hXt`n{~BznvYOp><_;Q&oYLZEvcU0!^7oq zDxv}Dj9(sg+KCS$k{rGjealp0?{j$`JJ?OF-I88DbEP@lI$jiE!Hg~seT z3`QT+b*02D=NoF;ez4tgRw?sXctfyQ>{u}W_p!@^dBTg$4|W~di9Guk+JN2kg~P-? z@kAIRn{3Hv=v4E`Fy|p>ozu`sg4!hyJ!ePMHGM#0k5Rcxi^k-jE_~V-q6eSYK-6PZ zM7`D(ebqv)VwX50o}(HlNyVH=HlKmQX9QO;7bRmJ{CEcaV?ydqtlI_DD(XU1&$IlpB3S zC#@-6&l2|_8js3qwJHp&GLWdK;B^8cnTpnGfEq$a+Fxsg3g!}#_N8`;dS>8->D(>g zCC%x>7t=8wR!Q7-Za=TGwg?5t0Iiai5`D=5P@*iHUv1Eat1!+b`5TH@mh6&B_k%F^Z@fRNnq{u}i5k zGeAPG!Y}LsqsxSLa3FVn1zL$|>Rb1FZ=zODPZ78iIDy_Ib0BHpy?z0;TuObA_AA`S zNbGhQMOct3-W=wxup0wznx1;P8xQ#sPU)pwq9(Xy(WjQ@IudzDP-E>-U!se-&rCZR zM68eOBpah;Y{&N>LCQ~ZpUT6s4TiNJg(`3ixaU5);T81ul3W@0*CkP~wT1akOgG-t zI{`AC%o_}**BmUWEhxxrET2r3mEVXr&Kf$UUe+mk#4&WCr_oCsp$6Tzm)aZ2>)oB4 zA}!Y2uExj&!lX)dw`3ybKwrgZsVD8&OA>w?d5z1B9|7n zZIevQ-18@zmd(x}`y9;KbE9#1d1wjTakfzF&`+Vaq2l3;VLN2QK|c;H3O6;b8a2TZ z-vz%4H4OJOhFhax2{KSAQ_J_lfhD{z4p3ocqY*7Dd%*YE;;>kZs;eyusaMVv)MSZ3 zalW9o&2{E8r(K2psNy_y-izr>TE|deHv&y*B=^BPwiI!=Pa&#gQ)b(SRHJ6ZOn(#_ z-H4t~Q2WpxYcxjHZz>;16jyS|8LUyJd`Q2(JEs*lG`& zzXiScU0EDXYAgu(2{LEyq6Zq?=2f6M3A3_9$zeRl$B| zPj$|UiE0ngH3F^vVpKQnn0JP9H^-4lFL-b0KP~SCEJG{i`K++(L-4otOlGA)KJ$W) zR6xs9Qf-k_@Y;Up*E^EAm%CNHLU2A?v?cVOL(oI^0U3L!x=?fK5Y4BV9h-o?NLc3< z==OJj#onZ5E+T9H!nI{b(R3B9dz{X8Bl%+#$NrK&s1oX>Xfjq5d`@Xtf%9rMd|6TN zoUGz>G>(Q=2eSo>gq|A}>>+Z7*G}t!Dr^#Q)`3bAhs$oKcl1C}Tf$q^W)hqPUNH;S zVir^IVc4ntoby|l?ECb+skJ#?YHtvn+$4CJ)Y?h7jnQ=Ot*Gn6VAKb2=7qq3e^>c9 z`WjTBFWoU-Yxu2;+I%q5+hDnuncu!=N5DR+!9rrXmCVigr^TaA$P{Gp*K#dYA_{Hr zW3uN=F$)x86SXJ6w2^?`Wq`~^Bwbc-RC?C|kvagDwu<^rpRin%o=2$C_JsV`@TU)cYP_^G!SM5vAJ@RyQaRZiZy3@dUX)lBa ztYp^$g)3)VqHFDGJU1fE-_840jJ?4*NxyZ``Q2#`kG4d8giqXswP@pARL6y5B{GM> zj%^F34*o{1$sIf%n;_UfI4)EtJS?0hygk%6wBLMg{Ay&h`r5mk$D)c_<$mU^aIb^2 zMxlynDGH+U?g{o%lk8Il1f)FpM_zi}pHXgKqw@3@SDD0ygTAE&;n+;aHWJ^vivL#x zzsU!Fqr~snZ!oAw3UQN~b=)3m2l(4au@;Vh8IgPs{cl#H`x(_MP8Zw&?mj!2qbM4{ zR;r0?DLOc#?U!~nkfEJYLraiL9ptVglmk?5`nU>iv|0vEGheN9-+INg`QA>VV5VFo zrZ`jW)^-aqSC#eJ(j}(})g97^YyRsRj;$7Cvl zWS%%gylQ1iWdhdPX(= z4xfmG+boL*Ef+;pJ*|C$(}^wx=DJHk6MupANba`e3LD4>c~2Zfjdf2nLwS9SIX0R5 z9vq+;Jz*|t=Q8#@tOM;eiLM{XYh}=jWI{DE6Hed`EKq6Y_mt{^$lh5aMb+DN;d6D2Z} z1$23gS#Y};B)h2+>~@-olISzoF}|E}7*=(m^NwtYAAec6}= z!874w<|}5uELKjhpjJ!o5(o#z2e#@VFyrf3ubuZRiiFOv-ovO#yWtN^vd$tA<*c&1 zg4rjsUs$Kf4V$fsOpcqKT5yCf#d2aJ4YnFb*7^orO;eDR_aX~F?UTQtB~2)rpwQk0 z>T!@*ngY(%Su_{l(>uTC=Y*oXlh5vheoD80rJKzsKS8fo-tDSZ6Sav^l`fNE`q3k* zG?P*WX6tTb-)C%}3Tjuu3_58C&=xjCFu=qZ8}^`~E1RJ-VYEuuOy5Ur-5k?p`{&7v7(AaV^lM z8ZtAT-)zp{8RxK;s*n{#AmD{yg%s>q1$QSsYkBs?6eZ$TsV!Ux@7O4dTme2*6~1Aq>;Z>+2YqXL)M$Cog$xAy9{}$(j~HJ@{b&r9Q3##M z1NiI>@J7d|+wEb)AE47%PL;bs$FGa;QNPbX;g^g^_rQaWp;!Jz{f1^M22`{dNbC(F ze=hGoPX_(XdF1pKA+bu@Dka=^3g*e|@MyzP67PgH_*74-&!O|ZN#=UR-7TQ*f`CV} zgJ&sPfhPEELTc4jrk4lY^&nI7VZ+zONIN+{SK6@73gL~x}|{p9aL>E zT~Z!&1{Xwf(UDo971^Vhc+b9+${;fBP~g?Hn%mzyKZ@$?bK5}8-soPGhn&^cC=<0f zI-}*{y?jlcnvIgGAX&VgsKhjql+PJY#C^rSqXyvO&#~-z@wv>xy>Qj%%y?1QY_B@R znG6>t?Nde}Cab09d^CR7%xC6Ny2P)X4%Dy1@V@Eb2oG?~GU!ZN69p;g`BUS2%~2_B z(%R~I1Az!bZ{#%<6U-JtCwj(*-{1Fp|L)z>cirA+`;a)gQ_LT+9m2cKwoX!}iACP! zz}^I#BT@%eYvsM0>RXvheC3p4YFh8y5zpll^|g1M-Jk`$u=-UJ8O~i$mQ{A7UE0nC zM^*(cVw$)kXQAtR0`K&gYSV>Dvo}i4QPKecT*y?~09>%J>>0OvO0Fhze~Im<%L*vA zW5rvxk{04FRFuuoW#1F6oweq*aM0)oYBUQxbOvn85OP-{y0Z>&UK`v@OjOgfFZJh4 z6UhS6`XhaC;6NaOe$QPlTR8QtO6ECZjWNV%V&pfHK_jIy>KZA`RMvC5vdruC(w7J3 z=<~cG>WsXAs=TWx=lllt^3dpOuCcZ`1Jyq7nzl}V4^CcPzs|(JUc2Q@WH(WN>cU;_ z*LLE(A=vCR?iyNXB0wiP3Zl)(#U91<;2lfo5|62mz`kFj?&!nsce7XL7c%b@kxpEL z5!sJMHg0#wug-S3ob{q3)8Zhox@GM7s|lai5N&)c zP^GT3BQ6eSoh93lhptmcUVvk*aMswn(Rr@1N~7e?!+wrobVfbdOZJzuM~s$Z@wqX~ zRpaS*uQ8ilMLDyL=+DhO{alVzXIK(|KrBVh_wJX9}47DY1miolhLHFW4dHvKWB}W~IKBQBAq- z)b2u+R$g$z_Herx{BpqfGW2C|RcxVPfzT&m8NO-UHItwt^F%H6JId(qU`WrZ6f)A8 zAgbcc9n@rZpEnx)z}MO@>?gjVhRZwRBXOABI;&7v{bFu4-hnh`HZ~Z!&1q&bbAr*{ z=xQvqz7Pt{T?2T<%;m$Z`-%QpM1};FBRXn_Tq8UxyezypyeC|RycQ+axwo}gkU+=#4XkW3 ze$p6Sd}HP~159u?`n~tCYPCTTPp}6q7uu_|SiTM1%^|wU8DIsQ**~3+uJRK2T9n&U z&4agya%S2+?1uJbJn^2H1}*dp>`}okW!H5U$c$hMQ{kdYzyO>9Db1|40*jfZuhRCq zG4c}g>IY{D6)TF^nM{lt%=Mc@dJu>L=X4X_IXjqG@*5MvABX#fPlU%A747PB z7W`U!)QHXCJR_Jw%ejxap3345TEp~CN84oo(^YGWwadz8-*fsA7e_=VC!^icN^kvT z^>^lo%joU;(7FA}oL`b2ZyFrZb>cm*-PYEe+M+J|Vrt8??2J7rw!#G_p%-imDz<@o z{s-AV7pQ1*I?zd~qs%X!!I}MO@3!YycZ|iM+`%`oGPW@a-S3&Ejs{1?wnAe+A~s{} zso3tJhv6jFeP^A#iR!8kSt!cOrN?N(-6&H!*UY2gQsIZ8e&I#NQ!`}khL?*#M>$d? zAU}R0N?4J`#_+&!On8r(O6)?R{e(IAIcPy5FAJG8H(G@m=#W;%?I-k1=AI_r*X|!o zVN=QI?U|@!P{QRP+j?ZdALxu8f)OTW!U~Fs@@p8_Q=ox0m{ITZm5)krQWZfDyOk-S zl?x zNHV6UPM`pDQ1;~o_dkN(Z=mMUz1Bsa%+noE66xr+;;@aP;M)tp@U*}m`daN{uK?NR z3z$!Esnq@z6+DLY%xwApOrP?S~TFtDy))l7>6VCuu z21YXk?o`9M!|ssZ?1|1d^k3QN$r{lK#O*S6P`Wi2A-k&ejai@Fg|p3jW^HSamDYZQ z+9DFqDnKp$2(B`js)#c2Pq3KxOh`kRkamFfHH_a^<*AOK^kcj>AR4vwOo6ky!G66( z`gn9EhW?Fq#{Ek+6*bt=m;#M%5H_|5NZ$vsNS&su%H*wA---s#C_8~&+}=gczFc;I zXY5X{NiKh77i4v?<~H=6N9}pmE%RHWYFLDhgbs%CgntOPG;W(4>`z2S0ow!P5NSrD zm;FjK2j{rR{_z>kFfg^;bc$uk^+}oY_ra|_M!S;@_OQJ-94vXTdWk+Iv)fx81Hl_i zkKTbNK_v#T5(_}8^M{_nFwk6y!{2+8F)R84aQ&2I@HA`B* zS!v<%YN+e(GY@tj6#BB>8T|G(Xz*6zsUe-+ExMLHN`d>710TFePri(6N(LhPOm+bS zXz5mAHW-8EJfS*I9?V1?Qm8i1I&YcRwz02rE?MOm&xm*c+P<0TwLg3C#;XSKC$ou+ z@+cd-!ku1)UtNG&sQ{?@X3+JMAjWHn(7s@HeW{}NP@c!J!->8A@JQLbAQ2eLBzlZq zy9s!~Iq-&NXmf7iCFfKouc6jUFB14Ua6M30@9X}>o`-qPAdwEPWt=xw@1xbHcSr(m zUk0t#Wqp$VJv!CQULNr9C{-VPA`b8GM;19mr?v-`PYv|4?@&-d_HE}F z#9AZk4TxB0lwtkZsd~doXn*6d4-^eb9`=0SL8H3cTMgE6k4lgfoS+D^Y6iIs&Z7dk ze4;bnNk?2cFg$P33f+OTeT`OVEULSab|!WgRj`s+PtAAcC+z5(NkkX2SKD`Cq?5hzw%s(d5n{I5~!hgBhWu=>CbnvKB`cy)REM>CNz8#Fx-J`_p@K6f#k9H#oD@z$(r2Sg_E2(IT7agiDAru;#i5Xso1 z@Ut2wPJ)YNM5&My4rd#C+dl(c8h}qtcc06eVw3%;b;g(;?uo9wLAZLjSGcrM(;P-8 z?bw@~6XLAghMqJp9D5tJn0;y*`Kd8_rO(`)?h`p)+_Bz=O9j_P-~Vtd+Kc`==34M* zIDy&U(j8ayq~}@$i})!|;27*3R+B|L`-xE`lsk5A%-ooTF`Z*RjmaMKb4*Myfe~Y_ zvGYg`zk46}DB>b)$un@aE$lovs&(fXBj2cWTp#$4Q{63c>1tzpepUlWWN+dcL-54TNZ{l?gs)kpURZL zt>w0s6WBE{lo=uycm0ZUT#QjYya#c}mP}EXuOu?tI zuh?PPG}tEiLu|R2xv?!n9~<+mt4?!p!|n9?9leb11(_3EC~lW&Wzd)&XqCR9#D2mI_8vP_9{)sa*>^; zv)K3C7&d(n-al5Pkl({yHD^zHO}fLKsA+qupYXAs%7k_Nj;Wy(^W1ai4HNT7dzljp z7k6IR_86<0z0heP>N|OCVYQA&`uB(*mF)!rH}uZhQ`y!&z`kjnr#Ji|Zny)r{os1P z(c7TBRb!c}^#!|yH+gZ-CCTIVQd4A3(GIlhB2TE94F_L?{e)rh5l`R9-qdUVa{xwo_FwdOK8Zf6HjJrudeQ8x~zzZ?gu7z5w&5!Jpw$aYz| zg#Acq>{j-#PGZ?!t)VxZ>n2y%#0#eY8E285jSAIW^ntHP&3)@Ymy;PCWr$32N1bC= z%{4loTI?HJ2us}99qKhkK^9jz4xqg6%hPmE4be$^OrLSjA9x|lkx|N^XP!#5ong9c=dssCf3N+C^*-gXvoL{mv}zc_^{= z6K(VH-@5ea6Yc!=R;v&Djaxh4^F*-2;5yM_yj%mL_COmISRELl*YvW=lc0iza^2Ee zf4z7hsGX%Bdo2ylf4i8jW@)toee`@rZYUT;hjhV zV|X$7ta}%XY$ZrYcXb0cEE+uZb31W(Na*uWFx=jHg@$n!PZxU3 zd^n$co6-KkTy3=%=jZ?>3~df{4JqM7@1T);>1sTaXNWchWTTkg9kl*BD&2A1wJG@Z z6&R^}@>g^#kHlwW(8-{~%g}kXL>*jM>@-V<%Nuj-wVtPSR#9MM^HeF=p3NvSQn_F9 zM2pf)#SQ2=U7jVhg()k_eMH|sLS(XUf=R|2N6krAL;HYT-`NUl-v#y*lJ-d||0W_kIwH2P`nfv36EL4cy&O5RX9?O)Jamj>Iv1KK?romf+}G=n(D z*`O6o*t4Gyw&ojtKB_(iHT*`n)=@JDD)JNN5%YmL*y?Q0WheLnG-Rzg+vIcz7ts71 zrtbW}k?X*HJ%LjSqv@GWjx@om+prsDELAr%*n0|escpGal5X-e-t!JVHbfOnz*IPr zj---P8ms&vMl%DpbSv|upviE1FNvYc+~fH$7Ljyd%jk^PyVc>!PNAl04eD5qoHY!l zf0B0vR5TMB*h+8&i``^&|I1nVu|Z4uhd3yIS7%}0Lvji++m>p-!+qkdL+N|Sd!c49 zT@*(JwHRc-oP4PccyTjJaUyvEyL(n^yWF|XbMu~&)i@Q(8tNT95}V#EBqoqmpE<78 z%zS3_Fa{bOjnn30XSq8FeR67j41MZ*6rmeY#hh@b$#QlAE5_^>ejLmiDiQuId@!^o zSQ*~9V=zJRLhPE@da*m$U0ICXm9JvkglC(EwHf^U7+)9cf<#R@vDLm|Jz-b=Nh_Lt zY0BCUX0_PtkA7;U*}zOeAHLoC%2~`6j#0a1Zuq+1usA!>`BcHPYO|*x6Hi_#r7c7! z)E{p31FE0hFlLLr@!B$!-FNgSdQrK?8yQ%m)pAS0qXQzyU_&B#lwowQ~!vL zX9k`$om~y9#3F}!&3>1(uqlD*1Kyga$c9(dqw9)i^57{T&1H@$(THnHM zQJGrIbylK$OG4~ywHJhQhRo1-bC@%qv;7eqExCNf)8P(_zk~)tv0LUKmOo<8RwRm@ zBXEsDynhF3)h96UyUeA*J; zb%y)`A5KL7`jPtt70hd9jUB2BOhObkd&jQpXW;$)=?-c{v7Qb z5bfkI^yn45EN&n5hRJm>d+NHfk8TvR&m}OB6l6UMPOudC=@yWYh2)uXs6(!T?{uZ3 zJVJL^nYn8$>X5h0D#gfQ*IcLf8h!-V`kUD*VQBImLNl?XxcPY>!7)CTpWv zhUu&_xqXD%s9n|1vX|y0I{xwA1tr8Au7TU|n;sMj~P3MrC9}Q`5?U8yU%diupwBEwotg6T(Abd5rvtQHO{Gq1P z9VF6f>)8Tr^d_p7UB$X8574PvC~b0aA11o{*t0jE%8`MJ)CVoc>Bv52$H2$WT0Q%nadyc`Dl559_k$DD_&J|HUKuN~|L z^bn`mf7=CAdI_F<29#(h)5$B9!Hwk^O&R4po}BnKv9uoa=m7Xc+*AHSMA&dJu20y_ zXRzOQCOZyS+0U%6&Fsb-IF}kmExu|PbBr-&D=Q68L95K3;LoqAJyeRWGc<#OO9Lo9Ej+VP}0SvV0D^ud_fD zVCt#EQvyq~BYQNav}9HF0~}pTc7{y?jVnWhC?e~%TY=}t-Qmu)fVu3Y+R=Gr$NrsF z8I&^1y=vZeI*ebj_EYAv6Wrs`stNp{4lh=VzJ4M~iwUZOo7sEn24r7nj-Ay$XeEbb z>Ti8#w-YEenRy?mVX%e&ho!TCa`Jq-cwSAi*dO=eF2!ZhV#O)0MG6!vR@~j4qQxmz z+}$Y@cXusT$Zqob8~J|Q^PLDctj}L6e z1nY_2!P)j-#9hXRCJjHKmB!ypD7sl&oNiRGIh>vLLg%FWHr(5Jr7uN&c0944R?}Q( z*WwPP?}o4PJ(y=jFzSnu>{MW5m=m_8%K0^NCR#7t&aQ3lHH+Z?R#ZTR(&$RI(wNV2!yz%&*{RMJT8I^Axp@jI#^RL_2d~M|m7Y6Z94;$xt>~u8bis5RJ z3UJy>!TY=mE4E++wLxSU7;ik?b)jf6kc7`vy1l6U&qOM^hM7%28>*<4HPgDcBc0KP zcaQzXJyAEJN8Q*#;yNdcs8_LlV9{&g>^8-*?GzJ&{jeN=qCRU5AD|lZgi+z|_}TA{ zwx9?_PJOo!kl=8O%L+dgZlBo5jq^Ru_8a!>AZ? zf*o|?^=~BW{|f${*-b^4oIJ@_knXGpKbP5I4_Nq<=#)rdnBgHeHz-w-8}0XCA%lpg zHj#T^=&jHt*8wqZ!9*`-bRAsy^5K524yL@x`OM5}2=1=F@CBH4UqLx9IxFdAj^U@8 zlImp&ldNMPg(Wy^JEMxHYOFSA;1qXEdN-pJkF%L$^`!syQEMtZe-6*%*e>C#lsnqN z%Azd|71pTp2R8-CAz#V(1Nc)GyXc=X1C!{X>E1 zhRBZaYH+FN_G>#Q%zG1?q2}lXhOh(7I22tBYS586(CP3e_>G^# ze^3+M39oS$TA3Xs^4N1mm>(+|5y8&CkhunNcb}vt`~ce50RD0Huu9I%4nMOPbGjt; zNgA*O9kx(mIxrs&kMrTXU35CQMdADu=j_Fp`xbB%C!HG)uFK?su4W2z_!+P-*Ki%R#RsFQ~SSzRJFm@VWj6UXk z^JlY%InzuB`?a@y97KL5y1|X$HSJ(y*Fe|N3cY=OvxqrBKSX`?liiP)3K0VzLHrx? zoh)IRCc2+tp4_F!{|of}z0;a`Z#)sP8|~jXZk>fxF|EKT$D?@4=hou&W=G@Lo%1Ew zKcLv{!8G8m9mEMUkCWHQ?L5O>^eLzDHLj$En3x|%J;L+az0lFuLQTKO&c=K!9jN>& zrx==ydU#Kbb$2=)=@(=C`64m-z0;BkZ!0syL@PIU+Xy^1tNh0yp6vW(-7-?>ziA7! zptjr?0`GU3vyAuigPYR%-MVPLrn2|j@2rK^aQhGD!p*3PTiQLX>1JgfCC#rmaed3& z@S}AQ-?IQ3tV5{Gw&8|z#Mo#aw3fo|Yi({ao|t3plg?FlYPdK#dKsLzlAOi+aGd*d zQ*RGvg2mFE>bW2+oZlj_pTSAT+mkJk6I=ktiq*Ivm5Sb`ORE6yawm7!wD3oAbn56M zI-MqD_~uM!qD)DSqIDXJZZ8$SNRya90!;5eaAoe#m0)P^V{L>Q;wStmroto)iBrUk;uzsCI_XKV zZ4o)#2z0FjKbs-$Z;@Q^$$JXliSNY~ulogK*>en}Q`L4$9FACn^+z?@x74S5=*pm8)3 zSs0$_e2<&!pY)1{P_0&lYuASwKw=j46yEk%xC~ceJ^#&5yBVChU+A9>(~0ipV>^fQ zp#o1HuE&IyD1NJz)T(%NtZ_qr|<(!{) zek00;qHd@JgW?5~k*m1iex)*LZa-qSRTqbf;pSaqtNw#N6!t(1coZ3o|Dm<726LyU zanEREG7q(e*^NLkT9YsSBrfW@Z*k{1Z>5K+>bF-h6p5C{K zvDeNuvdj+t&kbr+)gXB8E@!e_Tu(?15QO&=T~~0L-12lao^0wP4N{ziW~62+697l-&y3$ z;d`IXS6d0*+$Ma48|E7nEaQpVZT2(xtl2ETRfPHBNh_s&g|E8a+y(!AVrW??8$H^O z#&~P8{TuW3L);XPteGJHT~Rmhf{XMX##I@63^jZkV#hU4GmV_Xdr_ZAokyoT#oE9u z|2eVLIo#E~LS)ahMmg`$f(ULB->on6#%eG&UxxeAn|^^4Is#^2w#YRw^tWV#r4bJf ze}iE%Wp%4MZSeS-WWRB;fHu8lE}jjSkGAwk0a$F=`RvK4G3JrKa)Ok#j^#t|R1bfN z^58TY-nyUYLsNS$(C3$@mOG1D-ivdOMb}>mN2vF(nhxVG_5*XR2Ph^oFxgEfhSAfX zrBluw%^I2SZgcW5b*M>?QY&&KdffAmm_lAHACX_m)8qrv2r;GDNtl%6#unW{X8OfG zYK^s?TlbtAkqNPq!X$CMB*>}dchXj=y0nkDoF-KDMRU>LNMoC!I7_8O8Q)r@D!BUw! zXQm5jWxuBrug!d=yPcA+xdcbp{hYiUXocSr583D-GV*(A?u4RXj9oeBD~Y=cWI7-H z;druKfViti?YsqM`cha(571}%`K*+%sX)MBxUMJ0y77$HnU?-TkMw})+fDl(wQ>O` zJ)e1xsNaI0;!EntMDpZc#8VA8B6Z1>Z=FZlaDEBE4nO?gd%V~g;S9&~ z%|x&A$ujUN7(iDVZ{#-?7-P)ut!3tAy-P?5PD`v3EEvkD?bT1AOwMj)vC86^a}IV( zaqBm83+^xP%}KaaueO%an+>v}=1udsxdZ;oG&nQ`%#Fq;4IN&`8KGWD~}t z2ib(`;U--D2TYcdxHDD2C(99q2ZY(e95}V}#pdD#AqY$0hA>*RrJCq7U6bZ#Lh+X8JN+$J*qN>Z4U*sZUexWdYuwR)o{o=ad2vy;;&9@Tl_K|s> zmtq5XjC@yqCvTM($mQi#(sR)vua)w=M{n5%y+#|)_}IUwau-DV@%Sq`Czi_d1n0L% z^a+}$S9DG#qidNv3<4WyhIh#crj4iEh`TAA4oq`8IeZ45kCk}`=Yv;vr#4s=t^-@e z#FaA-J<~3?Cmf%@?XhN07z1CahMrI%ds z(JC1`?J{Vg;^;b4hc^*zFVNub=V$SU9fhyB#Q7Fp`at&**{;65#%hD_Yi_$HoV;~p zh!XZ^YcHCIJ)EA^_?%@kGn<>tLgqLeH<#%J@l>y17BoHPYh#sB&S;9W#TPs@vX~8E zEsnK1;&0y9-o#hZabEsnU8MS~2a~I|wTPIj1WtCC$4;>7^TfzQ7=X2@b2pK_EAj5s z<#ny51}@2zd?2y(Ga8TuV9OOiW`1@WbI&w_A#sw|eU;bR9as8cpfW4THt)!P9{lXf z61`c7s8h}jw>#C$SF}t;nOU6X`^`@VZ;x(p5Y@mc*L5<1Vf94Oo6Wgmm&7yR3ePkN zzotK|_Bcg7MTcM02AO%b zk3yAS$GmU&dCzj=O=X*X%^!J&JNl2jXFbiLX3GEG&Chs&v^TrkkDR>JEYD!jMx3hl zBjzV@R(GQH5UB1!X53q-jy zHB}5IMj24u)Nq=*3P+`_%1L#-dRXb8oRu3$n}s(xR3&H9^bGf}yv_iAb~)_y_P1`9 zXdmIE6p*hdomEpQt=y9b$Ub?y6vY?U#&6(_XCSwLC{!YU_GVK3E$;4}sU8!^yX(=# z4<_eL!^dL{bFkXrM(fCB7u<^OLi(7gt{q+oZ}KN9=*BS8lko54(Hy)R*Fo0u(RVJP zr%wQTis+R%5gX-MG8@Qk#CUo736n=jQXd^_?BoQnRbkMEf3Z*e0QA zp$)oYTah1OUX4MUXMmt@<#graqno)Vok>YhG7qO~lwFXUWg@xoZ!-a3zma%w-oS-( z5)R6b&8230dWt>96lO!Cjjk{N9)TUWq8G5fnyHwrE;p;22h1$|%ddDhU$7ccm-eM!8c$pwq^J5Hk+hccHUs>! zG!^`CGTwb6tRWt}-}61sAiEvlqw1haen>xf5SQ&ay!zRE%2(YU)l-}zy*3u{k~RLi-cz5adv{tR$r@|*fVf7FcG)V?WiZ)hem~7h2pf-+OIgy z7t~s44fR)gec0v!Bc*x3D6i+xu7$2>Kk5zj$$CC+r%w1Lw=v7{9wmLnxA-02fXN|J zD^GV4xQXi7-#X`=WS}@@!&hL&8&sFu=zd1RuzSai{(=hWTRZ{AGIRF8oBRsLt34Rv z3Gkw{)P-|#{746X;yfG4?%+%|g6eP|+C`to;B?}38EqViIO(~^=Y*R_jz#AQmnB1r ziK|gx4H3G6H7@XEjvb}V)3|ecZ+Qxi?@tC1QS~g0@T}1v|J}MGq}pA^#3G-CHX=Qa+8By3Z6P}dK*T5 z4X>m7UO`SfQ^ZATZUzuG1-%|Ia#_R5m`OehnFa9;# zTN%;5*RU3u^@+1dMk=Gb9?+|@Ata4)U%#Lq(f8w^{sf0iA6oif^tJkZ{jvU#f2(RN zHFCpJYRVYptCi$(kpf4jhlXh+fS^1xx|<3+2>QU(-vd+M1J?2_HSI5aC(ntLmS8`# z_-G1tHHHV<1;pbiGxA5^N>{e~(a_9eZA2wG4U{GyjMD8k z9&KO=C0%A;bO}Y^cC}*?a|~CA$tYibq2G{U&>z9at~-wIOmUfFqN;(RWyI!z{AKrS zpx!G4l06wMh3siZKeQh;LM%2D$FaIX9if)c3^(l0^j1S-J0n?K4-Cz$;l<&B(Nmts z;yiGR#W);|fCo5LxajE*?jDIuq;@<;l*5Qd}=zkmBX8N(uF%`q4X9jfkmZdEmdzpj+&MmuP2d+0@}(@S}fsrm(W; zm*^)?K6!v@tBt%_y_waqat|q^^c%g}TX83@Xc@$GcoP;C2MY1LrUJ}!8ZZ~#h{MV0 zSP9UYt$3e4@}v+hy@JE?DtFv=4tb@#t1f6ak##_iPOKhKw?ndPk z4|{$m@iz^GGsw*Q8x%DG^g#Rd0bmdd!O30AOI_B8d~lHSc!G}PE{_8CWU~y@nKN1% zP>Y*}*Z$x%A%?Snr{sq-*qyGfmYWHbZyt=Qk@hreJ)Y2e=pJ^OQ#f6s<(Q*jp}#d} z;Ustu1b?tu!i=C)QjBL*Mwd`RUDX%qeNbHVfD7AKZ>+b~`|AtY)^kZepug6?5Ni#M z?fBb2!;P??wb{%FnzqSkX8g#%S2aqI^E9J1U+sVyG%d3}YP9QC*!qE4@jtlz-J$k- zPmFaYi`Af0yiRWY+d2ZL;5a;ph?U*02GUppH>e@hlqPC|+IB7?aW#+9c05^f8Ch>W zxvB!lNHLI^ec+q<(e9Q<4?P<-KziK%28Hv3$_2wi+!W4gYmhn5xTtSq2Z}LrCe?wLIUUTB-dnnW~R5BF9k3JN97EBCo2vtG>&;fs)E^KR9WXbfz-Kpnm za?3P8S5tvHzZd%HBj}0>gK-sO>eUiv?g;!n(?<_e^Q??@MGG_@rthjq_UJdT+^cws z3z>u*9{vxE%5Cf|D9TQ;QQ#UAVl{A9YssFFZQ@K(qB{J5DpC~dp#zm87f~YhrkWZW zlgJxh;R9LkQEag1tuO@NujHOh@HF95h{GgNnnae1#I_0FNRK3+{6R_~*OB*0{iGkI zI>cQjX%<@%RLK&*$Pu-;`dIl>J*DPUS1CEQYQPJ`?mXr`hse1<$%;p+AHOj3P_j5y255p8^I$jm-32V$Y($Nr#b0C zW?T%HG_|LgFj`nj*JueB=r)hTf^HsL1#4&;DCqy(FU|<}f3QjRgmb&|=?Owk^g6mo)mG5VXq6=^KEb`S1m|uyxB6_VuUgJo zdW#+)>RE7M?qFx9C(8vk@CBscJFvIvD8jypO3TUVS2L>W;=7Lxx^en?ka13 zW2UC}>Q1N7-m=-j@rkbMD+pOu<1ezvp)z3@qXGIZVI{5nhq`Vx0XjGKmSlrRSpA9Mexw)%+~Uw(#;$7MXHDMxU20E1VynanL|@9pW(h@t4MKU?gVav5L#1F1ZwO8eZVbK)Ru26es%gw*i_thZ z%=>Zqo{5h^Ww;;dxC4JfdvcHd^D)@yF(>Q@?gZzw-5vM+taO#|DbcOv!JVKJ{(LoJ zy`uG)@crW{Bh>eNfPel0f6pH5fw+wtwlw#93O0q_h@J4v7HW%2rTOwVauJ-MkBQ5~ z25k7MDGZD0(Fd`?!cDP~lvdgxUd4Z9Hg0Ny=f1F7j2C@E0+m@dD!U)VQQ{(0?1RKw zDE`x?fYoH(9;ODK5<`KrQ`{XA$EcwJK!d;xsC&U&-D$@z(bW?!e zb_3g9=*$MgsA60U<7~A#S`gHt? zCYeR4n%dg=x%F#<;QVA4hm}wYbaEMgduMI3GT3F9DD?w7+hMO^el!s5AqUEnQFMJ@ zoU^F-`xAT3@avq2W^t-n6Rf@u&YQ)}H0CGv#}&g7bSj=PcZ_X#N9Q*_>gSkO@6vD6 zjs2nT)Hmtt^ey^qGFwBvIXUhpeT+U)@1~DJt96ph=f|&lCoV5jjDu*%n;GYb%Hu>~ zCR9-)^>6S&ykNu=iL1@cW*VYKVV~T2wppbDg=h+Lm(I>?_XnZ*!75|r1Y<7_vR95r zN_Y_Et=|02G2f7Tcah;=;#<1OS_;E<1GC7RR%WtX2N+5n?O*MsZ10-`G8u3h^FHd1 zN_{ZFy%Y|D+qDAq-4_1CxyyZ1*f^uT!9D(9XaJkRHfTY8x-pR(VyThQD6G%Z_J&pk z7bVJx8qt(0(N2&P_p#Aocf!ZO^1!CR!N8+HwuF`mqY~C9yibVZ|NoqDIPp#JR;VG7 z_CC}yWCfQ8r<2uQ!kMoc>J<7E%A~92H8T5PJoRsz`R&H^mJ zz}AOhxQnI5p>qOiuGgX_=8`;gXI12t@_X5q=gJM_&P=}E5Ty?!0mNgVbb~xsTiP$r z^WIYPd(Zm5_m-AR3u9s}qkVCK@$+u43MaV~WsE!rJ6Qm#-j>HG_e(esn!1AhxIcZJy!X{(>I(Ip^0)NLlZQ=S1%&!IFvn`0sP`r0H(?fnW$B=Q?@!!2f={jC*H&B*#OTOn;Oz(cf`_m*-q=xl%+5H{V{0jPp_wF`3t+md`t@px-?YGbf_)q;pUCB2E zcqc@2KmNXFLp$inLJ7?hx+naaP%YuRgbE3R5_%@Q4U7rY3d9GB1d0c`1+pjng70s| zL_2X-Fa`OszA;6wjJK|$jSaN}r78?g)gd%Gv_7;m^gdKnziKRo!{y`lD96Uitel2z z&U^QJc7jdgC$`Hz&h+#L5Z0tRc)wE-BuB?%=7Y7>T@?+Y6>AZj8T|`3-?C^k;;S`Y zO=p>T+UGsyZy`l0`!psE@!LM4A6L~1-3 z{43_eU&1eAb);TuA^)aiU6PNC%j(bV8|3}g+upldJtwvEtcm^|TZX2o3_AWkL_c+{ z@C=XBPJ#pfxgt9k9^mbnLJEj?g%qB#(XuF;9$7o7{9569^^5(UiRu=(YwN8KR&{qt z)M7T58IQ&p%<4|VRXOTjcOKaHtw-hna!ri=Z7p!;KW6#t%5){?>Cq-IgI&!}=#2f0 zxJ%Eb)eCm=q&XYTL|@=y1+6RABar%O)=E&6190w!qOP1~Er$2KoKEoqT*||6v)@}4 zY|UH+{w$m4sF>o7M!4Bl!9}(MeDvIK9bfX8Lao?dAFTgMe(FqIjUm3e=^fdW@UuRX zzfa`ayYL6^!}DMVtf|Qfc;vvE0>Y zM@)~WH|l2eH@2cv5Xq;zcsw=I;P~Jeg^9p{W_t5FmFGRU58X>VOoU~_P5W42XJAsG0kQRKU|FDjpkE+g z;O^JDfu9q;O+1{qGZ?S62PJB+HP!0inb=jUq=|HYS@gwPajhR4FzfPf7q!)Bl-q8Q)ZQ!Ox5D&2A+QaCCoQCpImir@;Y7EAq7xeHfHWQkZAkr9twX!bC5Q=Gu+7? zN>$^!QzENkC2)xTC=?U3fC#1*v!mbqTi79764Frj^_51;^W~-FO0=>kEXK*}rNN@iTzNW9K5co1q^*y4;A>=(@~{cvq*PwsCYMw`DQ(qn)y8Tu zHK=S<1}L4CSMpl~r(Yj{QESR|#VuJl&P<$WYqhnM^c53yq~U6+A8 zjE0GL67IT)hNBAJnaS|6OT+9fx%5a0_;MvXlPqQ2pWc#coVrsj<(;igmWK+b!C_Jf z4t$kAJ;%9E{`H6`z+ZUU317f&ZVOq&Qe@!!uu)2gU4k1&VIYYkxz zdkbd4Ryd9?9W&fBIs=EHr$P>4dh9;xf(h;}XAO=NpU5Z;n4BKebz`eNmfgi)iL2*K zYB%zj#^iP_xYYz05qIct3Uil#0cA*Ud+n#}8SM)zaW}otc$_&Nm>11MC@OlJ4p_t( zKI$9l&Y9e*A+r=%^bvZp-t4wXhiigh_<5uw2StdNqr}f>I+j}GvvEXK@BerrKk~OB z#8wY|0;tG%eK;9z1odSW+=gT$z--CSR3PpDN7^p^7M0~?d|_VW+Yr%n8b!!=m-TyK zmS5=Ne8gmwiNP~H>9hU3lJ9vfO^rSvGA#@pj?zVAIf|NFnUL^LU}<1_pi;mWC>&@V7#f%z zm=$KYs-0>EymD0GaJm(y@M+tEU)zJ<& z4;`J4vt58&x}NYCNJnn*cd-ySePgzKM3^$C;;wHheU|!2x1^_ZSjVJV(m&uEZ>7^x zKBdAm95G(<*;&qUhSo)Dx7N^&ENtA(9UEIZ;JjP8R|XXSaqp%6BX%gDzqEnpCdV# z&zAuUZvvV+5B^{$^cma3Un4n$Hu4HJkKc)_kt~-#of?o@%4e0Ks;lgm>q%|I^Pr}O zK!Nh&dv*s$&M)j!JIUsrId}wY7T&^D=_}3>Pr>`dz3whm5oMF~I@Q6B`yKKgEvyC$xe$z-e6%|o7 z+-0IPf{v{h*i~up@)pd8i(1E-9q+c1HszRX>)puY_+K13CiAl#Yc>PDPN0X%3Bp*5 zZmbWkAcM(dzjIP`DcKPEW(?@*1w}O>j2hR36#7sF7+vlfAzh@;v$}7mA(UHh-iwdq)XU&F`L=Ce){gN2Rc?0}tbyrJsMYb4^mmWBB1Z;WInRh_Ri zl5L)bk(Ew!Aob`Sv$b`Z9pY=53T_0~X~g^>C4M1Q&>H^5R4T}nKb5=M$>c003j1?k zO~*m#Ea*^}dGb~LmG(wUuIJUu=&kkLI2Sb0Q)t(Mxr4J3FDLX)D4g&hFd?uZFpzpN zL!erqMxae#Mc`H-Z$j!|H25Nvm1)@{qnvfn5cI3s6)mrxpv~42L(}lo`36;W$Iyk) zRBarUcuQjjQ^$R#hZ#!`W*+Cs!Kc8VQ#lj=tN6#jgWGPW1@CW)(zG?0acSJ@dJ}D@ z!{bre9s|3Z%}k>OwbztrIyCr8gcCwv;a~cgL=-+%iMA#<7w(q_$;0F})Qz9T9+E0g zl*h@5a&|SF+C>?u+)*+qU8wJs@o0k1W9`OiRkH^LNb;>N}9%2VUoC6j%blq%9X z&#uTn%mXt-2jRRi3a#Kh=Exgyi_02)6WJ8$5vwR=_CEAo@ZXI4C$5cuqgtD8aG-Kp zX{j8Rl^v)ID^<+kkb9Kwzh9X;>i z2uv&39od{cFyVfMJ+#@b2G6ZAI=Qhp)Ma5Ruqd_z9aBTtW9{9q)(mQLL`OG;y&nD26 zKj`OX!Jiz;GfihUyq!$hpIljwUat>vJc6&di|E`&RG#IT6LpD*vp`kek@Zr-ONlqW zF~a;Qo|tY5e(}mEZVoa}P(e-wH*IH?vYNnC%m*Tr6&_Y5?#@>@z4VWS@WHyl{OU70 z2N$d|$>p~@Y_xUu1nZ2^PS30-V@~}*%LBu+j;?FpX+=XbgSXgw`5Up8H{nKLa>AZK zxj;?gtyAEKz=c2sy0=V;La;=rG+X$3GsiIToqDZR)Vor12ejNwwV#Fd;$9FAjtb>w zHfL*1j2z&pA*L#on6Xr+w$I63xtAS-weXqC2u~>mGmeb*Vz_1FVSNvUbAH6B$t1*& zVy}BNS!957#kykmb)SV7M_vwF}aD>uej1eiTH;*z}-im8caxtq^ zM9u{d@uc$78)TxK+55)3RNbh^YP>v1c#Y0^vXE7-r--s8^zs}O9!L>+v%FLKB=wRz z%e|C}>i24L^_hCoTf#e0Ev1f7+o^fg#>xQcF1u+9#WF>%xuf9SuM1}v)~hp;Z%>xs zJE4|QMu~M|0lajd&~N>P3tL0nbjG9L-M|E)lP9I{UR2cG{>yRw;wHp(jw|D@>K(0Q zSE>_dnU&^pK`Dp$klhN)V#jc$IE}AXb~MqeP#+F}Ssf35Wt&h*{8e1UuJhXB3U(L; za9@n`l#A`g>$P6Es{7FX#cB#qyN{b4&g78Ta%LGjJd5bl*2HE1KU48oCMwYL7S zj#}I8>tItyaWRwJ1bmo(g()$G%>pW##TjUm8d&+5KL2a}4ua6nOf;v`XMbc?_B%hv z0F$y^@a=1uLE|Ny1&zw93#eK$PH0zD!SSFJ@5wq_$vO+Ul}D4kc2eo>;f#MIM`dJQ z{gPN3N)(hLx>k|BCgaF8PVdCO)TL`%L>9bG{_&H=)*9*Yx9SF7(G?a~JM#xqF}F|$ z7GNfKnCCsqOkfU~>=&MI5Vhwp<_5!frXl?O7nsW(iQdM%jwMvAGxXp1oJU06MRK4< zobBPySE)WJP7DvR7b4bDaQYOp~><(ywe*%v|9Y-a+Ncc6eaj0b)9(Eu4)}Z zIta-D(Efjdb3;4fZY63z8%yx|Ck3UscdV0@$*Q*P>Z+xHCh*HMCKW zkra?_$!(O%REPP&@YhIx!QuE(X#u~gh1XK&sSVT$YAT-lrLs>ss$7w?iHBm7iJ`ho z_dbYOeD#yXC0p)q?W^M5FFzMA32m9zZDGpXo%uwEn9Pm^Ihg|<}tR_jB#$@)3q7az-+qu{V?ud+wEc5?_@`PUMrV%l89PJ^)!@7Ys@L% z4qn#;Jn;*WmD)78Xa9w(xPvTqicHgs4s0C}717%ot;q>_=><;^K}$H{lgKhN$xuhB z@X}JXb|M4LC+lqj(a)=Y)~XRF%gICY!9=Ez%|`LjCy9a-Oap#`|G3L&VO~I0U&H#D z(~^W9=76L7#`wVQugXMsI%BflOfRmN*7NAu^=h!WI_n+CVUvlz$^TWQ4e^6-Pwt#Z z3@#&|eIkzc@-?Rsd9(P))i{{m<6jkgo?nA#rlLO0&Q`GnRFTzC_3K1iCbm0FCeFgv zcVLePQE#`vZDA>n%2nN?W<09o>c(xp`=D9dp1^H46aC{1_onqX*%!u(HbHx;J=0!l z*@*gq`a5k}sB16-t{(dn`y|#(JO?_`jw#ySghL5;h`wTM%lsI8j?ZZoaQ%$h)=*-o zot9nC4yyE34{M|JKeUxvaxEdW8ocB=Q;zS^;;R8Le7oOI*Ru;}Q9sDg7Si z^ffKpSZpD&5pd-g@5s>Qc3i`X{;K0w~62Wv|j-*5$*>WqFkRMA@b6lrt%{ zl{QMex*6u-QYEN#RczU-e3hHXe~J60qS8BMwh~h=C_U91>KE7_4Vh2-)D&tybtasv zsp<POVx>%mQ{(MP4EY zynB+3NwzO;XWY2B1piEbTYp;Lw`vCEnfzR~cx@ZS?{J-2h3Z#{m~bjnQ$=sV<@hiN zW<%GpbGrYFK8%eOrigdNkMwFEaFCcKJZJJg4&%OK%zTyfH z@V-P@4cM)XK`H04KOqh7#`~z_UKsa{+swB*^Oy&7VGOw}&e%+ZWPr=~Gk9NL&i`p@ z#!=LBqscHy(X)a|vOR3`1S2~-sSi|@y}0jN!wN}4@^|t7M^Xpg;nbgCCr}2X5WU`M zT%w{zUGq<}=xeKry#)RAod1ye>iCcRWn950wu~`J+lInzh?Y#hsin}9>v4KoqPQiU z-xzY(Xue7hqHi+KzaGcfM18mMl+)jzs&YO#Z2>v)8mILmsEt6ZWiwFkkd;djJ@u(u zi-JR5V7lMWx^KnX!>P~n!Ge6{Tyh&m1pJ9QyR*%wpre=dlGLHE&1LpdC*(TeWsy$d z-<$$=7;LDKeuHkUv|g4dI|*~@I$5d)ERv<6dN@g43f@S}lUOQoO=6OhY0aRMST*<{ zID_3C6_{1G(o$$mn3*-zuIU0yfU;EWIjqq<>r(Eyh|!GsUpy+DH}sI~K65%dMe!Q@ zm#s3#xHYHIvt2Y(fMw;iwwfiF>8EizQdcgbBP$Qd;T-ld&f5`Zvfw z8s1mC#mmxm<*~9-DWr~5YfuyRCEi*q0k(`kl8VVwxI$=qjF(8mY5<&HdMXGkm#yZM_@3ReWLfn76e*uWy!8 zK+YxA1G_mV&X7C%@1&TJVtBGitpKF z9*yM|Dx+w9;c?jt=_RZAaQ?l7#{PrFMAK|!s<7zmS*Bgr-Nt0IUihN>9;H=!nEOFa zQ*kQ@%U~Gl!X{uG-%uIe;IwCEK9<3J1}?W0H2o64j#6FyYz)Tz<1*-VP3pmG^kLbl z9)AW?*vNl(a;m$S1YXh600mJ@!0x!O%4>?vpUnf@NW zankQL`+uInRUg0}I)z?w3G9#A;MYa14`@g3k!h}(sd!a~js5zL#B{+1!Dpe2x}cxb z4r%wbhj0YHfh#|m{;dy)cp7l>JVg8{zS3d6D3NxQ_*y{hr{{IgC!=X(w3KACjG#E# znM4$(Ys*X&Z)EQNoq5=7hmvd@T(#OLWV(TwFJ_P4HEwY9Te~G^E1<1%m`qDLU7(Zx@^*Y*%U}ab$MsSMO zK))Bd5iA)h6RHssLW@FaK=He4$Fy_YOM8u*W-_ZZ=+rw{M_phyo&)FT4-$F|?eh)v zHSJNVeneeY)}CcoLdo|Y#&Ieh>6ikQPV%_4GSa1&LO<)rzr1qfdbB(Kq82`5QB<2{ zVeY*^u^D3jS`Vhz<*A!qdCG`)q<+d;^Syt5QkPl>KT)HI4kY@Vh5FyI2+oZKM;*AKnhW?cPpa{l9*2p3m`i z^8c7jj60$xN^7YmPcVVbAkFtZOkOX=yku457Wnh~vZ&RSkUUpv1&-KR>MrSG1L2$4 z`H1Fbc2-(HasPBdgLI#<&q7r8b0cS??P6Cv7sL)yoOFSVwwZ3Nlh_n~OOhLZIwlu; z=-bNUXT1g$(0F1l9ZpV}*~i&kSR)MbypQIO1o5-}nV&~VeBu?D?jps2s>dV?6pc!j->Z<~7!Z^n_7? z>IscQd2~(Ni)wip$hS@J@>2VTiuGsqd6m~1f{wT3^?ilIm6Z(zpO}8X1$z&{ue{CP zA|H7y11Mw;qac&8EHK6j(FwK&hbdxCWcJ+${AeAjno3~#MI8%<%nIkeTN~ZPK)0v8 z5uQnJE4dv953e2$_?1xl%eW+U1EJ37&bQN9mCT#eqt*Eyo1wtV4G#K=-tZW&ucI+r z|DU!nv@euPGxTgmPb~*btumoWp=6;oq3T)>Z6R~BecBy84SaCh3fM34L>c7XA==Nu z@=MDeq&>`_w_B&+7vBUaoe0MGi__0t>70Wly$06!X_R%>;6#_S4r?Bqd})Y!+=N;-hphP{nQ9OTQLYEsAaZa3wyG4%1)(Z`#hw?ggjCZB_P-&&Ck*~@j`50V~ zJSfICD`Dliaz<6u^-3Cf2xw#;xsvn)e8-hi2W7NcMvY17g|D&v@DJY$YovL~J~fl~ zj5=KHP981g9qn_yKlr~*mMZS4x=XGq1?k!9du(yHw^p*H$u7sWio4{0r`D0`QulR{ zX2D-hDK!%zdkC(LHjmo-uWOZ-Q>e(oVv->SJ}V|#}I9ssj^1H!1^8RaSCVtm66Qc#@w(XI?$Sy z7c~17e9DGK>%_K!P@q;~+R%9|psm)1!F7MEEz@)85m1Qhu$LEyN(JvE<_~?;N^-_i zfP4Ipyp=SY%gXOh;7}?=l}mn0$+Yhif3HkDw56w%x_RNe#xk z%ua^VYYx6eO;H8M<19JSS%i=BCwDA9CaLIl9^r4i7A4zi_Xt{=GCl`|Va=i&>#Y~j&!fT)YK`=2#woLe(;++t zB%>nyh+e2Rp7U!R4rCWycHfe77ulKYfb~BneRW`fbi;`v7rL3Vs1Q#&--dN}o7F_C z8VrQy80#$$o~RF_TVhvY%{})~K0k&1mxqm|aUkb|h`yMoiQtFPu~Ujua;SdQly}QV zm1}BE?{IH@?-uV_?=bHS?;)=%gA+#5gb(vRTym=O{qBd0xIOxvCxzHVE~LIyv#W)a z>+%YDDD&=&@?`0m_(2YXP6Xtil}^fFb%4@{%CaxG;3a7~RbDADk-5rNIhnj)`j!ls zUg@PAQ^qU(l_`8wZe_c?Up_9628YS#zwfK*{fz#sl=Kg%#TjXkcV66yIB(oJzwEb_ zWa89Vf8htIkDOP|BV`b~30XXekuu@T?r&C4&UQEWYZa}k_Gof)Z$hkAN}&|7*Z z9f5t>PztjRy{`B()B0`Xw|-(6?(rLV*PV#7c%1CQQP4)*$PM%f0nm|N(O>ZO8twcE zr#*spdLG#CVi2gGI4iACN8W*rTh9IyRf}L9#zi;E#*G)C_YXlk78(PYWpyH^))~i* zVbq4>h`pcq{ZC%$R^sn89IM_&1$vyD^g3tA4-RPFIgtGQWU;$tfAz{$KWCriR^jCA#lLId2Lmh zb1eXYY{iW*kj<_O?Z^86LMn(s1HAxv`V%V0+Imzgtk+;#SBHM=i*_z(2gV0JCXUxq zl6}7=s_Kwmni=(&OU!0oJ&5nHlu?ZDArD>Jd#bxOe9cK@=KbivTZ0RoHa{{~`vFe! zM)b}>rXW#k3>f6kaH|(HtG4hkNzQD_zy&C0xOaF7E-~%d6_Otnp&#EY83&gewoBFa z5?$RWy5%0mbSi60pUVB!)ySeNFg^OCBN}0>*OzN%r~>o9mvCFo7#rZ1EHsZ(i_1`y z?q~Ol)mh&es;N&R|N2}7JY>Ru`x&pZpX4~ZC`ZC~oCV%^5)ZzYvA;c{_(XgxiAoAJ zi+WqRs&rHjtChX0y~Vwaz2AFtdeeJTcpu7NJXa!{@K?+4K6e@tXIJP_<=6+$J+Z(1 z1q9`c@n&^mudm8&zoJj2Is^;`EtV(5EFUwuze$ouIICVVUsK(qryZwgR>;*sPTSmzGAM@wr_#(H9 zjEE^>K4yjorD32pN5#3~U?T0P7%#=s3)Wm>72H9r^cX|@D zsWS7c@0jflC7(6?uX3CT_I?%g@o$ikm#}{4kaO~*aZG3Ipu&Z`#(do1`BW3}smsy(G_Y>;QMnu`)+GK5$_7;5Zp=N0H*m;vxPk~o`A#jxl z{oQhS({;_WMn|gCmQ<6DQPupzd~4mtYpS;SNUyD*F%~iPuBcl?YF@o6cz<`j0!Yk5 zEqkb8;;V#}!IfGN-c~Q}i=_D4%gyn@$P4GOA9>~^-`7@dg8AGbN$P-O)Xb;3adHqB zFTrCv!uRhA|Gy)3{dp$%XX)FnZN4o?;Y!{;a#lmlj{pVMl0g(zZq@pRX81a z!^0!lh=hf5TIH>hUtOr2k&DRpnOTn)$AIXm(g$`NHIuL5I#59=u0Hja^e^=erXIac zeb`c+t}aq%sgn1J*XL{EP3FBx#HIBW_P6lmRZ5Ay*j#p9tcep(ef7F8;;Z7j;~njF z)StYG-q&g~Z+qWH?+P`hOj0)SH8)CW)K7iF*Xvo(VM)Zg~g516KRMv2R++xu>te?%yevpsXi0fJpDS>7ni)bo`QIqUBI&; zt!KGsKbt)B#oFUSx(x5FzHSG6GSb-sO8cZPV}Rr5-U~z`Xnd+Mi91Wim}kbD<={l- zq;5RUJbDI^)*B?T1sSO~kv51vBR_6Bn>d9x;R${Njw$fV1cw}eTC4&rj*3J=Jo&2^ zUa9lQWoL{5a2F<-I?s`bitHgb^gZgp#whhG^ZP5~A$jPKc24_4+fJOlq4N7g<&?mb z=#jQVy8)t@TQ3ZH9}jlFh;HvNIDBz(=|i4nDJ-z2mT2Ax7WkYhw4QlE2N1rzESHi&4l|#4%{`KgJEbXj%Odl$`5bhy0pEKuGZ(y$EFd;z_^$2{ zX>W|wXnxAV_Z(s$1m&Ls>$pE`w1cSJG%F9P(}r+ozNcopYX6R_z!>ykQ&EETM>nw= z=jEexLPeuR@lN_7T*Y0Fw}8of>qnd!zQC_3&z!Kdnb+LSW2{-;DgqnsIao$o`y5(? z7x0>&+il!qYz?>>?&3^9eLB>gi&IxWVlKh$jr*++cd7Ys@KroUN3(+@F4BTti+qan zLI&!}f{`ZduV%9DEOs-%f3NF~u`ly=?&E{92(OrJ_|^Q1lW#gYj<)b6>f(s?0}ci` zJR2ibBG+Qw#8mP^d6|-#n3}KVQRjM}sPC12YI1*kvYq}ezUE*Qmz6}ZG!D!;qMvY( zen<^wQaj!e$|=8+39m65>kBg@3zgw}kh_b*9*p<}cwjGoVE1MoX@~T^yhpyn?0lV4RXKt(=ZLgMoXq54LaZ~jz%aJt zTtmb0!pVS3U3c-eRdhPh?Z6VAeU zzbCFM4?Ssx#-5_=dMkh*!E=ji>b zhI5wP^uvc;Nn}l-BdZQSxC@aplp3-Eh(S{-%ELtB7Z^)LQ9w(~w$_3|HUisd26J#S zS@|SYS10hntti_{@$Bo(IYtj^!f9appU`?|0(rbaj+)NrS2Jqs89@ir@_TkFz+%*p zUY+3#b>wp*?>ST7CE)l|v~k*JttNA^-{4#+aJ?*jmN5rKRt|HswkdIZ=ra6|4e&*F zfieF5pBun7GT{v}Zy_cY{}{#0U#P>1fqEB$>Ho!yGJ_Ya9QZK2fxo$yN#iUY^Z3(V zW*Udc$&d9-hK~-d9@u^xs_V8O=Xa?dLzaRAUwSlb8Vv1!Kq2~~+D-+(sU$VrLN+#R zMTh-`E-D$?sZ}__KEy4(7F#N(xEtV1R$``7)G6q6Ma@$ie~Co_0fxP)&sBr+p&YG7`~DZ!iU%clme!m!Ise6k&NyL`-$@^+=mse zzk3)bnq$!iD6toLnu`0RKjjQ+W#0jBU$u>LoZPUDEwW>jt-hcAMf^Ye7x^>z4l2+> zr2N8NJgwT}#62?hjj&(ZNBlVI0JWYfsk4;&Fb*eEzb%GyT#P9DBG*?QD2K&LYASD9 zSoT4$R0z6hRf66CtgnoANJjb{tIh zZR`ThD?OtB^P~~Jr=~P;+q)Ars9yYT1l7kqt0-PHM^KqvM4_|AUQ25yM0egO-KJSjm-9(JO4iCco`MfAh;o8;V|8y zBFj(3b--*+FEbp*^L#dQ;!a?s)eWsYQ`b0nAq|*O*P{9yM6Y(&I7>e_7_5B(Q{*nx zR27*+*MwQo8+Jq*{k^tXn*m2+jy6&IOZy+3rn%IFzfo-+(oY!0oDoUf7~_GS20n2D zXnkrjYAdSQNlfngm=AHX%Sp|aon37m@iIANO#uV12j{&MtoK^*Kh9d~tmalBFqW(+ z*Y2=4JrPHOy=G5Pz=Tk|vBJvE1geqs7FKc(t2-LCE^yXLqSHDB4T=J}l z#n@k5+g)sV^kHU+a0bs7l+6$ELMszKh@bE}H=n)UIENc+PQ1>=$VGxk! zGNrAuP`RiM1+%xj<9rLfC%mnEihrR$(HHiv@|N_TRBx(#y=#1??^iXA^w9G_?5tKG zo)mw7e+U04Uu)k=UmEmkW7K}$4Zf=WRDQ32yuXkCwYpXkg!X6-stId(mF<;ANO)5c zn|IL)#4At9t%uQc-zDM)u(3lCOmugTarhb^YmPcE2hmmrAEAey`fMYc>lqR|gCFV{ z9HXC#sib7$@50YQTD0OK8)5|%GTov-cqXtzqY7J`WFfa_R+Rm$ZX);RBRb)FAZI`D_B(Xp=ni)vUvmw=51ZW!wwSZrp~)8Flqca58GZNGb_WVkn(l zBO>-S(QJZ!OrRfI%*1U1kyedZYz^0A6jOqn%*bw|7CEXd)z&jtdJi+cEYspo)RbR6nL(v#1}_jIXYSdJ$+jIjMw8Tu{2zZ zO|au)KMFO)kFg1nlT2Y}nngnw^+vAFHYo$|wDgfbaVFe}0{?x;@KDA=2)=YO#coqJtZOM!oW8dI#HJEKVUt(YJo8QFlxB}7(DN#HX zK8iKO`cfLnBlgGB;EJb=)KZs_(rw;w|f+*_h^hSG_l^8P-y;72-zjf0Uu9p^*CeiBTnT>w4#{cn9C;q!ktyFE{}je7Eeu_DBoqzdu3GKV?5sxWnp$Q)Wi{M5$MM8 z*bBDz+=O4{kABCFnM!)2m6E(ZUgW4j4kXB6z6nrMzKc*ISp8`Gd{`Udnd6TOfFALJUC^n8?@ ztEd?l5qF!(6_bdl1^ml(B5?$WVl!&NR&;9PKt|5PSqPck+3uOc8SkzNkL7gOP8vIt zIUB64rk-9;^&ewu5a?tA(UuC#@*;EG{9yat^l~67P3W>JgJtBSGb>Ka735D@sVM{W zZboBrc$xoEkLH*U2{M(bbe~D*9cD|#MY_oj{8|e`UeFL1Z zaxn?Z%>1yF^R3;Cs_}n#3tdJVQx~1xczh3XSsD|Fm2ic3F}HhfZUDLIgsapoy661l zvO+{^AEK;3-R?xt{&nE$eL-}8Vp?2{D!euP?)xBw?OnXnBMrkVoaOc#e1pz2uPG0k zyDqL`z1Sc%fp?`kuF+-blY+Q11*zW_#Qef5bWwRdBk`*)#MXglkuq$Ja^Xv5WW)A8 zHi7&^OiafABfxH#Ezz>VDDjIYLo^Pz>i=WuEWo5HyuUv)x9`NxY|tek-Q6W3p)@Gc z-O`P8cmC*BTBN%}X{4pQC3h!o%=|yg`#$rmQtl$mx#yhk`Gy%T7TgdTXMTfQ+_dOy zyD>>H2gpd-YDmUF*fqthHPK!%HJa0Mo6W7e%!dMQq-p4^r!9pX#fjud+{HnsBiiA2 zvGtCbXh%*t-#XX8c9cOcdW(wi(eVu`$v&?Ajw~c0FN~IQqCrv4;fixk{!Okf_mQ{D zpX8CsSsXm7YfbbC`Wx+UZ7n*?{&GD~`eRav&1|alS#rpI#p+^M-lZJUo~dQkt?EZA zM$|^BZ zPi$->^#r*7&s;rVSk{qGvdMMgE;me`0kT;WN3DXw6jw=6q@xa%a>`M;rgTsEK}hR5 zO9EaV+~RL=w_Z*@&KB~{9ytpNQDLWZE`Mf$*a>GTl&vxs@c*2L$@RSFNP+jSkayi5 z)}zB!**O>1$k^B2Mb&Q{+#ORQ5fjW4?a08c#`XOHMkqC(D2+3 zZ!*5MmfNM7gdNs`$du4pSXcGwM#f4Sv8OP(1l%e8h_s2C{BPoShdsrS?_n-&zc z064>UVDcMrFfizHv%()EZ}98uifZ9JipS1jKisbVpu?i4$nz)y z3X&;u81+JSt|F_rIu|0#jOXY3L<*oupC0))Qp(6g zn$I3|z$d8b^mMrac+FmpoJQMcL~a`+@b62;d%7YRCAu)OS$yQ3bcpHBWY~4baENJ! z5~LDoHWQ=iaeZsWgm@Td3Y=2$`U{3mhR1|Fk-}F0STW}mM_U}Hoc90B9&BIvYzx=I zF?ep5wqIF2txGuQwCAgY=$xgwI{yF;XCVN6XvC@iH$@{_A`EyqiY_vh_+b zH#H}{xtnX0D?Kixr5yh{p9nSB&u$BD(vxSSTiYCaihtwcsM9II68=>#&0VdhQc%gF zG-JOyt+Z0#s<*TT?m_PIda|}zE2e&s3oyYIlzq6OigG>P|L3H%@>=Dj;@7HZdG$Cj zjpo`}^*hz6zEu_~+htqctz=PGDwpIwFe-;jqEbnnp{A&3wM$wx^@==1sv@Vrm&~dB zq?A-LD4E&n{^qt;PueW>6mQFSwXFIprLMeGswO|;(j7!|+Lo@mL8<_*nVafsrBsn# zI5Wmh^Yl7m4`Qxpi?{LWSS!bE$2@0g;fUB!8X|<9*{LQ;7$g3I!{l;TS65wFSw~RC zuHsMPqH`;iw+#P=DzS&`2Ji579*pB*2ULO6c(!N7yXJpz8ZN;l><2^rAzJ@_UIYIYa+Xf&3OEe-Yfq0%$A?GoRHBcI1`Huoy}8ji#S<2P27bKl6Zw3}s`pxITRd zZDDKK7ujY!XUOShuSnO>dbsSJ=vO~bQ48Q;J%e}UMqP6Smd1AG#}(Y(w!m4M zMink*&P?S@Hb6l$fh+be+}FC(--^=@8-gpQgAso>IRh+OAVNWW40=lxxC}7Pe2dlOH4|x4-yiGw2V{GZJ zhj_;qj-4ehZ&vg%*!wVk^opadjz^*cw%TtO0(dyl$pVBZ>cjDS@2u;}=NjeM#f>7PQx$*a9eYMN<$U4DLjp_}-jC%RBJLn> z#MAO5B~IO>&Q-4{pXFt8H{~n!fLdO=sC}is)#_>Kv`6YEMNl@%J$QF7kjKHN{ z7@DCSU*THn>h7wAC(3n_nfHUGZg-A$4tG2y>EjU9s@p4>R zUj%u(#CvifXh?n3W;v;||M28^Kws$1t!xkP-uzs=0&po3_*OOUSzCDbHw6D^OBbmH zv-lQ_MV)v05T?oeT$6?H-SGc#fBTO95yStl1n=#Fk)K1yshCcn@Ttt+8E7&;r4)y$ zVKYO%0ge1GC5T4!BHoV&VEumJTdTo6QdKbL;VLeNMUp01i~iP>4X!WsS{~-r4Ysy8 z(i#89bKo1E0X^9vr&D_$g5yIys4<)UOoB(+GqN22h3jN#ttW+M9~{pobfKJhXj}!k zuLVP`8l06}_+pg>CmD!O&xY^?9O(=^o)0l4cBRt#Fdf#wt8M}AVI|nkzG6qK4#MAz z+?dW>ug@D^V>sH`uXv8tVS<$SldcD2tCS%csYppBBY)&FtkYIJ-KK}L8@;U?;B@6k z%*ut+Pf^_Mv&M>pnmu$pi;7$Y=JJHi|7CBujCXzK*fV>hc`ot@my~arE{>&S2)+n^ zZ}zvx#X3NY-W7{kh9R(VU597Bf{cooZQ>@JCVG`#Srp&KAEJHuI@My0oxQm!b!XOT zPu9yM@^D&E_Z3N>my<}pn++}<~Rh=(# zfvZprc9TxbPei(qHCxMk3Z8j+Dq+9KTQ@;z= zRur9DDvQ@k9cSe87vVFzf*;`=7lcjegbR6ws$0oraR=CwSs1>J*wylJUr2-g;CLuAohiV5syki-`Cv+H!DA;YuJkR;w#HfNXFbkz zPF#+Dh@9sZy_hO?=)Vn=HOn)EZ(Rth)B zuOqQ=Lmc_~!3{}c#!%wsLZ$va{Q1f7BUAaL+u@b|iYwq@(suGk)^k0K$7QlfWQj4~ zT0ttyMl`}7m|lu7yB&=BdC#{*wOa`E{i2nTN=qgg@fLlhh+Wl6!qIGD2#!t4#b8C) zI7(!@Ihslv>-@$w-Eo4e>8@y8bQPM$|KY4w67T%q@oxN%jIa(&fnB4!QPh2o4su>~ zO?DP_bRY*J1y|J%%#lN28Mlol<1g~Wejm%~EC;$aDOMW?{c@xqYmV}QfWGquT)-b) znT52@4S1{n>F6iTW6wIuc9l-+q7BtDY5%BytET#|c0m6GyZ2vd0^F??%2}m`@|U~^ zR#qmu%0y+I+>W_#q|!w>qLfs3X`Qt@T50`zy$O@%f7)y9h_+aJNR18DwlP=6>z}o# zCh8xxcoITJxf0ABqCcl+Bi`|{AN%K8puds*PJ?%R7JL^nzzw?tY4WE9q*{sbe}lVZ|8-Uf*s6&;ZzWw|7W(XXfr zPVv0bfD{(t&Rvq)t;FQXO^yE8lv+!q#$qWssK3uJ`fqT5+ea-OM(??Yiav(stuNKq z4(8X<w&6bWL^`(MzyjXGfcmwB3VT?sTy`v1^WS?18Ec`+>uXQ3UPc!= zrwIjx+m5V4L-98}dPd=x^-A=piS(WwYEaFrHP)JGxwL>*U8}1d*4pT8wZTdkF`GC< z{-k7AnvoaN))ivd#>UO91w0Hljn|fw!3H#i|D%ELLa7|)@SI&wTsFC#iz89&rnrWRE-OqLpdat5qC*Vl|5=!t*UDR3N`A=iO-CD=SN~Njt>w|8@;5>}epZk17zLW`a> zK^#|nVSJnkri0_Zh&e5_Ldt*9msnK502cPmP_ z8Nm}~I^Ag;zbiZJra%2og4rYLZ~>Kfn@d{@I(!vy*gwA9#{R{}`37BY64$X=cxsLz z-{~uoo7`pr<1Z?$43$=%>7W;Cl+tLG9~n+#DEnJher66nNMq=84(od>)h($27nM63~H5@}?F#4l2V~Ng%Wd8*nUAfGTb`}+!LVZVn zI~#5}+Z=JOp)epHg7)7Na=3nV5USZi$(9VnpfQh!sAtI7P>MK!8? zl-J7j*tWh_6O}}{vou{QBGnXI!su@$Z;&$zkL8!j5VgKO#GTIlL@(`jc>Z&DLRURY zzd%Kt)LLqPYPE4En4#CzpXhh=ar#`nl|DfKMPH(Bl~>>feoDE4pF&S%2ChHxN;7pP zHvmK5?;h=rbDz@p>1*BlJwv@qJb$_CyR*2nyMN&G-*G?kobpE8CEY#T5p}w>#Z}R{ zgT&lSGh~EC<*9>H3~#z2tHWTA}Y?r9bq{hL+u_02{_7YExOMZ@Lsc`N4o>w zxDWR53hHei4sG{AA)mnr`446iO5V^;aFEJ$v}$y=V)Us0-~k8dbbEu};<}NCEAVuZ zVQ#`Ex`G$UZ@h;~!a(Uto$aRcbY=TXMKgzkUG(8K0d+tse|aGP?#rgto_edpXD>1`Wv?L>$Bd_A=|2pi%|2$_T7=9iOg}>t&FquiZJwBG{Bg@bWIlzVjUy|ASN3wum zw4|>70Vh<*1V2I5b~ozN&qjbe4uYQ zr^#s*HqVkw^q5OqG(0WzZ*YIOFkF&ZV3WF?1qSj|I};OHUU2qgl0|;zSLQ$gvp3S& ze8HXIjorx}1+%IwOolw>3^*yJ@QO_dr3?3q47PGR&N|mJ2Ofz=P`eC`{s*%>6IJ(u zB*6~$VDg@SkM4@LjtzFW9e?9?J=I!Eei zo~S>o+0;sEb+wvWR~^Fj>kOCc#Y#8jrrZGJuN?iXs$5*&F3nQrDSyjN)yHaEZGk@D zUCMn#f9}5P+3$HmEp*a{sLR1m0*YU~sv6oN_y0WOJQv)5>Lc_xcQbbl_fEJXn*4*Z zMJ=a&t@TuQfOkHo(x$0LwXM3PKh=}<$GYg=<{s#|;Ti2o@9}tMxevGtdTMwYd!nA| z-bS9~?)mO_T9P_JZYH%BN;?a3r{B!gZj{teJ_!%3wR9IR|ADR^B;^!$HbyJc1(wz+ zG7{IhK7%@TaoF}*uKs^SpT{bLFujaraFmJVWCkBX=5uRUcVoG!{ftNUu<(rVV0>t5 z@*aCd3fF9Ep$1GmAI?@EVR{^;-gd#WJw&xVz%4Nf7H)Bue#k`G7~V)T*dpba0SnXL zOe(D@byOK#{SWZ+D%^lO<5$->T!txiGZma0Chz=NCdbpwvXc^Mk|%e{T7U{h(wgEZ^fBvWxVE z-{_SB-nOUl8t+e{;AjKfXU4FXy@}n69gO~NXS63+r(io5wF4w+rgyf(P5-Tpy$_vG=saPM_jqjJ;hGqo$QDe-1-HFLgp?T}`x3zcuI)HT{MfO=|&O2fn7UwQjFtkI#-nz08=p;t+wI*70JI^!Go{6%5z z@5Z%fCWy!&9O{elPQ1aU)(g&UP9`uhWTJMy0EhS=D(w%d;Q*C)m0Q_PZdF6T9xC$B zAxwPb`BpuuqAIgwFBm0Nz*X*Yw+^7(F3E=<-;Xowe<{@H4X)f*g3oa`_#Au(N_iN5 z$q_o|epDk%nN+XAb=rz#dtmT(RV01(}kblUmOV6 z=4sQDyZum@A*ru9+|I_~DOEMHngq5XaB^G1;aCg`pN(X6pIL{LkH;YUr6c7?Q!R^6 zZ5ULtH!A0%xNtWx9)X(t1+RY?bEjdtQDbi=m*Et+V=m(`uFzNcmGRv2h8iosC~)6@ z>4a~MR5jP?=+Ri7*d%)~$)P*hrFTUxn+0&Lt{Phf+V8`!I&A%m>LN88>xYODIu}Z7 zoVT{4iq00RPG(?QFv1m}At$1JVrgKMye5U^h1o3f3T{ZE*7YvGWd>^3|>oE*YPkKe{Rl@!}$Km@2zwIcqvDaT%ZFx-YBx8D$$h{@Gl^+VJ{b zd9HfYrCKw6oO`IgOWOk$@=|S~rcu+X$)M@SlwHbQKT2D^*9X7cM?#7a^rh)Q5!_N zb3ML=B38hcFvw<+8OOB4Aa0|%UYCLE7vR0O8ISE+ydRy^#Y5ifw^3f+qYn1a(@yaH z>(oPOwy7>K9;Yz#O`!q@(0>N=`kDD}3S5%*Ol~(|>wXN0T#n+xZW2BBq9=Qf`tv0& z2#=_xKZ9Pr#=9>nn%7kCBc{_^bh?LB+A(@vDz|GtTjDro$>yLXrSar>%S9jqGiALm zsfL%(O5bIM{4wQ!sHi{TWb6u_#Gk;X{z?X0hJI&0D?@hZUttuS;481W+Bw;6y6`)Y z>D;}UGHZmI;kGpnr>|2y88Xw;CbOTdLw|NQT%CK@cXX+C@D49q>Fvf=Mr))w#Mn6SOhijG-rnG{D@742W6r()yCpBRBZMPriJ zYg(0!&!PJ`DyIpjjjY56=3Bhi){t_u#U8_DyG1k?_(@f=^FG+^qjjSdEIi#qD~*gK zEIoEqA^&VK84cT`GLAH(oFnlweBfFyOctiQJ~-34j=3%hTSyqogLBm~eypK$v2%p@ zNb%_>$e(CI51P!Kc!|7T?x9>{zZ#~^)7NNkxlzBPd+k-mqY2%BzejcOiepN1Wi*wR zUQJP+fw_N_+ek_HEy5&LH^ODCsI6p^^J#7M*>2IB#rw|l*7KV;ecUx)3tt^y7tcBM zr8H7HL8YCQuBfv-h5S4Gd;P})!vY86M)@9kGkDv2vUv)6c6io!%X(ez?aZoU^(~&5 z_krgp_g`9ZaxWU{{q>3NKAxSP(fSnSqKG?|I$AI3?gn1+%zfE?&HWF(FNZ!uJD{GD z7m7uNzr?okQYDvS%YLOBSMFKl_L}$^bRbFRqhLrL(ROT&-6A1Px7v|r-3YBjX6vfa z7X|JVvoh?174~PVvh|3hhRWtYJYQ#nQ>2ePAmw3pcoMnpdEtn}xb#l^;xUqf`tTMv z==;>dDco?zZ>3={=ZVDxt*?_v}0{Jr5u%y(nR&Td88 zcN%-9)x%t7Y&80Cv#5t}-)bDox>@b;1)pU$GJYk)C6O$Q4rUH6D4C6XIA-OvzqMD| z3!<50o9*w&3EvLtxsmI31TI)9s`5IO<~7FQ7uPIw429{EFj!=CxO1Ol4GBuWMW5T> zf?}y)`)$Dx)5MlIHpc={1&+vQGrM8qufMGFy9alqe!>VLNDD?G49x~2;u zu14AM+1bPmc(9yBiO4(EBz=K8PAQ-qk}Vv)gOV*}mv76zDD~BE)RJ7icBw1W^s1N3 z^ml02;+3{?5^Cw{(l@v`R#MZcCE!}+Q%*|zaj%<;C&AzFt}1F{b=iGI>*1c_>F?d@ zE#Yb6F6@2iJMO#ZD;oEMcdq7^N8?)3iMn2<7H}`~wDvXd&yK$nf7}0KTpQmw9ZaYen5IcO$*8zSX_UbKH|%Z!C|;4{xLr&?9<+ z`zLp2_XPKG>g`|Ztb=-2X{fB>Yvq<(%G>aqOe?RE3P|(C5DK*fQ2n4w6qX4;ll5C7 z=CD69k)J|S@yIL;QZ);F>?n8XTgFZ6gI&{J$aStCvrs+s=M9WqYz$>1;urtat>D^a z@d-!=!*~gJN9ItN+3s)9jq9jQPT+*KpZW11ljMFXZZnFtLDb!C5R!ZJxm`?zyZM;U zYfJDZe)iqqn#@Eib0qWtoaGjZPd6@39=InZ*w)H@$)KqMhgm|?mW#VrJzf>j!)0VY zj8Xxg*$J;vb9<=YMRd*|*#>K}pM~j5`IsitQE!P{-=yF*DyUlWbLPjV{G1NAxD$1B zn!egITqQCjd?=X8Gij5e!D#*(70&16Ufd#bvQPHrsc@YQa|x`lzi?dm9?k2YXfEfW z@cb7XXDTY$lO%xlHP52C+(i;(9@vBHjgq9sO)yVdS?yN1QxCQJne~m@U>DEe50`@p za}^JbzerSD3#!=AE{$7f2|G+*T*99Ahe`BtQ zCOLaL+ToQmmrD3PIu*S5h5g!|!JVfcj@Z{xeoeK?+MTWPWS>Rse9;TmULz+?71z-1 zjF0p)w%{LhlV77+-&wVBR(MQ~UkSSk_v?1l>LjYQi!In^V?&*8W}s>)F~1UjCgWw4 z*iT4yj&Y{tM{0`&r35*fk_ImQzi^?3Dk98Zwl2A|{7%Xw6%?J)0US#2!5L{JpOV(f zLzD{OAZgLmOn`$wNvW#jmZrOkIGVZ|ON*7S;Vr7nnyD9LR4+<-b)niry`;?3Ua?J` z*9W^j-kaWnzCvtZ{k$!GZF~cK&bT?=MY>BZ%0$=-4&>L`HNB0ywYRnZNqqW*!GR(E zmvI|>-Mq6sIlXm#VqA*vj5p*S;=b=$?%nBa>%H&UTd3C<<17ivd2?jzbOAA zLhY7oX<776dN%hkcSm<)cV%}SUDCqJA{4DXa3A`e`B*?%-UMI0ZsKzxi!j1<&-IhA zm*>$TVZM;d8MJ4cn^D)N7-dMbX>E0}n_07sG&t5CGS=d%wbb%jOUw)?r%Hf|G{kSW zW27Nm1{+LZKT47kUDd8m?$lzf{;Zn2wv!A!o)X zH!GJNn_KlYs&XC*n&Z?-F0_?Dhq|EiTE%N61x4?}g?2E~Am z4zwrV>p74eeEVT;+pQtYot>8)*Uz+bu~SX3D}Ge7g~9&gvh9ig>#g;W!;OQSwt@|}ft6JV?m$AYU3fCww>l(OA0!?4h}|$cESfjEpETya(F3p)O?1K;xVfFd`(};! zfT#6zAz7G;k8oRQEgm}c(LdLg#!+X} zXy8%&&G;>WTmAw5LUC=q)7`5)5noAvCI9WX`f-KhBED0;dA?6x-P_Sq#?#$1na}go zQ;F}-*M}+3q0e@kNG0n;zZD!9k7aF&i<-Mc`MvV&QkLDeG zl>T57uLk#V4>)x-x>_b!5Iw*y3W5;+%ceGxp7RyjwCl``cfZVYr%}qxWfPmk1-lByH(I zo!Qxx;61oqX7Y_s(kFjPZEg}%g9@Mb5Z&nw=;w^!SeRUeaqX#w8m=O|<{qd-4^U$# zQDb+5Rhcp6NOCMWZOYB$V<{!+Xy1h&!Q0=BXV?;Q(b`gDGt41qGN+)~-((&$KcKB_ zXs)DI5_xXDf}JmsX#m(}C4e#Jp)$%wGuciljlL$$fV(3v@NaC4p&8NuJc zapN_6+6waSSHteA$;Ny%TsxA}%x%|-zO^ga2dy(!cAS0&+D>2J63Is7vCJXAc= z%h+Hpu-cIA+SwlH*bs|Yu1Lm|;mKc-KDsj*ool2F^__#-irKxU@2oH?M!4zk488d^jKk()j;~YaCa{*W5eSm*_7TXcd?jP~t;@gZ^!C zmEyAa{sn2oxYGO5o6+~Tcd+-Kr&vJj%d&6U?pfytaC|}`J zJ`7bja#rbsc$&&OD~=Oi3!Txi@kA1PN_C_~QW?3h@G`o=EM$Cy%eXsqH*&~y!M!TS z-}^;&_7~`a&!hM(Y(C>1QrE~1|E_@HU~lLMbEq0Oo<*?N%Yj~8W{z1(=P8Nnz-KBd z#Jl|on^`br7Wl++cCqgCjC52)6MT(-0p@` znI1oe`ojC#!iD@845|BUZ|WCB@(_;5Tkum}%})1>gpEGToeikbS+Jb5fPi-A>pW+t z`;&e;A1tFNm$y`ZuASTiTCuzR1nOBZxG`lbxwUUTFG?BARu=$wJOs0B9+yEqR6Do< z?p6o5|NY@_HKn#@{(sbRJI-4zxEicYIgy+nPs-e=vu_5ArvCoIYw>RzYPifX_<@`v zm*pb!_&2 z+GvB=Kk&M)M^~c*>FyW{o8f`;nyV0L?IzFZ(ZWh$r0`1cli$8p)Z{WsUbw!~@Z`v* zUXoYfOWaoc>^kgPCG-(rg13(nZV4tcX9IFPN8ny_jwG}$uDi}LLRqOLO!@pU_EsUFnQyPI;)nx{0mq8IHd%p()7rLYe6$uubgTk9pDHPX5oVKn2W%1keJWZ z$8y|vrc4#Q_T#{F#+YJwe9-~HsDz)@~7 zdtRp>9|}FhW3vseI1S7w>BXh25FUVo*?oSs7FyG+nqO)y56ECU>wz@}C#B!vxLq}u zT7}3(N+69FDH*uaLy{%-@;r;-cTmfyNGi=^JgE!g<8uLJStV;Nd4W}NsP01IbT6C` zo|`>QjckOBWRYBjkz#hYEjrUxPC%|fRKJ}Wx+#b2kpZyW$ zh7RFc#xv?~E^MNm@X>cf&&7UXGs_h7#wMd#Jc)B-Rp%vVW>pIyc{N#!xRbqq zdyBevx*zKiPd|^~nd_OrtoMTMw$i)a*WKG+FQHadhilxcwY^FS$tP}5Z+eUSGY0wv zD$>7-Qfu4&JN@3kn!rB+PyCelgYkFclM=4R_Xuo=YvdDr_dIvV0j=(H`)m3gaT}<- zKit$7eQSnz1!sl3(i?S#o=rc8!uu0nYq!!F=hqF=QL(uAi?D~i?5J>CI0eIT1wK7} zdDfI>GrcNJmk)|3oNW*wn_&C5`MWq_V zeLI-Hf51_11u~L0@)~{r#BgdR>nk|@9hv{qvxnslz2Uum1=M3RSjY*`$P4UGNuU|^ z;FGtZ3-xB^8y3nC9vyl?56sGzcMc@&2o5-2CdSL~4E)RM2CgYKG!?JYA`@6;RmKlIegR9qXT z$kb{}46cDYQi`2!@0aZ{H?CgYnSUR_b^noV>?%C2>)hT_GqaDO9XQYT&hzhWI3tXK zJy`_Lx{5d|+)e3DowerHRw9xIN4ZbzVf)M#_AP59*$9K-L=A%z-;WugKkTaEID#y( zVk9BS(YAJqbsg86Db`{nt*hTD`1AV4Usjqwuhf;dM2QN^EMjM9tQS zzh$@iBdVNus`oUx+m)&7*XAdCMXY$NfAl4J?!!@`HRiRCw4%f0>E4Pqjpc!3r8;+# z8Izm$TWYG(D4cB?h>0k_oN##m)-ruz1}33$S`ib#(0hBXxJ$TKsaG`Hy@DP$MPH(=gIQcgdyeB(K*}Jt)jGxv zjQ=&hWc=yCiok)u%D~7#4Qg&g;8b8-eDj2Q39f{f@k8QQ2afsc`!D#;c;eiKyRh#~ zoY((r+(X|8Um@>t_g(#g>X7C+pE$=$nika`Xoa*}_yg5eL&|CxA-mAe-N7ZVj?hI| zEL^~WVJ>cWgK*Z$D7F%}h&kC|SBk$1k6g=~9b;SV+g#A<+B@yVb{l+Q`p!_P)lpTMqeMTK!1AN5NfSG%GA1K(FAZ$T^Ifd{R`ezY+fJfYuC&^=%Gj2Yoi(9Ry>L=Cz-Z@ zjh`u*gwM>+)*^eYJ<>jiu4#-l&YHy)Y=d=~1fo7x1(4n$<~8FPXnrAfxk-4wf3~LC z8Y#+$qu<&;m?fy^dwh)tDA-oQJQ;43L&x(AjDMLthEDV?FZ_dc)>1m^?^aPJ$#=Mp ze`jtc_iO;3SEJ1>MiZ*{p1s=6Om1d(vz7I)orDX>!|0q?V$2=wW(~4tM;khFIzN%s zPzpcgwy`s@BJlV6yAHy~--iCGk~m!aBp#8{D7Do$YF~6O=Rqvi!mMwqeiRqGYC3O5 z-PRovs=kW62~`fi2p2O3S#zQT9dB^ze?aEo4qQR@3#G(Dp#Pn5(ith`m2T53SBPz; z<;o{*oxVXkr7l-XY2Ea??pYqo+cB<1+&0f{y}5qP-455e^6vibHttXQ5q%JhjR{=X z%5&wKr*{CaxUH!$mYaB%`?tlHNJvcZB>WfOKmHZnt#hD7pi^K|pkBN?AzQ-7_+#-E z;+qHl=P%+v^`cs=Xkey@WM~U9jn7B=}x8XV&?2a7urK7YfMcwN3%SL zDjEpat1&E;BPhMj!a2MP6Y@3Rn@VjpB86=PoQ#R!F(cq;6vr(m!2FsWb@V%W;X!7} zaeU4$T==@;Z(Cf08YuOLCf$VoR^P|A|*0hapta4UER5fK$Q5V3W;5Zkw&SpcakzE`9{_JQC za)%Dso8av?i8gY)b4ciAK2wv6W9`V9UF!UwE2of+dv${75glSCv4-?gexY;+Jv@UG z#|aeBN6D5jU4hslI~TX|3Xz`S;;@<m{1@IMZmj4zz9E1^K*vxGtk{o_9e z{s=ttkM~P~TY)z5W8*i*Uybh+zssLLF1K%n_kW(+?$MrKeJ|p!$0fuq^JVj$_5R_h z<1Vf5RkJHQolj3nOMf{Ha@e1)mB3~B3Y?8yT+d$f(Uv(vn2&-9-iPjH`AEHTRZ^I|hC*0VQ`M^r#cz zOx6KY*ag$1T4+dQ01CDgqpw+uiS7@hI=M_Q>_gGTv7*lJ@vi;ARk=X)2kSrM3J&*f zwxQLw#m+X^JQVqdNgxtAYMsQ3;xq21g{?bmTV=R>9fwDp6@6htI@&lK6+6c&<3YO4 zDg<&8G!7XHxrmP>*UpEZM_zdRKZ9<*L%Rys$~a~$gLzpI6f=+ctuZn*z}RQnro+x= z-$3E<#*Tt@ehqh|nUw|a@Mg@Iwsq02AFUJBqWC=G0o2oR7Qg+Suo_B51+pZ1Irovz z)WFq{B$bFOi%<(!#BO3YxdXnXU9{rQ*Z%D0q1B0l3sAh0R$^b6^ zX@h@-R-5DOf1Mi2|99dK;xJ)59rAzTJ*lqzi|kZ-DSf27uBDDiLM647C#`p&X8&(lIH$PW_4)nTt%(X?CTPx$;_#5bED#}t1UQ=8C>n=P63WruOU4~&pUZKvObFC(C zEag2__UTLA{Z1#VM=u-7duKS8?d&PnlLw^ep*7)_u&_EB`wiXv7R2Ed)7j6|M}S0; z_Rc;i{T9Nms%2GXx7v@>)qd*mK}$Zc)_jhSIR zFy^4c$w9&f%DrSc+}0d|e?bIikxd|8GniOTvME%u2UO|XQc;#H}*d`Fss z_R|z)(I=Fa;>1;^<2mY?=SlB9=DDDcQ5UKG^cwV%1Z@{H++jQ; z=fgwUkIRmMF1xGxlU6}5<~9BO5;iAvOdOI_IjK-$g@j=VR}zvE^+YM5dEh}@0e{ax zrueM!cLR$8v;0MT1N9HeXuY1Veqg?Tlh5!>^X&Fs@C}J87uO@Mrav)m7re?>o>6*d z^#^4#j$O&>ZS_6M?lG{Qw}74gDfK7y>4eY{x8g!VDdB>vgX?E-pUTd`?6&`)8_MrW zao%!9oH<;oYpNrC^bU#)6QsB{EYlg(*HU{o$tUUUr)=`^)(SJs-d&jIrUD!N70mGq zs3jjo_Or3QWs++H>R%x23SZ;~)|2TiFSBA=x|Ck{k@MDYE&bpDGH~{T-M;w7tlDns@!g+Fh zC>WNQ8wKwF0?fk&)+einT|Al`tr+_NTd)9r*g826E6oE;hAC!x*f*8zogny^@zh%v zdTum;Jrajkv=`2QKb%w)o_MS5?a_zakayw9BF#;rO7UXb%pm^Oj2e3U<% zx}YaZ$fFm@)c6B0|9N02Q|*&R=J3*>L~oxN{QTJr6^VRv9vdkTyntz_eG*od;(88*!K8mX%`c43|I&7fAUnxfE{F4^#dK4hRj5Fb(4r z)dcNyE$M6g>r;el;%TXr{H+ueDhM6K$87o?nDreUb;&+(O>q{Z-cMT z&4ZE>nW>KTxC8AIPA6Ci0eaby_;dcw zf#nJ36W=C&O86mL@8~P%8R;JH+34*> ze}hpOC&U$Gl5F7J>i(dG)b`r%I0^lNf8;`X+YicnGOJqfq*zXFXay49UJL(m1z9D` zaJ_Tfj7`UFb%b*gnT3Z?5ZTV!u4bi#=ij0%BSd13MuW+NyL^EDI7t2y+Wn<)E7!vQP_D8Ch~z8jc+MexS_R9IoyQ)NSc z2WxP3{(*i{5T;M*XTrbyINMvJaQ<)t_-7Mp{RUV{by&b{skHIzgL%PbMv!2Z6?cJc zk<)ni{ux;kzJ*u#3Z~qKWN`llTWSwzMg?j-~Bmk;{P)}a@pujBF1q32Q8k{78L^>`Q)CT} zcZ_vBcdWtfYM`s1vw~wX*@W$5bz?tr^_nW&5jV@W`i%~_;928o<1VbFS00Fo&fWGb zvrV{qO3ma}$pw;6f3BI_B4v8;WT>`L-m2j2B)Un#?INugdb>Wlnu}{CzZ@?u;p*01 ztSVnq`m2fDsejR{;770#eN0#U4Vo+Olo)!N(aLLS3y!EM@=zsS>Mj>nE|SSx4Fs^V zTt{ql(-2@4V)B$P=gm+&F}LO_n!6UQfAPnwx{Aiiwi*TA;G)4=V( zTQ1kF0(X7;+^KhjL%y|s$^XII)BU?1(igaGxFlV@`@H+TxqRb&COg|^_c!jfdKKLZ zUQ+{(bbIxj+@7qOccRUmVzBg593Xy=i%47W9k1|^eCz+kO2yiffjz^qf;y92XGLAmqasg<}kM;wctiEAiQH<8R=A&79rv8?WeRA7EYt;7YiSm*l?ApzF=Yo1+(#=C{n2A3;r~F^ zDY7HZIWM`hH3!WcheGvtx?2M_wY8ze;RTU@VE--yKX{3UKolhAIrVon>^IU``>feG zbpLG)F_iEukjE%&|Ld@?9@5ob(>i4^+uB%mwqCex#gf~n41q~@ zC{!jg%*bLE0pXirZigL$Po>$wdSMAXrMkiB{RD@9v$>8++rcfn3W(xg_7>|{WC54* z9iczNU0?$E!oTo)@5uA1L+BJvSVs6MT%8j}IsS`W=$SG`uf+N}ipSQ$l1onqJdTTG zRxWVwjQh-w*Nn?NwZc?;VN*4`88^e{gDbg0WDj?R6FwJ*?>SWdpKzGHblA^kI_oeS zxd$IrfoEwc?mI=uNbCRyy1rF9S_O>$Nz8{o=tc)FPWWETNAWnB8Mb@02`*5(9KSf9 zxWdwW)kURs_f+uScCXOxDC?xv&Y0cZ%oMhgpM1`poFn;VTo`5NTqMbG{Z{ z$gSloVp$=*tDWnxa6_ysrIlKuWUDA$lnbi?b+ED=XPzVSeEDn8hSyRf_{r%>*G(_K zk?N5Q+Kpt4pj=)IO5Jh3ngd&_m3mChBYMcH-z8mE%4+A`>EndJ`uMLCeMz3A&WS@3 zRwtZFyq9Drr6hJuC>QUE-w;p&K<1Nw@Z;{4IV`-hZO3EesafU4*ohLOaA1-+= zIYIp1mDQQkQ6`#&>)E7OUfi(OIcGWxF;iZ24su;|)QF9UHjMrn{e%zlifGm74Hyg? zaS{K~?rr*vdhp7>K~wxaZZeCQSmsb~UEuKT#n1N)&hz8QFG@?#cpUr%zIkdUMmjEA zMVKBN;|V#Kscjv)n9bpDBiG2~+5p?3jI{=R|5T$rJfrGVR5BW`XZUoKpn_e-!-z(& zD+KGWGWiX!Vdd_i+wI3mdF0WVgkF`RqCuSIKu*F$O(AlcMp9E z?S?D08Be$LurD4(mQbI|`JJv0{}VoA42X3B8wgteSbdGO;Z5*aiUc2WJ$p#C-3Jv} z#SLvGlj9-K{x|qX_P{H77$03>AHQc$%N_a@zDUY?VWTOzEE3O+#%xTRa4qb0%$ zcsKrrOXF>N*)b5oI&5p%;N8pz12-ccJ{rQ&sSzm_-ohR4MM^U`Gtpq7@Kb)@FTxKZ zKNv6R1>Nw0i*YsR=fF!KdfggpWwT8B<3LcDpUsM74(8&*u-wSNpWsnyFOP9JJUf^V zucAEM{Wst}JRKH!O)h#rSq&^dxJzbkd8e&=)>H7!KVV*V$M@T$(`_`Dn(ORW>}v~S zd-!PM80VZsChiDlF2_E;pNH(v^EkPdfb;RUbWnMz?$nog#(A@QG<||vT6Ve8L>rpl zhx4T*Bu`16k2lhl2o!{$ygu-*TItAaZ@AMn)PoDAKyWV(T)SKjO>e=J=yZ_Le z=@LE)OPCcn@++Pk$d8CEl`A1-)HI(Xz9Z7pjaQ2I4fXP}WcG1zxIlwu~ zS<;!t*~aO2-Eq|8hS?U+!12+Z(Pq)~(e0p*6Yw=_V(*6mR13E2Ame|$78!GSx2!aN z!|UQ5GhId;XK-uew(KP-c`Urdu5_|;+_W0NN^HTt&>GK?Ep)U@c$Oyc&Oc_HH~+_0 zbH+4rIc&~n{*jsVVq|6H6VK}OMjAYFk|R0Et8K>5_v7n)%aoZNbj@kpjQmE2oBYM+ zCK;S^4=mpfT(Z-0YZyh1t!925MzzfZ@xLFMg{w|OP?gnG>hCz4_P`fpI+N%OGI?z0 z`{)xcSu0G{cpDl62eM@F8Wnb%``IO~)$`%?&rewaTjWn1?s~$;>V)rP6>4=j)E;P2&c z=D$+*Ft)qf)bAXykgTS{6(%j-LX|*WzO!7$)KGHD@nDD01#TkC!70x%(Tea)j*z0Z z$9!ovWzu|S9pF;B8w{r}EdTGK4@p$($A+0m3eA1eJx`F1vIIria{T9X$HG_@7$g0- zEmaYQiiIU7p7?1s(VgH;@B7u0Pam%~lP%|ZyS?d)3=THO7w`Nk(1c&)&rMG&Wq?ntkq+F3c!FtZ1j8!LTKYMP(Wr*LOFg~eXnwDuI zN#7@xPO6h;RNBjFd#1USxHF+$EmGEz1kpEO%CV!ehy7(r3?q^C! z?x^Henkpl;UY^0eCcbwt{lgy3yUkPG(*d860eV1>X-WD({1LhFV#F@f-R|V%K(td`MRlI|FBo`j)nOw&mg5zpzbj$_k?FPPP{h|q|Fw%1Q zIl|w@8=R^ym|Z}PpE0LAKpV1|YFmX*+}}8+`Hcm*^}nY})B|xhKs-)!SL;t7YeIi% zM4ff|GB?h^!Qck(pTW$0bt3JJHs({F^zF<;^vK#&QF-olSxH`g67jJM<}eb_K^Eej z*@m6}Pq4i;bkg~3G!>0>IO^Pm@7$4#UOYYFGWUTc+}eHsM_j^H?EtEP8Ek}Wskw`x zwshO)>}vV&ty%7f$p|nb7K8oqr@bUP z(r#lN;r}w5m1JeInw#Il5FSB(bn2{|gdg;n@O-obX;L~SpZ#3@^U%*7lU+DczDZdL ze{^N2Hy4jMfRa@TReB@Po;N~h&Q>K1LczR{h{8}%;o^wR%U zH_G{39qs&Pf>ASE5tMlXfBQE=?{HM8VAiva*n6F_Z~`nY3+d8x@yc#WN=87m9)=qmn?YcB2lG-P(O6Zi3 zD=~B8)`Z!K%@RAtUy1ACTM&2AKPIpyPI3pN=HhGFt&UX3=(D|b{PW{l`nq}xc(Z!1 zd3t&lxcBI#^batyzDF@$6phYdw#F060cEIsNDRB2LUu7KUKeYTMU`J@F}dzY^;O^X&3KKS$|Zmiu=(1>O-)pnM9 z=z20!Z&C|M=o%f7PGBNkK_5Th=d*yP^l&D(U+832nc+09TXR54w(@g3QCwaKR{-s3 zPiI`ndww{2f}DnjEzrrwWU^P%u&EWG?$R1{=w^MW=%|syjKVm&Pd@Bg@a-&gy*Ko~ z5g?KoxE46rMvij>_!buCM{<{r@^wz(YBB0hu|T&1-IY?cXtgQ+}+&*GqbxR-P3a)ynRUSl4XIe zuByL&G4XqJ$Ezsg;Bb7DT~e{gMcxj7qm5Y&17yap4QZ;AlV zUm(ZuKys&)SZZGsGtHuXq?_pYHi87U#~tA+%zHC^qCcL%vv|gnrS32w`^jaba}m^k z^z_z|4&gDW8B=B^S4kccEEFss%pCLtD+VtHTPB}Q?wis(RnHr$0`6R0qUZ5*J0H)D z3-I6Sl`0nw!c)NeCxQzvWPckeSK^{QjFgLqOo&;?8T?J&CFfvPaLT=R(1oPy8U z;>echV?2aXaM3D^SN3w8Z1SsDsPk$*XhPagy6r+<{X@fV#{7mpVriIJkC+;FGcRt{ zoz^MZ0o;Dm|8$GQANi1azS^QGsxfMZ>uP8(iXCzM$YM!v-3z;;I@+66hDxR_=0}!3 zcC$N+?;qd9gu#hr68}z^lCUYEbi&AlE(w`@Q#?1^+gvA{%bmNO<6Rv+V?2*tI%g|K z3y0*G=1k*wWnL@(5GEOlqWvsy>2I6v&^i92uYIt#w0^a$v@AD2G_^9lH?}lr#Kxl4 zu--5QRckRrTpt$QLVImz?N;4g;URB|e7a5AtLonrc&T_$?2Grr{dSb5m}Y%EDK;Tm zN&c+NSKY+BPpdi$4YkYJL45T8whr7ap2*W!<7amOuQW*yiU(fY?BqehvLS86!!DZ}nqzp4=Lp)q7a<3~*R~spfq0i2f z%f-@hFZ~T}SQ@m}LzP~*M^;dV#R}sdb4xCS+k6Hpt*T}XO#a5&t=jH77aeCidF~7K zc@2$?PfV-KE6fk^w^?nTYPw|{V0b2+*LpSQ;>}_O<+oB1+!*#ni;^ikCq9+b+mnw$}E|w!q3LXxinQ&3zbo^8OjLNP5kM`k?B-h)jQr< zsT4EglvDwiS|hsn`AjP9xxegUemwn)r%;rg{sOpr3f@t@f9*-$&SYH2CSol z(K}H$&qoWX9kGW#Rd$_cE*^dr=|=_JihWn=tH!GqE3sHbHqp-{C;8;`(mYaij)$h9)ebR1zN5az zgEIcSpXCE}>`6~62omxp`BL(Qonecqet1@5^tZ5tQT|!Wx()O?gMwmmZ;!8^YfByHpJ%bgBGKt`=Jvdydk39DL{+ zne{_JJnf0A@B*sZN4sfgSY88b;Lx&Xu~u^U1L{M4f9FU1oD+G z7|$C;<8Z?z*dD{hT-rN09q&?J;cilc9O3fuhN|Xh0ut1XRRvXl&?$$hGiiQkj_S6E zZ}IL98|RqT8b%8{wY#)qboX`rbmue$)DyX!FMzMTC$4xW>J=dhI*yafiX(-*enE#k<_s!I$j0?SAT>=m~hU_=>n4 z_I2hD=8NVW=6&Wtw*JnUuHTp$i`%Byzd24g9nOW0G$14= z_R2cLa^2*?(dUl&g~f0FYFfcRwZb=fzwrv$hsE*n3J9-sX>c*wN6vi}ol!ed(?z4w z+$YDXhh~??pdA4N@>uSQCiG#nu=D_q>IwOG zwvNm2{0@LG4+kOq4qIeCh=?_Ekl9fHXP}LJo6}LraT^D_51u|?3 z{o2qTuuo-#?|(IQ3@P{5B3q*$NE$rLG`)lbi_+3ssUOeSJA4M-#2&x_=t^GZAF+Fq z2|vFEp;jr|f`x3@ zq(ihuEVHV(x_103*^xaW&6$*kz@Q06zM((66YYZAgf3c-%n-NKgTI$HXluf9&*&3e znKMPkfr7M@G?JaJdmGH84?A~hsTg;M>2eVm&u>9NS}1+^7|xBSwEP%d_tU5|o&inS zAx#bKDOkl{bVG%k!f;_T`1&ntN#N~9Q zubLO?W4QIkRBP26(EHa=jU!!UGP&vtRIS{}A$DV2~tGl^7(OJ}bgf0{^zBMc~1})VcyPZ9m9XHzT z4hJm%bk5Dra_-kI#aYFj!86VI%$CLWx7BYQWqWG9Y_=G$=t~*fn73Ne;4fLpQp{8w z_G1&{3PY;6PRJ4vF`cho7)LJq!Cl0gvJ8`xyNG z5%b`7G?g8q1Mq@c1`6_;tFjW!%X89}ZrT)uR(q)mo8m_LTJ`8Za7Y$`Dz@P=U5y@@ zj<4eu_{b&l11G_XtV?IB$4xsQE|Q1%)rv+?JuBB#a21r5v7uybu8Y}XYvd-N6=qye zTaczyHZn5w4o9BISx=_M`t-KOIM_8xQIgM-##WtavSn&3R6A?K5}qKX z!S55$rD*sncS>F~F$H5gV**cZXLuq*_|;UgA(DdQdYur-H^H}oGl3z2dVv;!%7K!B z!hw8&i~&!;5V-Gu;vW(?9Jm>17&ImiU>6iZ&A=&l${XX|RD+cB(!|K?(C1Wcmhf5{ zhs#H_(V3A>Obj00Q|(}AC85@Cgj>Zod0BK5sjAH*v!y~X_w~FZ$MPV^otv_bVDbvN~7 z^&lMlTfvxUrxW#ONL<>ApZ;L|B<(uYD%C(uK3o*Cs>0H8(BpjcQ>$BDL%&^92wI(~(xC*(}!takej^J2V-7(!!&)M49)M<2&aBCco z%_WVSP2VjeY!9qS=5+ei!gc*n(|7Y0^Y1Vr4;ypgyzm>-%Z6Tc1n?1t8kL-f6PTh$14ACjF~t81tivZvZfzq+E%s}7Mo^B7;Hv~v6C_Q;;- zA+iJSqIkLh-(2A?Wd~);!Q}XoDw&KYuMS545SSVY_p&h6_Os%if;*i9+26``ww46w zOR##s!`!b9*Kj=3+zxi9+hj#FkNize-yvK{FER_ZWPWT)rOk#Xdl)~cP}IjB|I@*( z4@$ZI>=@moGWaTAW?Q@W>$cVg*Y1vFC3#>lN6Sqx&xxnE7lV2*LBkW>fjewh~35s>vmlFpd!Oak|=>Ts35=V%8_1RYtuj(y20~p#Lv!3Mv#d*c<^+KrN(k8_xN>c z#r~GxMe{{0;l8P3lTQa)2l@qS1#$+;1hNG31d;-(z&HO7{|EmK{|kS;z|z3wK&IfP zpdpvbZUhB<4|(+0`p>BSpWCgQn$mptBE2`kY%Yq>Gj>fL>|RDD9g#HE`ry7K7|Zl z@}j=P^J#`@8sZE(P1^_E@pIiA!AKfzUarWQ#onT#&xh{vqcLXeZu($8YrSd9Z)^|HOUOL4Wf|81J3|6s^rNozY{&1EjF-zJ>U zXEHT6S2nLUO*IZN4m1`pO*ehU3+0KSzG0E!n_(O-u|fS+dU`iaE%jN=L9Ir6gi7EvE(c08*&ukpuk#~R2c6xniAC%=~efhqTpZCsRo@*fLx zS-wPt%wYP<3(~$DkI}*~9SkrFe_|2$sjTz-_>4}rAOC~R{45$0!%yI6bjOQyKj_6X z*urXRWNKtLpXn&~qS9uA=^p?MiJ^Y%CQV{8nkp^Bb80nv#!RU?YDP=+ zK3#BOWE4K7b-3x}V0y&G7p8Iw&QBjf_y3`D-r*w)6K0QSF6oLiMxGzbq^y#E@}-Qi z-Ke<+klZ{SzrBKTQ?lF7!4h5=Jr=GUdXCnncItPo*caH;=A`7}s-2IyG8@{Ojwphn zsegrLhr2{{(MU9iDlMOU00)CPup95OJ!Qqkpsaitu5hVX5jy8?{;6DaUg&1Z)#NR~ z8T7D%0ee6UWC&ztYSd6?7yRe^7yUc^et+q}sKB9sI@mdQEf`34g>a8;{ht7fZ@o4wca#k||x+1%7r+ZZ?a^?!+l zg-^KH{HN}$X`oq-gLXA_imHXGr)s5om-epEQ{UQ<&5%~y$`jW*K8_3C0QEYhggg|j z-fxkeVSTh{>^<3vmDJ5qHc!;$6J>*7{?}UDp?9=(q;ZLG8v{%{lgu565rI0 zua;vt-3_;mbgg$6bX+#iH@q|cXGy_*YnwU9&1?{PP_4-Wm}=@y&e|H&@A%RUhchzF z_>4s0vs7G6e_sDc%qc{)!?bU;acx2E5KUdRgB<$K>T57W!fY;=$pM-fU#u$0)_H~M zOH}<&IV-n{lI|RB$DHvJ7G!mKxbz7=L@spm$9cy4!wG5+S0f$wNti= zb#L-ner{@C;Vb?oox}HL8~$!Ss$l?EAiJDfssLl_Y2-^}9usVDx?wNAnsW5W22@-D z_O=wXHyQa^A@1B0qX*eETj6k63T!*CyajYEAZL}o!c>_6yD+W1k8SWzX%3&crL-;5 z5EV|jaG%f!oJa=YJYE!5*;TxQI)swRSxZFSy@?Bg8b-^?=%3PKc|BT~ocM*Dp_{01 zIA{&3-{aS}2I#`Z%WLE!@`6b3)WykSa*1Htz!m>{|7HI*zl#0LL`RGJPy7F++Rpn8 zfuez7fwk;v?Sj{XpOfFEUJVzIR*t=i&r|hOY|^su;Lv__t9BCWX5l{hCz=WL;wXT+ zpeh>68|5q8Z8{h!g`x@mbN?y9B=8v#PFMxLh9ur6c6{d2gVq#?jX+mZ4Tml=L1Uw- zvlYq&yzK7De@fltb|?~Z$L%B&ebD}n@Ap|a!T;*ASJ?vI?)oOUCi$ z%eLFjl1{sG6OKHUT)mwe_}JyBYJXv?Yd>Sl1729%e%PL3e{YxU0W@ci?S&k&V~%@* zH{{A{w^&jw9_Me~-+U`QTV3;=Bb~FIzd4`VH(CBL`b^)fN1fT-Cg&~d81rA2HMSLw zC-!F6dZvShtmty8lZ=taJi)ZjGyuQ42jlt9o@(?*jG*m zF408ljGxvxp6a$ZKn`HDY8dgui$8_4ac!>01;G3Q%rrq}NW?S0{0II)PxF#WbK~+e zonB*usc{U1zCK%h4QgZ`O1E=(8-C`RW?}>D&PFj1RAe`PQE#GFdfIEQMMtFzRN4x% zoV#=9TQ0SMNAe?bhUs%HiMC5gV_MD)XCYr(TdvxzNr!0)ws{*=vmQ_0NO?34QMI^i zB`VW#wdnX+t$)79n%CCU@w4CaS%e}KgHb)b7|BOTE*E`r7RGr#H@cjS^}4weot z;8Hk^4qXX<+5VC0`1rk+N|2!18Sl4Ozpm7E`F#E5bMi{`WZ!Xxeu?7pxLjOzM!KhL z4h{|e8+hYi=Rf1$?qADR7WJC~$^KjZZT>y}WBwif!~O<=Wr0TlA=o2$Gk7Q&r%4h6 z=Exq^D?EwINpo>A9uf+MFGdQ56GE5qx=jD8?*C(!ND~f*Z^0)n743wRR^!OWz?=W> z{rD@ghWAr;c_7;Qbn;GVmi!WZ?~K@nm`&27ka!YJ7n`7%NJL)}9~bYTtd;w72WTfh zjv3-=wWPVJ&7^y%9jx7;si1kO%_iIxnu;66wfcZzi*bbUH=IODBlYcOD`Bf+wOS2S zo8LCZ-p{gg{k$*^?l_u%|ntH0GvF;=>H&kWTeAP_W<`K#Yg~a>%bEYKwa;Mkb#TjudW~(ad znD4N=&bs!vdb;blOFNg??e@pE6SzQ5v{~#c(48H&k8~Kp6Z?2(__BGkyHf4*9R=Oj zy|sK>Jg;51oa=GQYUZr#C}3+~*=jjxTgb*&$a&7bz!t)>PUGt5Y-i77EpJ(6d5=e3 zBM^~6Bx?L^o@n`>rJTvB59(@(bqvjnlMRLR*~Qbs0yzGn5G3WPh0sd(T$5e1Sv^t!HpJa^* zbfmRh#%_XC=cikiB@t->_uqx^A-D4D{>wDfj;A#)UFG&VmHf(uc>Okv6_N``0r392 zkyG5k?}Dkkh5Nsk&vOLS{|4y)^~ir*>57r(vX%1hCM00f*pd_1Ny)%I@m^L#S8wM z{uKWk|9<~`J`VX0`oH+s2kwKHc;Srv6&#jaFm-mQedHf`CM^4ZVhPgvNDyDt0l3mV z4KLzq*#}kt00LiCeXf{;a9h{~PBe%N*AJ*v7lt#3V(?6w@s61$N90w~u;?S)?k-3R znVc6!&!Ai{9?cnZ$4|vQs!}LAdMn%HCh)#h(m}bpa!@r`yAYp`|LLmeDv``oN8{2} z6o>0)>HCnMd0yWIKGYFYWAiujAC?&wr)4sJaT8`qShnpdEgYgGH={Yh?H^ph7t zru!9~!;cz!e$8=l6QOon84HP3(E>5AiI1V|_(; z+h)6Ge}+d^Cs!BGP+!Qa@~-t9^YrxY_RaNu@KkU&aCw*@>wxj!1v^=8&&+Ojz+rJt zbv(6ywM&jyXtTqP6L!75n{BrB6c_9Pmh0yJ=E>%^_y$!qWztK!B4R~SsahH?i9>Me z*(R99OyW6VkuV0tKcMM`Usfe`ch%YWjQE52)A%h_MNKvBdXk}3s{Zi;uy5POG;%XG zv#T&Rsxaf7k`^)9|A5Oenpv$p9R3?HFcN>cSj_@?-p$7nro$0vXoleXksg=2R2W!3 zs;nGUHi2u`y|9OD%yqcczo3)NqX+#(SK0~N-VT#EI~hpZ!9xC}%6_IJy^8wLH}(Z( z_{625GfLH?sI`v97UQcn2aM)i^fi@LhK!CpFiireaXv)CWQ*nlgUg5BUT6O=Ihui95gx?sLt-OuoSo%#8A+pnQeBW~B6ijr1!u zT!r3SgSSdrltG1fuQWglTa2$Wi!>d#m0OYxj6p<+Ci8VB(|fbYAy|ep`P!HKV&i|8 zZbT-Ktlc7IM{pcyW1Q+*;D1REyG=j)-QUwckO?x`-#Jh=I5JozxHR}7_#*f^xkBiV zNLDFT&Pq~zihMQNoV#ITI{({9`|uLpV<%ABrQ@D)nhQ&>P!qC$8?mh(<}0kq4w;LK z$TQvnx#gB}H)iG4(a(6U)C)%6$>RUmo!GD_8XOy;wr zcjOVOkJ>Imd0{k}>aEc6|EKz(sVRQf+YIUTx$t-#D(dxH(1TvX$2&XO5EG1_4bzQg zv)$q~jTIX(IbDT!wN*1zvqe1we(fODV3n8aSON7eRb2H>TVG$*IKw>MGQg-6EZWy3 zZrmoh{!i6C%^lqV?f*0qskMTxg0NhuEL;>8l8L+0XtR{Fr*#c*w{+Bly)hLhgzjus zzj@AhYIz0k8`pZrEBgcccl!?e1^aw^W&2=z(0;+u$fC4$-T%6}xIWVxHC)v4Im_bhv(LH2x!3v9vDfaj4|5cB&3Aoteq_ST>Bwh0YPn-6 zXw_LST6$S3SdN&tn7SGVfja&PU*s|<qW zZm_o^&&l5m^W;{9rTYl|hn_3zS$OFdDG}6cF^Jg#u!fcL8T%JS9}Z;d5&v@_eEo!q7C;UoM`s<00^!Emf}%hypa zPi%duCb;=GI`21}9=G7^SW4c@{V}J!4Ak#$xV@!O&-9|d<&d_AJESBA4+q)@?)d+r z*2eh%;Kx<|rv4HBr~ZgeDqN5xiu0YSsLtaGye}e>RW26EI&=#tx zHaxcvA!v$JetPO($Bx{de)pD3{r~Wd$cs{UR%B~*MEq~|?87j$mPvt#FZ4JWTqZmX z?EjDGu}Bpza^+)w7vzaNknsl2+a!Yh3BXA1*#6*U7?y)=7; zr}%-}^{>PuVt?V0j{Ipu1Jh1ZZ?ZS5>F0<&@X~B0GzSayO(Xb%Al3JUtFf8Pg zLR+zsez_s5`J!d2ZIN@VTjv;tqyAI$qE9VdosB#nJpH^mz3touoq56QPdX|(?%TWC zbK0xfH`vQM?m6Z;eeS8Ak6uHn`l7=Irk*<2vQ~?5gfQ z?!M+;?b_Lp-TKIq78UHDrd+0eFr7;q z#==jYD)thGiQh#*-$=YJI)Ji|q?=6-ujYytCEc zwD4&opx)JR)lh*@Y=vVVkQ*vP*+gDT=|C`6!lN2M9iEr2p(49XO|;||_E+qvl0SY? zsmc?lz~J-3p-#rTWG#%Ym%K0J@Z3nc=z!=R_Q>pbg7?7X^t|++^a1bGcU0CosjPel zeOeP3HkatfFHnd{QWdV*ePS-DSx8L27#JF`aXmZkpGvK*qMHr#FY((0YXUigp5z+I zW0M<@*0B~o{-j84x&2RmB5#Jj!EkQFj=9V<;E3eH*DEnR1>H~wI_+27G1KB8rsJxa zz})WTZC3(!rSi-K*Q6BrU2I0|L#(fKCR92_Oids0GDRDC16;xlp>OPmay;Hzl}}w$ zU4j&}UaGoENw&@fF}1po?hiCAA8{Z!f&d z({3C`tLp#JU(*jUTt~q*28Pl=*nUk&%eYD>n+Yy5N4-nkMg11$nPd*-Ipt*>(x-+xqo#&iq1q|Y&&fbo0jz74Nh3xC>t!!9a@uSZ%%z4+H=(8j&OIVlC zG~u4_skglM0$w9(Pe=D!*LUYUdR`mPRL?q3s^^|3gS(^SqxGtFsO?X?-?7Y<&r{V? z*|i^?_AI;2-ojSTR?>FMTF6?&a+M_Q#iYSKBiX5-zP*@T>?5uc592a!6Xy#rbh37@ zHjTEQ=6~9j_!SM{GXI_I`Kr1O+MJr=>ihKgMyg$4A|>SvXrP|)Ry>2h+8S9Sk6@ZS z2EPA4p1!n^qNIi1BrS6?*R@aJ8ad!;JPzMyi=i!S#O^_VRp`072=1 z6Y>t2wv#~x&$3J9r_ScWaNHD~6-~rZtpwbwd}s$6z#W<{EtO;tz57x`+J?W|i&zr* zdTEvZ+??~sZKM!aw^r1cfjMnH-E9>*%uaAga!G2ONlVeGZ0MaY!x0?9@8E`Q{ow$)$M@0VB%{c#=T0qi}4gqmA{EE{3n9 zJPpQSU{wnI=bz*6<6rMT3KsI!zcDZX`=j>T9hnn8&z|-KBOK2XcR^YAISltx|)>}dwLzoK9uAgi;jX!^RO$oKAw#PrmKB&n; zBip8wHY;w(r-Y1#WyY~)8;Y^q_FbsTtd1o6GFwJ#%yPy)#og1p%)7xm-`mI2$Q8jy zb)RFS!|TlDaC3WjW?RAbmDUyaG)_oPsF~O{F(I)|LRnuk?`BUkkIVCyI|GhBv)#u% zv%CkreZ76W*}To%y&NhWvi`8;aO8Gopr=i9w{uc_{#$}vaP#cNj|dk&wqAzS{ZpLb;DytR0G{1XXLE!{!Z*UV(w^Sy{ zTU6O%Zdr%u1*_pjUJje^xXR7!Q;Q!PM)J|y7N8hALmEUwIPmk}Enj5n>%g;H0j6GY zrpC$ioPW83?SnaViT!E3oP#X&kFj!!RT)Z-qFIh|S$~4MWLG2;j-yXuB=3%Sq(d816mN%|v`cz2S43xw9e;yysN%|@9w z6z4lo=s<^}J>F()ZE9)S04h?` zw93%jcoF}obGREXH7++i6!oH2Fz9M(i)yOjWHVorjy#OtH6zq{acs?_sRT>Ek@lv} zO8RFfoIx&#`*oX1sa0!cs+Xy+YU>Icba`|!=0~fLMISa5F&DIyw{EgtvK^vF-Jt^P zj)S(}>>;NO#D1hN;L{|m^R{-!oL!umaCe;J4A^s8lP#m{?;Q)B{oG;if`n3ucN04% zNr@>5=X`&9TX{~oTe!2je|N{+H9Wn%W}n9Q%satX-M5sU=C<9lHnJt-+|$dUcGl(+ z@XcAlwaVEXCz7(x>5dO}gMESZh54ZAv{5oPG(8{_;0AA?1Nyo89Qp?O!TK&_HC_~| z2`hECnHLk`X#W8&`ARo~yGeVkPxDfBSCvdc@8ozqb|Ll{Kf>zVUb~b0G#_33daCUZ zmGM_}3;aV1{KKKJ6HbHo9fLtr9#5upsH5WCj=#cme}_)w8a>XBY9%{3UPWfd(NyGq z97FDaVBBH{;@BZ}wR^F4 zv1jP!GD=nPnA(|oC!7{%fn3s0@6obgm6O>?+QTMkgZ^MN9W4_+!n{U@OXb?=v{K}}V3{T10w?1w{F!9b&9MWqedr<|%5B)RcB6J(Ob=<#8zVWKjtk(O z$WIsk3iQf=lizGeba=NY^3ytiL*vz0?g0! zp~5K-U_ai5#h)$sK9~pBjVZ}XQf7q?lf;pSP3%+Tr|#{#B*dD+vp0rlK;xQM@zu=9ycrSF0WQ<;uo!qCs#T%+e zs}oemloVVAUr9^gaaZLnu$M{qBy7nBQdOl5?jbQHPh0@SsH?8WyJm0vopu0T9ytw- z41a(&-eBurC|uRv(6u(S#((a(X*=I;8Mhkd=@&3J700VTui=AXws8jvu8R7xVlm-> zZoRs_DiK`dsm6jk&m+xB%|^H<$LVjmHT}7={iiVsUB%qucHy$lq+6vusP$`)>!y;E z(NL%bzEE1f-_XZ&+Lp<>7(5~mURAPXzNMJ`r_27I_Qj5AF4;5Jmyl2?LGjJ<9rHNc zgI!}><6YmJJ?&|%PFqE13wK-35AXGawTXigKP662GAC&gm-_m8%XkL6)$WS$9LIYW zdbGZ22{jUi`_u{be5KuCyUAv-*0OZByt0h9My-Qw!|eY!=Hi0f($&ZH(Am#9f@v%+T6}$f%%!mSk5pU6tbvszoE9Fj3K+Bh`uiSS{+J2@&E8!gUvYap!Yw#Sc;NLtODHRQp_iP8N@4=q65wvhY zbTU;oi^`h+%O_w9XvI7_+b3?XWpE2P#@)4JY!&yvQgHBR%Wb6*;pM3%LMbd}$cms1e{3$LU~w6J;zHl^R(>FThIhIyx;e55US~&`0G(161orr! z1pTS{a9_Mkt)X7rG*81e)#3=&E>e`_>jlbtC3F01Y=3-CTt^PnJY|ynI&w8!TQbG^ z@mWhq7a}UDi!xhPk6yB0b3@w=zMc&KYl1qH&{*G%{OJumHw6s+j9Cp|@f^r6zA$Dn zH^%+6faRQNmAUFVtUdF1Zu>gw2M z>*ToMUgW!VMiF4a@bMXir)o9!zd`<=O*iet62lB=Zix=m+UZJL0W&vcx# z{=?DvgRz>ax#^VAWITvB#ZEsOOr)6p!1LC;n*RA?B)2EGF^>B8ym7s`K!98YB!SCn<$5F)1V-6e& zPJR`N>a@bXI8CAzKxfb2aOp>O8)7v5REyGAh?Mlb&9%~u z@;vaJk!aJOaY=uVL$jN`wOn{R4qo5z4QUxV6Yd>p%PlX$wf$4%Mszg@#yGy}Y1|{K z#1_S7p$d4S9Kk^@U2Fpra+Rny+As2Vcn?!z?$EO2=l+8J48a+x9m1_bqf?fqUO>B$ zoqW61;cxt@o20m$5r@ajIBRu^w~9YUQ=db5DbJ1`jLem1ph=q%JIJ5Ss@U$h4~@qu z&24RS=Dl;8nC1rV-aEurhKU9lJz5>(5@TH$5&cNaNmn)ZaL;AWbnjE2-z$0+xtchq+cnnzOhrw{al$HXd}rus zxMCPblB@y?wYou{l0~YrU!iMjV6~#kAGfYV-e$J!(J-w zAx?EZp%xiYugDtk7-s8r;zDgnjiBBb@5O$cO?4MXi7W9I^tL#v!AtBhOL%{$%8iuS z@n%Z4SU+-7dg5Tw3TVgW}-IrJcBjJvN?=u@BnwXLw2P^e1d9}GB370 zUKq9Y6gDtHnm9~+(eq__^91;}xox`HfxjOfaE|FY#XYG`2q?$bem1sycY*ezwE%9lwnbIgG#~)y} z*(0s_uOEhbr|b+I@FxbJrtBvlHET+P)HirJe+tRrHaOQ7gy~WrZk1Z87*C2Ps)pi? zpzuD~AQi;LZ@#=-`HF)p^5*!Lc#0~n-mA$B&Ti2>Q_sBcT_DMgI z?j~hUdY&-Tw+?UBhn~&}@ub~pswK5a_~bq3sqMb&-0K?XY2nS|o$Sf!QQY<1f~TBU zVmXY!r!V7)lwd` zeLq!q1wLed_>k4WK1xT5fSbJjRcWhn_8ROe7$BM zh!L>z3{0qRrF!5Bn|`AE%#R1Dnp{kP8}V~mBJblmHVD3a9kA$KD2^w9{XLfsv)3J9 zuiHnR8el?ssKpL!caQ0Vg>Yf}Le}N#cp-Hg<(9miKGqGsUmsNc-EmGCrW_;Rs5lJU z_pz+XV(RQHD#>p2&OB^b2Vu16A{)U`r*Ok4!bX~z_d+$g<_o^oJ|K7>S z!gXDe9Wa^C#rMZw%EhHq+|*;J($%nJu5oGpGkk;n^&4*;D>!^6e0~%z^^KVt1Cck; zrhJ}v{7E-M-PTmusoYWiQ;Nb&wZ&6ondIJN-YtwA!FO*tek}bWjYHK_mL*4%$?^_8 zNZp?@7*5GB*rml$qj!rWa<^O)^~z@4wPMNyyyU7!<=; z%SWm+>ukaaGU-W>XRBEx9M#t{SF;99-woT1tBie3ORRcFQRfd^7HeJe2jjmaV^~bX z%o(loZ5HPj#~eq@`OtLrJYT$R6Xm2gY38MIBt1&#lTa_=Y(nP5-;=7P`IpO}xH)+3fwqtSb)2lQr_@;OI~BU--y0_nfQN1-_5tC|po(%e;A$+?8^8ti6lPQI;rY z6ovPA{@6jbv%|40;ChRdQOZP8AeO>ruc^o+L{v~ta7_r{H@ZJoIW|h(#*CaM+6lZg zGj|Ft&+j5Umq$b;GLue$Y7XZ5@q}I<lN9VY*kBRq-ZP>?2u*gX+iB}>y@nyLIAEpQMcb=#NCCg~G#GUdd@{m8!(Y7dIC1d!Z3JPgd2!bMzdU^cUb;6~mjOoqn$< z>z|N1m~3o@DyOjNZ_^qJ{CxWWtKQPqzrD2JQ)^vuh@GMBl9VTcvgSrgUw~e-y~NC zaq#k|-Bp?${u4DxyI&mSrc_!U(C8m{e2flnU|zZpzdjzeM4}**rMSpVVTv?z4I9Bb z{Zw=?NMjxF!fqh_ZMb%=qQc67y-cQeZ1|PEzMqPUFcIc}UsM>3q!NgABlxqB=FpfG z2XA+wR{hLOXTU+!OQoIRoxMIb1_Y%SF84?HejWZEc}PwV)6oVg2b2-;*Viel(D(n& z&rWki&?;|Z`IUj($ajEnEG7fSD&c^K$7D{XeU6fX;GAPX_#@EFMD+glRspBEB z6H+dGKE9~J>hGFi+^%Y9%E0tB;VoGhyz;Piwm4L;h{jLDAr z;rdd-ziJzr$RD^Q57KtPQ7T!Nm+N&o5&&D0Gp{uSV0ra06*Dh4SF~ibuC`9Hd^0%= zo5Z|m2YT8b+E3c7_GEi2$7S4h{&8+~sXb-ACf{hEKCx7qIcayNYngsU+9GK#rfHrg zW8$pDKazH{y;b&|bJuYSjsngr?tZ?HKE+$qD|$P7mwT&t|K}O*QtU2!dD|h&CG!na z4zQ4=1`X`ZxKK%4L8Ua+ztxWdS*>H-V*F;FZC?l)v)$oz)C8rxZ0%<4YCb}~)qL`K zYa17Vj5HxzZlZCP;RKF8o5WiBnflWD#lmQvUDzY+z-K%=*y=Og25n(YBh>@;m^Ja$ z@iec;qLqSms} z3AB-?Y$WH|(=LOGDAZdjjQ#{vE|eYx^}T`XdAoZ zG0-t~k?roc*nTST5YIz6wuVI7-bw?!*ETDQ_%=nUg#TV+e8Dy-#p8#R*+08Db7%vp zQ?vu4Z;P2p>snSKcI&K5Zu55i(VmV`P;4U9llJM`Y z1{eH|f@WOm6)hi`#e8^L!UaVx9W{mVxWg+Wl0>6ivSx#D3nCludi<@)<_1#Ss>~-vCZFlh9Q9JKBes_*? zwR3;+{N+2AFfH+Y(!{h|(kbabWmufPTH1kWiYHz2ElMbpv_0`vLWu;$Q_MZx)zvi$ z=HygQ1@BDnG4FTp@80@wMO^M(j_UR=*7_(~N5HV^Y4GXwVqc+x&{23NbcXdI=y#x} zYi87#_FBp~J~&S}S2zngqhuQvu|2eQv^+62HJu=nW(%GT`AwxvX-(TuW#cTaZ>yi9 zkLgR1>RnjBSiCIu*55%>YZ7}1ueIYelFAb=7+-+PNISNKI7wc=D_cpjYpy!3JpT2@ z{TvJ7z3RgECI>vhUa=MAiB>?5{TA+Ue^fQqV8Q1EAy-GP;hA$Nyb<32tMDfjYWJwQ zJNRPPfq!rQ#RdMIJ?~ER1>LJ9J^{CQia(L;;6ugIM{3Q-ST0yOVQ1B+-nMh2N>8Qz z3BPbN^_H2+ONX}XJ6!tzm@}VHXJ=s{7USRe%AMb&i*gzXy}Mr(ET2+(}u9E5TYNeSD5`5w-MbCgh6nPrjfUFhsjYrhtlkMnkg_ zub|9mic+Evq#DdkS?H%<*cA7{Hcrn+Z6?X5d}X`w8V*pOvqC>JQnTYcdo9!x{%@^F zh<)uF{KS0B+t+ZL-3gP$gxA$rn4Wc*La)dfVir8;zN=oSez0Nn$4#}a)I2&e(v}@< z3KQ!5==t!))F#O-f~U~A?Ld7qA>nHG&pw_*ixjhq?JL8i>k z__O#OuGHhXQqKXcNt72VT~$Rj$=W2+(H80M=q~Es=@!8>%#HiuC*4HdT+QF=*_!^s zM*S+|C({(O*IdK=!TK**?DtI{g+=O>N(@9O9hvr3@&CyYU#oho$t&879LJ37c(P9F z{F=@%ujYs~g}(Y*;0u|=*}B}ir`o&t%y~c}#|WK-n!=xWtWFYg3YYNfw^47I484q( zOyA5IEZ@wR%^gfH4Xwl>x@!7s);^Afwq)B*+g96BM<(ZKXI=Mip6lMJ32zcJrkS30 zYPyQ)i)656_?A|cR5ekZaK|&jJ0zh-V$sBp2}KhQ_@?>Fd)~kyZsz_Iw&VcsDqm~g zIgj0I@Y-BG?A5KK&F4&A&{e0wt_M{S+WQpR4BTei`; z)N#dr*!Io(z?#9*3>M}*vJyL)s_;HaV>*wU(OzyKRQuKNUBfJyhIDdfPczgtJH$&A=Vo5*r9U9ddVfv z=QE_0b}(J-VT1XGYNm+fCF8jP7=8vcWJTz63%IzwmU7ZXrg4$(LnpKGoU5rfhkS!; z>>D<{yHr|XRG5oE%Nvpo_$O?a;`Ftw$_aQbR%S#uOb~TE9QUaAtMcHFb_@kWZ>0nC z8m_49qOX`VM{!xJCO4C|<43uXt+EPe|9I5gZ|K|^;G~(jBQK=B^U_m)prLEU$6VNJ zS>?0xTT(>kz{k2Q)s6ND;|RhwRTihd!?3RRfIikiJDV3TuW4+t$3Y<9qg=R#2m2C| zYr?QtcFFZ)6_l=I;4X_lP--iG#HQhi{5Kc3`&|Ctz^cw0?v=VRxgJWKIjG$3`U?k6 z1lk0Tk~~3jKr?tw5t-^e)Ll*L@YY&NeUC-9b`9)87N^v|vJ zoL>6{TMKxHx9l4om7U|=N#1t8R|)BooN2PA^`@(k?rz#>Qm%yQp5mS}?mn(Bt`tv> zgn^0wBpyzDoOnNRyf4+A#XZbD(B078#BpKpnGu`9QIjOCrFE?@Zy<7@qN zaU|1TI$d$y5#2@<=W#Kc{;U3kVXtwTIiGEuqa4#?VMl%YO{-$rVUgJDW^;GktZ!$` zWuA%G@gn0*KJt-`UBNiYI2Lx~dGg=Rixou=l_sI{^N1ycYPxLNnVKbd)y-7ThCQIC}L77g1MTyzeH z7qY93MOAYIZOu;ytBH7v&!E3Gf)zh8+8e*rebI&TQh18rqCZp8N8;MEIeHr0!H5#g z4G%sYITLm8?I}gSx=!Cp_X{0qgx|M=E%B$L?>Q=P4_Jx^G~^|B<$CnAxSXAywmS9_ zmeo@FZW-ktl%U_`1z;j`l~M7ts^a9xjaQdaF9e&L58l5`d7`{iByQQ8Kpyzhh0eKlJr@+{hQFfJ;rhv|Tm%A~C4kpQSic~*Z zJp2dAG#{Af>TpT>16P$&T-L6F6Uw1);WO-O*--iv<4++U_>h@*#USqV9q?jYhTrJ| zB?H&?VM;EglKheX|6i)DZ1{ERk(9E@QeY$w3FrNN(Y#p#a{~o~GlLD18>D^??Lc|H zBC^^ZmFKGsjb-<7vrZ@E42#*zizP5Uo0o&*Hsnf2&`BgcLkgQ?zQ*{wnAW2y^wzjVnxtP4~#z?P}U?RPaeYrpqNhFm<O57p7li&J|#{`Dww8ontn<16Eb+ax$fA#`1!Q8Z?_AsOy1)O$%zG%swUk} z%#v6tLGVrX!9V8WQLicTe6E?)L)v?U6(*D*u$1>5p(b$~}U>Q6esu-J^z8N1H?~nuj+BnH@ z+Hl@D)YQ?`*Z2o%^oqC)Hq8Y6SQOgZ#Sel(II3-@nWq_|ouS!Amh3(CBUMLLEmc+3 zWbTxo!3@HRUujBC@+xX>mr^6%UU?x;#pmM&O#IBzUEHU~(%G^{p25pK&Ez-+H>b() z|2J_@>Il23CXPBcKqLR+5~u#9wJu9Ca|(#Rhb;7MFd^qf7o&T50w3QDzF7hm$XRY> zqnR+b^5aD?_7~i=b%m;6q@Tg`K-!VmU|l!LB!fmyLKs_1J<7G)4!%8Ac* zZn*|blRL4$6`yLCx`K8c7bKHryt<5P5Q)!K$SQcM0r@<&N;=j~C7 z-_3P)%_(?p72t~94%K-_-1zItUF0)xnrGr`{ydr<*OM-CFK!~KQW6@|l*n)47x*M( z!~e20>8RD=D1L>TxGA(MG%kE9T1GA^&5qWG1&|eu-k4}+et+5M*Yjc{xusnJmzoP6 zwHgk=4EYKbc{y4yQZi*q@KkU}@L8Zj;G(~_-{bG-pXK)i-UcoNGn0PtEW83X%R{L+ z8`_NcYn6q+%OozvlQn}heKoJho6e?=sE%qgh*|a71ue{uruwPuBgMHNcNH42pOu8& zP=+j+f!Z9pCSoN#7JFI>T8^4CTUuMzSY}&W+GbjHmSx69dcCk&Gh6+i`k?lPU^bXw zJ*v#PES)Xa=tqN%>GWkqyO^jyqfZtm8`8j@h#N-1-x?^&Y=8kxTRO%JGNFrs^ncav z(NyPs?$Tz!DY+YttED5EZ^0)1^-K=fZ zw&)8TmvGv@_q_Ffp0e2=Nj;oaBvau`?bBYQlqNkh#CcRNp{tO-yX(a{>n-!GOdXoG zGObrytF$lE0{+*&{@y;``M%pJ=lzrX!ywQ7?7Rz+*`ppHKfTSe%hH6kR@L0X{LeJ*pqci?*FT|}I$&$1*tW0)IG)HyM6mNk-mQLrycwU)0Ebp82RiDLkyo4#x ze0H{J_$?aYm*~a4ErdJo0K}enWG>J3kJ|aU=vkz|CnH`N zwZ1)PzB2S97N%A78LX0pk(tpdc=~Vg(QS?nVmI!~B)%0-95WoBRop9kMN32qqVb!; z+i3r-Ml;9^$b5rwx<9sW^nP zx(QaYDn;e-_~^$;W#v5bM5!I~S!n#Nhz*t@A;s?)grRJWcdE6~*175-Fimr(#lE2)oCT6lLbgf6Fx9$KKoz z@5tA5!tIAME?e@NYnYlVBK?ML`LOh}^erc>4q`1~qfv++yFJ1_I(~}NM)H%G6jWy0 zW5`_$hD84`zJPnvIZ~BHqT9*Ee2(`qh}tMIS6j#3WC1H}_WxH}3pz78@!$J7i#337 z^##A*kCIZIoItLql^(=$sNZ#2YqPkyTxZ=0FpS%<-n^(HjkvE>jdg}Z@QgY2Y25mm zIK7pRg`+ch&F|)CHZ$k@s8Qyj#q2sW+Us;i_rM>qnVsz<>ny=+xqxv(_)QAPL(tk@ ziFw3s?AIHTLz%k$3SDI(lZ}dyt<;2+m>z>l%Dy%F_MP0!9>EFwnI^erbe1Y16FXeN@W=e$ zztKgpZt*cBlFpGdAI*HaLUeO%Z#*Af$|=c%Ms6cpa!#^LvQvB^EV~iml+eM9A?ZWY z_rs0+`+X<&v!?F{z9025@s@rgV@6;gO`uJ1H1~~VO?D%{8I_(WH{rwV6T36VIVjzc z%P7s|a&jqhmcJ@9q+Uu_OC76WKF#TI51xkgrZ=YFAY$y}j2DFWSjc?HR+$d!t@;7| zJFS$Os{XERb1mDN@!2)MQ#7mDmaXLe{-5BDyhZQIox;d+sfI_TDRh{_}SLc ze#-Wp-D<~WVtZ;GYHe&OYAPwOm4}*EC@ti6^4B!jj*?o5>x^~Aa`CowKsjQmZQrF% zQy1ASwuKhMIvm%?Z?=VY!G2h+uKl3bbhdXbau4?fyd!)!{l(Jeq}^r(<@5gJd_yd4 zg4$25pk`AytLL;o^~(A{=Phq;e{N>kIn(@UXJLvQ6SkO;!w=9`wU#$@Ah?YFri#q62ZamK8U8kUmRn{c z6cul51-yp&__BJ%@1v4-G|Gt$g+uJh&5~clvq%4>eYIwAa>l^)LFwDlhmj~9{eC!! z(vK{Xi|>C)Z}}l3kTbL-e3w0VQ#h}YRSZjRCAYbV^qlkmY3ZQ6SAHhvrXjF8jTSCb zKBb)GR2EyBT9%rMDk^#U8|+;Cn=WM zS-`#9eb&{NGds;7;zrxi# z8lJ!-+ar4ct%W|;@enr9aMvtvJ<^*S{9V!(rH%Ff>@DrOsITOdYgg~v|FS=~PgfPa zgTo6+Jl(r0<(2<*>UU{((@Lh5@z?h4@KyG!se4lYP2HFBk7urHwJXE5$&ppdXFqCn z<2*ZV%V8g5FO0rX%C^n=pLLkcXRpN5B50qW9n`Bhs^EYW9Rswd_#P#D7rV-O`#5di z!#%B!tsrTly38n!X{x?dZ-mQiE&7526EY4$wqbrGok*EysAVk!vXXMsFg+63=d z!DqXiJBt__8hyDei&Wyb<<$HK7i!>Z)|3-bvoTjT}sF$1&0< zQ6Sy~qR1Pv2Ad;8!l%$Ndhl&_C_%%$^!`>Cz8;uMLEqDw6W{ocdwoQjS(8S+s5 z=wUt&l~IOgtw4UgQKJGh_y@_yO-&F{CofBpVQdZ`b! z0>y&KP&hIu)-&-=94Bp;OPI1)r$OW{E&PC|H@mV(`NVXK)|f@6YmjBKq5NI495Xjo z`qI^qMHz|q7f>3R`YHX%2P>R}eAZU>dfIxl>?2wOCek~!tPb7P#*@!8+|?g)$3Fdt zx}NlBd+sV8wY=KbUe1=u+TVJEDQ=9_*TH((G|+6e?6h{Y7qG9iO}AaKIc(eM^;~DU zZGI&873-6!c}2I{*Wy&MjkG|%skqE-Ed#BsZ3Z0tosa`c*ygJ?Eh~92O}kIq#SB*} z^y0eiVV)`8iN0`3-c(!akG`d@lln7W+xwVCIMjdb$L&4Tm)Z_TPFF3@FyFqEOsSuy z{f@7{WZG!IFJ(_kN@}mv%c*i&-_*hW;lB0WCEmyGubfS_;_PEXaCk0Kr>cInrd_ll z-&?bDesrh<)br{?b-XrE|J-rPaR`^lMYWNAzg*vlz-nlOd=^(ws7t8s;OBL6lzQZqa* zlqZyplb;R)y)CE5FYsZkWv!i$G>o2PNqm|$mh8ZbBL8E_s zEdH5aBi%wbKFrLBq`T8+L9^QmW$WMfN8s31O&^+Z2Eo8I@khL8Ytt zoUM;#tkOy_`#gOZkI)<(A1Q13R{eulAl(Eg*|(vbqUsuX-Uhdaal&>i+n@>TS|@gGge z=3VZ*rxnsqGQ@%mEH+>6%8{+y~CI`Ry}p zotRs6qd9KAsi~<4lY6r%yV4znsDRX%SK}fv3%Y*>&!4W+Q=yoUf!n_cl$R!nqqLwz zBem%4YXq6&0%x~&v4u3Sw1-UGiM(1-yyd4+9!G|IqdRtDR~rtq?pscemC+@H>>sGhr1PRmDh0S}yM6Mg9!3aVK_&6)=73@c$f6d(u{PgQNU?kC;L|jaFnW ztd1?@jQJUp-?`|M2gyBW$Fm{gY$=F_mz{awK4Ugs&O0!4D+*2_yRd*(+aaX!9tk&S zv}z(eHtGnw;050oW{WZ5GhvbOG+8d`OQf@J4vmhFbO{d)Nug)KNbqIQ%zF6&uS;!a z^d1~$ZRvn%99c|e;7tS?;pL7zc;1FNN?YG-zh!khpWNrp+AGR*jpS0JH%0zX_j_0G!(FEB+bT{U8WPV zO`Zoitvx-q^&#P0#=Vil+z`F_n)18sRcpt7{c$l5eg})C=of)uT+I@t0|%9pAWK;rDN$b<@r`s=B+oZ#jCg_C`3D z;hSvhSfpRpTcehAfG~TPJ?{Xt+3)p*S`G+y8z8gV?MJM4$z*4t;jk9x2@}kN@}@ba zi6)zAfpS&e#xB-c+#r4_ZKY?fEQ;hAChWyakhOj!EhA%QZ ztm9>oYxF(IQ41PLQO=QmcFHgCO4ehw{R+=u2kUGPS?flz0?gW)v8UaPe$EMUF=xnU zsE_4wn16zMcs@klxiHZOv&ycsuGR`A1gj9ITcMfYK-XC(oE26JgIRf{gg$uNtBRNS z@iKOkBF6WLGqFL@;^>F3|w?~vX)ePH@e z>AsBUhqs)^ZNV+!e`3kR0I`mBCUdM|<~0_<@|UHab*p(gGqN^{2lDrF<+$9+9I$k- zj7EcJgl(Q}+RNK+X0@|Ox`gC!q$2V)%TMZKt&P@HE3DVx^r*4std5hKUz^2L?Wv=L zbGzfZ)?GcTde9}et3&NCV5(-d1WhUOMPrpT&Gd(PwZ#dyzJ@Koy`Oc7c{wv%&2rY9 z#Qhh;Tb$XP$&%T8QaK_omR(9E(*pB9mf<9pqvqY_`j$DUfTt{Lm44QLxB>Q7KVeVH zub0r;X;Zv*Pia?0&l&HDlnQCxGTp)tQqa9#_i2aKE9yXQMepq$X}uqc@881{A>^5r z@+|dunlF<*)2q}){%$E-Qug@Qq}EBz;eYH~s4JfJUiXTo#}dEM`Py+ zr|z=4p0VRCaM<)>S~eVBZD|x0Y(H8Gn7gp5W-FpnfzR*`$*hc|nZCOD3Aw#hH1{r& zR*KEV=F)%C9;ul0Ogt3BctVv)ED1#l!<_q?q)EGI1}WrDoVn&fWBne5eJekH3VALcypw<65BwAN;McEc zj1|5kUq4X#Q`{+R7hVeg(i}}p(h!9n!b0(_*qf&G7s4(k^!tUG!e(I(r^+?rPWl?I z85a_N$Gp)=;a^ZP1iD_XLgpWbgT6ef$RALs670a0xS4&-=)J`^{4A1%sn{WiAJuR~ zSBk%lp1_mbo_)O*PS6EBQ)v4Q#&24GB zoNVr7ZeZ?f?q{yZ_meD->_zm8dNpkbx1^YQLoJ}W^=Enq?JG5p{*7b5W0GUB-iYLw zLNfV0oq;=T`>h)+W6gaOt57mIQCw!aXgQ1PPqFT`dDTU>w)pjrnm>c9J%xshKbU6z zrNqr&oAdBQUk{6`t0h7zC7DP_gUf6VXoHm%h(W$-H6mJW% zp37Kix%_8v7O%)OH}y~NHb)`tiJGq7RR2+zs+qK(^pcLDj^~crE{pebzdx;1ngd@} z)W1LFg|Ar3zLbLgR{mirQ+zdjM|_?9d!W?msjK|6QhIytJ103lb3Aqq^5pkcbLVvQ z)DJoQu2lCJcN;Qs-#Yg>9yqgdb}X(()h^mR=K#-Y&vn-cvZ7U7Wuf~#cXfe3vX~jb z29kY+n1+Lx#lf5V>I#mC0XoQQ|O_rfgOyRaRJFX`)8wsO>I7Yh6)1ti8PJGWK zej?nM&(Td^7~O@=Vqu!o=SpM5ZLGkOxXcgI*wu$Wu~eEPek=SAPpeS0Wq2Sn=WMX~ z&jnWo7Y5e{Uj*yZVO4;1f}PcV9X5G@Zut|WX=XAX`y8KUO=j5bVpF5H+3i>J88Gwo zcnmkJV)zZG$H&mV?}mynFUph4z0Md-6g!&#UWPtX%fbL)QVc$;ef)w&bb^<{dSj$77{v+hDtWQ47p z`m0{hQI;f0f*r+$La<5Os<%P~*rQ!wdfmX0fD(QX*ZL4!WBU&KfB5|Vu$rtN%tMrN z!iL05@x3WX8}w2pwdGlfe%l4hRL-h-EOpEmm4eDiDINb-EwdTdh+wWm4_O}DQhOeC zB6`Ul^L!|G`>dU6P@LW0QNod$9WpPdo4Jl=+#mW;vI+ zOs2&tKG$8EIPz*mwBj^*-dBg}HqN?Po$p+R_on}OYKDJ=|D`{NUr4Fw8{*5H67_Y1 z{n*xLhBVhWrIvrZzjo@EY1z`EzA>KM9;YXtcek%f$~f;02>oN}kvatt$VC@@9mjFK ztTW=csE^d1so!c}I4`?%dMdl~y9&8>xeB>Uxre#7(k?Ymi{l;XZOvwVX(@y|AS~CB zHMxp3UOd71%1@isRuQ5xKbuJoNONGLw~__vd$GJ!5~j*Zxv`uLChH&KHB^I}i9g~M zVI%$x{h|y0`aFs6aLPzpR%8vDz*e!%%g{b5bk~ z2W%FJyt8nbthC8h5etZSg(GAXUr05Wv>g+SWVyte=3^;;oX;c(K*Q1l6EIo|<6nPZAkr*fMGtaUXvRvi7cF}BtY+*BZ zP@c(|@f*G{-?p44aaGTj-ImD~;B`>Ie4F{&IrCt+S8qsv2)6gOqUs{<7lyi3{fqfn z*gjwF&Rp%N-W>j00j9&d@Y-8Rv^=2^qm-&^*VVXvuB`xRkvpbw(tP6^xrh0QWsc>X zl5>O_%#cap-N%XT4ld{MDC8KKa;YQCd8KJrc8-5Gd26oUPATTuUiXPyL`-= z;5i9eee`fPvA?vPwKcFFu#C1h(_cHkahK;cf7k8tdQw`YzDZk-((!|Thx@!f4lQD$ zwnKeo`(S&a2DRdjQ_e^3Sw1oKcnXR_8s-z_igaC@fG&zKCe&p zP4-prKcl^OoBy+vEGdqZB`LT3fBH}RoZiwN(Gzn!J!{+_Ty0#F9D-vzcd<75PI&zT zpyQo$9d=)Yn{~=H)78MW-Pzain{KFCZF4NA%=65pEEyJy<)KnS9w((p4+Mo~wYFqG zJL8F4E9R1NN#}5wE|acHH>IhxL=KW0k|kVDpkBo9k`zu& z4oTcV?SDab>=$(T5wLj;;O*>c>=_tfck90z+Ej<;Z^xK|6S2=*c&e%8y=}n7i$?l zqvgXLLi2*1B2|+or7z`H#(A>a-wT6G9jyj_!Rru*8=K4E2PvU^$&~mf{DV!byKT)- z=Z4y6*e0?Ijkgrx1UJ=miH6+_a*T6Gf7)zLTMK)N`WXb%_x85xQApr}wH4Y?ZKc*( z`;ymk)PBPL9>uX2{Sg0Ye$?zqT1)j8R6EuBPMNOcG^biwceZBMJLdkToXP>oBwZKB zif!QZPlE%Q5G6QS$L0C7MxB5t(#5in-(MExi!mHKtImG zjcvuX{Pa^da%Xdko?V`X@E8lFy!JOtE#*J!sqOq#@1sA#i@3)Yw*8~}bkSMaoy+^u zcNYHDHNVyWE@fxRN#Aa|LZ^Cz%;R$TKK14Co$y8=lWg)_^9FqrQ>v%j_ob%v@J~s- zoF=9XO|keUdoy`Qd#ZTuyK}iWxvn^Wb3E5K>nrr`P$+9SB zBo~5sJm2&kj-8}wmFa+74{iK1EUi+w9&;uOB>$!FZme;M0%R*>#WS*3zvX>kHn>lAv_56DsB z3ir?-qL;(N(DXhDP7nML=uO^oV(=`S#YLg%^b9vd)oG8K`XG!0Ew+NpX>al}Wucx! z5BumbV@KXV7H!4Xa(+0N{ye>0@b~Bs6q@z`1i4 zEW4$NoW^l-E;o&x#)PE7FCQv{~ZJI@%19a+#sMLV zu*aAx&X;4#8PipB(2||A=SkBV)6eK8LoG?mYWi|_K$cYS*!Qsi!9MI|p5<`-?a1L? z>Na`udU|=bc>BO4$ntF!nf@vwAuo?~T z7SAW18+6kgbro^#h3tw#gidr`59_P+Pn}adS3Eaeb6n49uAigVP&Ml?^Jeo=(?E!i zR%N!bQ|Ts;5q7Xv?j$atD&{FtJEG6YoDzo?BF~5cwdB-#X zt?IOLNgg0ArbnZ-(a*SQScC(x&b~5QC6R3t9bgJX6TZZ;*w$z&ZmayT4dlovvXsqn z4d$YgrZ4TF=kfM8Vv^l1Y$KW753m0lCfWbs5zuUq4ZM4nQBz4n+?98k93R>j9F#N2wCb*%eRH@G3V1!W{kx_Jq=&X0;tAlx_Fi?)pv_^sc?5_E9fgpJt{=Wu42DF^uI znnWIxi@ilU&xdnn96bG{!Q~%zrhl7WCwL$>7jK&@F^cI#t=Pk8WjJBS<5TcLA23Go zoY+H3H8oit)|Cs&OE2SJqml7z;u1uK#)-Q0=hEXXy`o95gfv2MiuZ-ZLPtDO4@{eJ zeT)-F@&CA&ESub)7$X!n?Xi_+jygmC&T&nxZwp#3keVuFwOJM^tHh|3+0w>-h<&Un zcPo>+5NF0tTNX7NXT@^5NSc4W`oVS|FW^htUr-1>(VUJ_&aY{mDDPUN4^&&~(;Ru! z-z-gG6)du?Qg7Si=5z8Zxr#hQde8LoSDG*vCcW&_W#~5Qj!({J^L6Haw#&BXY?D`)9sE@atl+QrRmqqIS+DYc}nKsDMV zzvS!K85+P?I8vkFw)7Iu2_1z`pwjIYB*3T^qls$MD zHV9>zula@c#b?>k#(F7&b8sr^e)Vt_cCjwJtwSeS z!dqullA5GMZ^5ejK-%&hbL`T1w7gJ%n&30Z&-&TTpD)g8I~C4EC%`ODmlY!G@S%|S zXO=aPiPkU7yoay@euMM=XrvVWPgS&3T6nsc0_3DgXfe(TAfsDZ8 zz~w;o|LY^0g1KlwEfQWF`7P$B8psqV5q=QQL3iD!i8z$6>Cxt#0$xNH!~Od<(Fc-5wsOKQ+W;d%AYpB`(L~ z$@kJ?Ygc=~{$AUINBBQ$nx&`Zwxxr0x_O#hOe`YVEqm46j>g(i`xJGInh)1)5Bm`H znzlh-t#8osp;~XT)yDCAgCyE>l=Mk@HOC3ZP3LQu;`FkQw07pzEc9d=)(UpKzV;N$ zA*Gp|TkZ=TYoC-=(2dm6PFoR_stTFsBmqjVUSF`qM)w+u6lmOn__rJhWs2aBWeN6bquBSW7ld5B!p zz+?rZhH#UHyeqwK9Hdje8Tw-tx*Jw7<$aESuoK?F5jB)7b1KvB_OWU4&pF#(q`^6wTut_Pe$tw7LL13VO2?7dk(_Q!6GFn5 z;(qaf)L9-*7I>^&A0@VxY?l{{4UNCpnLEPcDiC`aX#9TOyA$bQn5cULLjx@WwF8R+ zb9h@Gcp2y!Y#5RwucOQHKR2Nvpep{AXw-l>@&$Q-nlVpoZ?tT5Fv>|gR@{q7M&vtG z#uBlH(O#T|w?$7TZVJB}OXAf?Lz|=PV5gRewq?H>oN#i2-N&!*F*@+oIEw#tFkF$$ z5Q%e>6W_~ea<5QZstF(Xlsr^^D(1w$bx^z}hop&83;8eUQ*kxEvNzE9n$ibqGiFHZ zEwecH?Z$O~-To6v{x)zj_Q2N}M{Z-8Jk4U#);e-&0(7;LG+flxax$qMgJOPJE2(z3 zXSF}ZGaR?Ivp3dO=;=6)PV1Q*{Tw$r(~WQ(a}ILO(dKa9y1}{hDO^a!yg^wdAC#Yw z^iq@?VkCg0gznpr(! zFN<s)^x_Jhte*WI-CNds*>lk|(({?CxTCnv#lzLmyTVr* z;(_X$?F**ZQyZm}@ciRy;#%X(#fhz2w#Y6-~iS%r(1GBQD0zLY01RN#AQ-Ug0fuP2qU0&atvINnxrgOCAX2M@)&Wl z!d2qE@ivT#US`MXhmMhfb}$+*e|wZ@H(l_B__?~=$8?_df3j+dMI!80h54^$@Q|bU zw2Cp0YsD(f9f_enTwovUiNB;Wvw%$OVC6WIUghUIq3<~(ZBWra-Ug4eH;yBtRTxiH z>DWq=Y8r(4>c$twSIPJB@{!!p31}8wxW}a?FC<$TekN%{#X2+zZI$yWuuF4~gpS&!2HFC3K2w5q+umsue8HM`hbl$*>D`1}kNqP$-^?S)9_Yg-K>4{UYg~}$jkvCswl#}mTJ}QhS?Ag_V_7P;JwlP<` zYAs^Pu5`hXe9K%FAMXnLRqGM!G21qK7qz8&M4hJH)uyN?Y*lGg|LF9!*gv!NR>>Qy zowSZL9X-%W>&KWAmvW{v&7NWJXe(x^ME*^8+6HQgcUr8JK= zT05mW@f`NnDmsErm#d3&x$~_1ga4B((Jb@RcA_A5_h0eqp4=$!PG}zo=)FJWu({5!q^4%?7qY3|^^34e(@#NTOVEhY?sgSkPzVp8z> zw=zd8t1bD>GnIMrO&YPb8rEbt2%BlJ0LH|I#D_tK#CpM5$CrEvP3HoHDNpngihz%` zQ5MJX1XP5NI=-Ki-dN6sKd`FGlW9J{9PK=(t9CHs5DSG3?t`R zxI#es@auWPfFAJhUyTC;0xtrOf+bP%pGDS2Kk)bNhg_K&Uqo|z zYx-MSai`MbFIZpAqP3#m;6FZxS2QQ>I3DI^7EZIiWSPYL*dFe6Cpiay8<`iS@-yBu zQ3AT#V&fs%=8cKpk{gY4^hwT3WTAzof4q9)EE%97Ni&|U>w-o4MCvQ%sgu>0YBi170;x;EzDJwnyh_J) zFGoGsq?A*cQnQ>$eVVd0<&}4!C*)G3~A?uU+lU@a`t4mjRB zC&TB;?%1He(5E^UI8HkLbanC^b+>UZ z;`5^yQ1ABB)>)6Q{f5~0@fo}-M;S{5KWXdB#uK9>`Q*6tm+UZgG&NQ3DRb$I>T9|r zcReWqs#sbD|9qdZV#T3wvdrmF;nlytgkKo77xf{_fC8y z*bFxElVWWHC+m`NMOY=4k%Cewr4SSQZsfBzac?+gikRvujYL~gj{g)D!h?co!9XAu zI2z~yT|aZc7Z?&~7swg-GVo1cdLSG)5IhkoPV?dnZi$bWjito@V5MwE^~`BZ!9_Wn z49;$T^;eu^rJz9!ixnXS^ecq(TJU`;#!fMTe~VgK3%c0v(I>GxFzKq$%k;CcB>9GZ zj!wxL$>GN3G*XAvBya&xgphulB$M7O|C(pA@^Er#KLmhUFaIJ7%bkFoI@?G?tbw*h+Bb{lk z>aGp0mTt4>w5L6+pN_tNTnqFQ`YhK$PjOFur;~OCDGNT*gm900*{%49=t%l<8=<^6V`kif7MP6a zA90lvq(|@xqL5GMDny09VI99z(Oc;SuSO>>?D66N!C~a)^%KEkza2l+WBh&v zIWd)@tNeJfCv2SiwC$CqYhgXf<#g_2!SGY|pvU1Nw93!H@831LDEcHalh@WWQpjV% zo5I`J+jeq$dyPhS3#xw#z6UR!!n6O^Q@&#Uwu;-@W8TkXCeWBU_$~UxXi3D4c%Ck? z%*?~LagRGpw)7RmxTVb2+LKs&6(7Y8aFo>9S$tY636S>q=>K zU5$qyv)1&=lx`YjYQY&mQJ(NTxeM<{iymQi)exrQ^}x75mB6QgT!B5Tw8DY1f$D+I zfpq~_&=Wcq_QBLK{?C`q85@{*mF$Icxv~&3Y{?Sw{-j#Zu%B6DKgXoF7C#?dh@!J6 z(wxcQq)1NGqr1#1l99$FV3$C-E10MXW%bwOX+DolVBlM6iswLFg>hPmY3cm&a%%HkWV6$4t{W7Z$P3$00J? zy2^Un+S#%Uch*DYw8CLrcGC_x5zoeJ^Be1Ws~cB+X{*!rt*xPLhHWh0s#$&Jqe>U0 zrE){wELSy+HK$q{+Uk(R{?#!LU44#ojXqr4ucg`Yn#R!8XW&e~#r#r|{u8&rcx}o@ zdCABo7)C*1Aq=6*#t+cD(gankA-$KDKsT7d)U3Ylaoy5w_L#Y`sh9boEx%Sr?T){` zoc*rtrkcg(wLIY?$ZkGh8>DyCPpf^^I(mk?TS|&Qx3?=@@nu{WwJo+>wu-pKX0z7v zvD(gPT^&`OH)#7D>N@JG3OT$?%2Ce*=YBoak%87R%V{_#xSqNmLIUdTEAIW%)z`V+ zS)^88jRnrXzDUcee@nwXEzOVRD)q@jgF{ z(-oFC2h@J zk_FO!fXZ9WK!HGsKpk#t+X4%Nv%-+HqGu!bnHgS{=(yA@c~!Rclq6AkJAoSetz0^V^47yPMk5Dm#H@i$2O7WhOkWqt^P`N{8YMItuW_ z4`~C{qUuKL5zBOV376zgB}E)Ad?#EY8|Y6iN|@Xba^~^2e@W;> zt-sp0JJxzOdpo-Ox_Y>7Iu>fLn8MYz|78CU56fF7g0ddepF37L|8UiFui%t;&6~xy zg?^24j;8n{r{TVD>5MrGyVkq7MCf;d@g(PhI02d2LZR4OL+MEi`fnD+Rb9iJzk9LLJF(tO-t~iSiM> zK(73CcKHy;#p!(n66gfoH`J-Bg9<#0lU^kl9WD_ zw(YF6cacZj$C~qN16V<+ykCV+s}lL_b@(AqGhf>PwXHcCe>_wtd?d7*)wM6QGISb> z;$j#b-AJLBLf?kkgofdB`hmT19&W7)^qmckf0an50d5q#Lm5(`AE3rQNN%Hf`LwaY zP*ME$8v)~2!OG3y0F5h|l~qbVvXbdE&pJ(YlysOhqj5F#F&ZUq#%e`A4OIw=!F7Rd z>|><^??2r9kU3B+P&Lp#&?hh=@KbP1_)Vk%y)gBeQ?!cJP9Db1Jk6+wYIG>EJzkbu zN@Pc)6k5~)!z=X`@4%nSW4LJgL`_eY7M@8> zl%w2@&PspFt4zl%ZLBpcZOpp4Bx%IY&DkwF&7Sux&z180*#Y8qSVlYLismQ|t>RWM z&FLE<*YvdgVDT!Ma5apP#>+A*(ydHT3R%Z!&v5t0bj`6$pG*q-lx?h~pSg~yo#K_N ziaCUKhG2}RYh)Z#i?;Bd4#ARMoBY5>T|D_sVg+B54t##R=st^OznKmx+kf`T)_O`q zv3q=}uuZO`{9sCFR{#t+PSm^r7v&z%j-5j6EkItof9yCP~t$MmX9y<9(=UC@# z?ta&uuN}YWI~+f|yP#1Pb`N#@u1~^4>~s!ux>=16T+dx0S7EwvGI{TL^LwYb486Lx z&$?O}EnVW@n+w+a@5Y{F&UkBHGyCuug#%{-4+G9%fnfXKDl#Ez_(mjOtT1Wiaf#m0 z{DvicWKA}UD>-YQBAFY+F|t?wQJy7qPX0oZ-jw)qH0*8kd-`dIxD<U9r0@|U`KmLGITmFrExHE>XOfgiv(j|YSBKStTG?hUJJOp2hEGv2kSEp_)Pvx$RV5%M{&}*EkBU) zd0C^{a_1sPVRez^D(x!EOb*UH9p(PG_)cX-b6#nZ}C#hu-3EjOy}wWs{t$Tu>xZs+HvZ(tJ8Q zZb|>p)^gS8B(xR3l8VYj`HHPDRkVC*J7W{<6JY+-SHHJUvfr^!R)5q7IZEgq$%&29 z`@+j=?QYMhF%Ox$D%xzdDapGp^alDg-KVGNOHffmtg)?*bY0@~*v&H)$K!dY$vKcU zILmp|dCob`8HG5xiAnZC_eAd)UpLQxjyM_Ag0_q1P0DR?Jr2NuOuD)ybH(dM?DXd4 z3r-94XD+llupw|KP?Sta#p&U+ zQHkl>ip&qD5hy-432&U;Z?diL-D%?r>-?kv5PC*2Ml{&X7I+Hn~CA0dZ&+PfrK= z>w3v|+|YcyHmex*IpLKQI>1D{A}yBR$y<~-idjC>6f%l`ix-lq@tU!AiHFGw$!oF7 zkw+mf``VH~Clp6Vz{06<5Gwz(K;_`};IUA?NK2BcnNS{YvYWO_e!@zq&m5&yqBw1% z>*$J@2DNKFJJis`)A-zI)$sCAg~(|*J^yl}{D%2k!PrYyTNWk-SJ?Zq#~VZAPGjzr z&6p0^Jc}_rF)vz?o2U^xlMIs+uS~a1AxPkr@Wwrk$ze|@g|kE7Sgk}lv(e(h_d-{3 zf?#24vrf!L{-Q&yW#Y0p-h9gP!gNxON*|PLmZ{c-undaXPFdbaWsmV36@mi6)$e0pK=Gij_;Oc_hd!*4d#;Uz=a(^g(yYOI3`^tr6a zFVH@EiS@+kLeu0G*zH2{>qMqRJbo>HiGHq6c#_Xe#*(>kzEm@oLu(%mZG5;;hsK&C za$jzE=s8A+9lee*0`gF0X&)T(JmOi}Glt>nX(#_9%@Ecnn!4`XlDg2S zG1BZ|^4*JlcnLi*+iYv?5#|9|^xNuUh2d=83dQda#1@&s$ zQ?(p)qKEoBI^_>JZ@ONgM`rb8_f&KLhDT(hYrks}x3mmrLsuF1KAO}Hxl4NYd%t(9 zj`iv%G(wHEwXqD4iwd=j?Z#)E-diUwMGAxl@ocWceZDQ)S);&6To0+ddfS9?KE>kk zGOV*d6CI#gh-gLM3ulCF=*MT^2bPyci+P0KU>u|;ucA@^N=La3W_EVYIuB9L*Yde5 zNjH0o#1oY0Phs%ZVWQMCmK*ZHw&*6(oS#J{?q>&>Fh9i0_=I_MG&F{F)`t7aXZ+|# zR$Fr%|8vN!4dt9Eqxt^=nQAE+%57vg%O2%A z3;=~(Y$xTM+)(OjbYfTjCE+n%Br7MDM^}eWhK>hI1~&)(L=PDjhz9}zG1wn(R(}$r z+asHzc20ijvBPv0+)PYPHcuX5*7zo#5kDOd(7F8@x^e}`|M?S#oj2iJJ~3cP5DKd zs{Cj6T2ET~k#??b&Mc)R8=+|~g2!G71!)*8@XEFLn4m%ba;_$K*8DL~nK+UHXIxSwAwickmy5n&^jDU}DTqXL{*0s=c%FL)p;Uj7fj+-p%u*?BjcBngT=05E@2&d@n)#7OLzr$ z6vE`?^P>~AO58!|&cm-5!ZYEGa7&s2>paC&4L;KX~@L4(pHA4yvr$)WWvAiY6X3DhkhqJ3`H5 z-RL)=<#d%)3Anh^`N9JzX8`&u5}UBAB>goaD*$nA_dILKl>Q;W!0H z;lkQ3d&U)e=`Oj_fgYn!Dx_2^>+eM2@3M(xN%cDANp10!7Q7zn=gr$r(>p7Xm;%FYVnW#A<&%#mCp>Oy-58(i> z4j$q4tp}O~p7LB69xNUDDs&4ic=2T|(v|piehf(roLLt8qy9urIWUO(biO~f{ z<;!GaUgh60Lu-SdNiYuaRIS6)r>Ec{LGwhs$V_#=yhfSJP3>3H94Neg`5lqECeV!= z7!{1qp$XTGW{a#2O$*lN>^(I2ThJcL2(F_^Hz)VWZqUCS{0qC$2Xi*oJDv@#a2pJ~ zbXM8z_{To&rYMNnX=|HI$JDlgvb;B+n}+d9u|D*7EsoJ5l-w)? zND0n|Q{S7N?gvk(Swq0UzVk+~R;b=o8Ax>vberNO(J{Q}=Iol8M z>^5EWVOo^NbJux<8=;T2q)<5}yq`F`*|@P6n0 z+0{fJsan(=c(b0^?wiU=Z-hT#(zFsvB(F!m4fhYV3+4!1|B(C;`XB|GqN$Y*IzzL= zQzCyxE8$)(k6LHP**}M*!yDlf=J?y;(mfFa5T#CvUrQmWh1kz1%vX3w!p-EYP~t^m z%>Sp>Bj8*s5Lao+<`py|QHuNAB_`X2VjtTrZs4`w4|S?dq!2#aAQ}I|y!B>{?1Hqh zm-F9sPJs3Bktort{CO9 zxwFj=`PkF)M9R{YJ0vzEK9T$Onq(iyCk>5Z$yu~Ktz&g{;oNnPo$Y;c0WA^7xux~u z>oi1?Il1&y-YUgSS52doZ8(qHORdpu>j*12WoAHezKz0jBy0=$V1HL3UH5U~P=o2k z@yM{~`Di|-V+CR+I&*5#p4c(|h8@g^Ux*)wKgJ7kKRy8F!a;fiPvMSoCyvFJ@_fp} z9DQ=~zvMV$jBwm2oG269NqggY8aAH9^2AC&=JH46@Ve0RaQ5g!P6ho*xaZ?M-krX+ z6i%fbXsbHT6m(7EHDrmMu}kqPMmYHwyhuMphxeilUq&->P*tT=!H+j^A7@(OR*Z7cH1mXd7}hhyFN+sc!yFBj`-G*j|ga#{|Wf44-< z0?EeQQ1qWz3fel@yK1E!f;Q1yS-MURaEow3cp!`v@(VkSPlZj%ALIYy=q$jbEWbAX z#`J8_OM{fOv>5koaW0JKPp$^rQv9=Hs+W+$i~S5Zaq@( zO+VCvM4LsbpstK>jp>oR@tJ7qd*K_cDLd75+AQ4EM+r;i5tbw9F*?alK}Gvm_TV8o zLAuP=;5T}dUDk(q1~tRmb&#`!YqR@8f|)SY-5+dyWu=iAhxxfkbtmS;kqlc|AR!*dPHelcYys7RM&A^BPI&@Ah-s#!~CYmvQ7 z_5vw?!)=@F67i!u>o{mV0d_b@w26I%vBq9?F^b>JNXKv>lo0-eZg+9GcH~^-LUd^S zse(%|`_Lw2Z3WDZ;;%4R4~mb(_R?NhTp3bTd5c^L&UH!o3XK1OW|-M$2}!+&^$O;D zA-8xAq@fzmQt%6LS5ms zP>CDyPx^md{8`$-R&5;5-zAvX8md^gJWP5gu4TXY07g`zDe5jIFWAk+_zUF+YL5ez z^kjTpGpM1rNit2uec>^z$Idu8KIgREB46wuEueX{{ODb_l6K=KXL}=wQ$g(|dAomt z!mD_Om~^=1h1>dDa=WkK*g6eOdo}e08-woAdm($MVx(6zAyzd0wbGGo!F4iq_A|ka zqDnTz1OOSikP5%Ci0Hwo<&H4N_*r8k4@TTN{#Y3chq^Jd z=&$NBJr|7c(`Gu3(POk0>T}qjz0`%&(@xq}oMGDX?lsjG#3v{kzD!mn9QiZ&A!LmW zR~suQW4q8SHHvpvcWW#3V`c^UraX@g)q{`1!VkeC}^yQbiilM;6%Elv6eI&vwoWy;*F$KW52$>zIIE0X_BIh7?PYx%52vI*IGCJ#%vj_y1!xj4&6vucRr zzJ^!o*J5L{HC~(G}4v;2Qxxkv5#YP_zXa?MoyZmcwBy zfBYrBqBHQPN{dXP(>)M&g*Sw+higQdFtL3e855a=ilrOah?UctBQ}JSCb9iJp>EJ$ znOE7sk1*3YS31bVYP~p{>eFE0e{n;MgUwt)i;IN>@mu+w8eH zJ}I%Ikbw#M`n5})81OZ|Ti|8{1WkAq7lP#iPsOXOv&m z?OGMm@EU=ZJ~i%}pM+6tWhUWdF%Kv1B9>Q{;bgQewH>!Tw;hH{c+zzhHt{~U$JGvn z>!pOoiI$|z@TwLhSIl|}Z{y23gdCT%SIC)^+9-F=++XC*pZj)dr(9cdWMnT7mj4_U zOvU7yV31#=+)FW1GTEw)OnI5O+}!{!=zH5*OC3v3%Oq;+T5@CxNU~tj|4VTm9Xk-I z9hn{}7s(pQ9xaJZOjh=3xy;2dwf+E!EobiMj%To@K3WsB*;$85Y-8}ar zjUAvl4~&m`CuXB8W>sOUSV4Y4$B_!Azt7wuZL;36ov_ZqS^FPpk$l}2<(p+ZXTGn&WKkKEu`!8I7t|YY+h%jd8tYB;(bS$e zeRg3z1q`Dm`{){al%$N3I2p{=my!?Mfz8{u=1BCkGxdw)b!0)g{x?|dr`YAl^3bQ? zM*94g;epY!@zH7(Z4{NKD(+-e;k}$ybH;;g%{Qro&3Po2cL68eYAgo9nTunrAMK&V zOhVz5U+|lasB~@3*ZNuGxj4zP(>lyjPrfJ>l9`72Uw? z**CI`z0HGAmgu2)el;WZB$O1e1bPOq2h)R*8*{4{temMPXmw(;ljp_*&^(*D}s-nrNH+SP$A;V{Q|SLMVTN$rx)Cuc){ z(=hv>TnAF`=Gv6AM9zG<-sCEqT0He_u2H$_<=U6yR<<`7z}Xu|Wz zt4JzZ{{zw5_>R^EU#!eon*hJ6E*!=yoU@AYBe?x62ho2J=^wE~wuXJ-&mzSlUy+#< zh6PnG(jd|nBytI<6@! zi_A?-Bs~IQc4G0 zTmFTAyi1=3=A!9^w5_q*k?XOX+Sg_!p*JY$F=HF*W;8ZU4qu(DB65TRd&7&{R0$ z1=Wk%BmE0~iJC%x{kh)9R7g`lfcmFD%Dk~Ex}s>o$fa<3Dpq-Px64AmgnWTs;Yjpc z{CzZMXacUyC;X;A>Q{sL@F*I~Q<9%~qg<>aj(%H|N_exK)sxK{LUS_*&zs9g68Bn` zTT58pfCe?RjJ18?sO4~xK#|Q+)qV&c=laeSiEUH5r>sq}W|^P$LXI}M8{{dGdwlA5 zsjk%Lxz6V*gX`++93ykA%yu%1HOumpVae~3rY4n1x|&!3Udh6w4LCc_K}T~Z;cM4g zI5%5ty~%>ISU+PI>$G;U9kD%-*9z;IjdOy1y-_ME1>zTD1C`_23g+k{RHhulLUS8z ztaZXg(s#bJnCw#uTdv`=QW9t5o?;gvBD~@ji;K1B#{bh^PdCzayGe&4{Vr*+;;+JF z{z3kcr}K>XmDo=xY+j_YeW{1YyzHT!1Ba}w^owbcS)lU@_}z<0vFO@pu4r0(WiYPSz;*Lbf>;g>j{J9g1!qD%s3&3v{|laDJ$n- z<5b@qAWpNMw58hCSf|(&Yc-37%!m$XXUjVtmhB7$M>FBsk0orm2|rTnmAB+=mUa8fJAp`lJWAh}6P|Wu);h zeA85Oj`5OH`3L{rc<}yFxFpPoZ;I}ZBt>e3W1(>9eWZH)HaVhw(62qigLNRE*&fXq zk4ARHT51bX7cOUKnv9!!Zoz4cWqZ(!bdriNwb0^ArQP8!Hs^Nip`adSp& zhxgtsp%o|1N0&bUEK@drqXH%gGtjd9CEkON=&+39^LNU3#J0k5^RzKhYoaX@_F0=c zXIZ}#uNhm-iDFplAzzW3SO+)?;i@{(@y_1bdJ*2}m+)FjaDGGNvAzb0{abUf2ir|H z>vS z?4j9_kI@;-?E`Ts>l9PjuH;gWF!dbQTjPm)0JNz$dErORY@~g(;it|ahvci)PB@!x zBC)B8?H4xVg)A}q?1WCRi?^m&;AaJMRLq?>&xG7va&O4pD7AL3gE-c`%GN&Xy)3RQ zd%#Vap&F=0`tb6^EQ#MHrX(Fm8lQAC@$bayi6`Br^Niz(y^3v)rIlr;<(B23rK)um z4kA}AL#3wTe)bXh_2c;KYyp>Eq%Aed2{P~EO&I)dsR2h!Mfji8fJzvYlPxle|8;Up zxwG^b^medNM;wW}u?3%-O~MAVrLlrO>=&^CD$0N4X_lE((6^SBmMQWB=`7QsZq{M1 zbW9(D!sfW9kok~LSrRK0-9z`NvkAM-*T0e15hL<>G)9H16>Suq4{|<>J=#?^*Q;^R z+8a&5?eI-x9eu?+&ZmXHKL^%6m{a!)o&)D_KTV6w;harI*}RoqT{Y11ZX{-}(*Dtp z7@v%)dNxqzLa=ma@k!r?H}Z`+++2^Yyf&}w3A|1>481i{R`zLEK}BX*%Uiv2oV%lq zoJ&3`-4-7U1BB1;UHuH5`GfywP8Ko88#B47-)sBuvwCW77Hpy*))R+v?{}w;KE-{Y zC#;kebaDHsq(zv{t}w3_fjOOt5}|3#!Df9ie8Beb0P|2W&oFr%L$A6F{OB?ckK3bL zBc%r(EnbD|1+j2-3` z?GkE%m+B-C&T$}$eT+OpW%l>K8JWiSW+nEXvxR1CZu*L0VGrJXl_>7*)lKj%+vB}* z+)QNRD=)s219&nnx16wCr8gW#@_b!m8fQl^-%D*!#Z(lYaL1G&9p#wNPEzF+)CAP?;Sa7(Ny>{U3a*eVP8N zq@22gX98FJdxED!og;rouZ8yp#`zq9;t^lCZ}38}9g6qnk#P|#d zI%Qdzbybdvsh-rHsek6`pKE!}Q#qRCuw-fowra&F)w!xc;Zm#>AtAqF<1%nG}si8uQnpOm~jx zS^CdwY}1}GX;z^7%z_p`i%rF8d>d{yRn!VN_Gbm{yJq~Wch#Dqp~;T-MqjezKY&WQ zaXlX^BuPaqC9F9to24~qD%;BQVA!_DgCoCnpXD-m@enCRK7~sC9y93=-1SHPJD=u7 zlCuBB(|Z|=qK<6vUuX~XvF2Rr#7*%cr*oJ12L8rQoE}W`iCF_jq#dN$Jkr+0)d0J7GGBegvv{5DQAHBGiz*$Wb=Z#I3O5KJ2>leYgpLO%gtCSc z!cz1>{ERkDpGGf!o6X6jc%9gR`1kO?iZY?h0%6R@v^G(npi)tPLQuWFTy9O5XLhkGp@t?zLl zXfHRFZVJ1N?AlIslm4CAN2qNU2eFLP4L&o!V=I&sS`_(!t)^|HG=lp! zh`!$ku3wr>ZC^MdlbKB4=-sul>bO|maIZi=e>VSMUkhKF|9`>a;a#C{aBc8WBr#kO z&BTwPhk;-H9sKo!7Xml@y8`t>#X!Znhi8I{O^<4^i6GkL*s#djO6|3FOer005IP>( z66>Occvri#L&+kzNcl(tXBdO3exGc`%c3}J$&cpeQhY58_K+KmYptH`B(1K*rjfo`_ce)3#aa=LkiGmV7GZ@qu|`wk9L(rEpIO2~F9{&tOlzRlEYb zpn;r)|NaDNPo2O|he;l|JuRqb4}{f1I})DS2oHq$;wkZ#B*9H^IEXh=SAa}3HoECqwQtaxj7Fc(r5vd~-lxl$mFCb$j#0i;3%GeHz z#HJ~~^}Hpg#RJc0ie$ne*&$w_qk3t!B&AU>|00XJoUqY+!l|ui9AQJ&)(DxU@wGF# zagK5O-=_PjFYGb<(a(*5(;UFnsDYudwJr|UCa7hVQg}F=jqgz=;ZRwCRPMFZC<}sw8W@}&{w>y(oShcxSu$$sDh=Y+*v9yO zUFa}6vSa2_p{w~pFRz_|PnpcFU=^G6{@O7dwVuU1$^-phKIb+hyWTP1nP-Jh;wJGk zF@$saU}1w$Qk(=YW}GrXYj1SpHI4;dPOAD6=H^O7!Q`6=t2Z0&Ov%e5~1g)D1Q(#fpdc-S)U z#WKvmGQ70^b~wGsXNqteuOY+Ahkwmr>6$oC?9ayf0T{=2ajaa$s&LXSNc$x_yvNa? zB4bg~cjKICI5VvkI*6}voN~#!d`JEQrAbA++{ViDmKgJ-HDtW6SU;FxaUz#bx9wY{nL7K^MS} zY)sFUfiG2v-B~RvSx*v^CPd4S)834PsImX~mawt=O*;ZNr9Qc#-)bYkwvu5yY{BdQ zmG;tXE7apA-ln^`W3s}ambvGq;34uIH_B{+Y$~$?6+|p}s z)}UF)?18RmiP=J!PRDc&1=><`m~oh$_*UVJG=^Jgrd&&|FZC7uLPMd0dCAB^W$Pv! z1dkmDe|n2%JOp33J+Ubt-?GUlPbPLxECi_Qub9vkQ(tY{pF;heThPsCpIHzwTO~@HJfg4hJ zs(Z1>g59&?U^xFT!SK|v9+tMxoxBEciUCRO!tz+ zc}c@k@?`rqTj?zQlgcL+OKM3@c8%l`_&6seZX(-aV$z1hqX|_LQW8dzt9HOu167v|GGN|2IG!CvIlPSY6m=3g{#z;^b3_ zcWZ;3PZ}krGJ_4mm9L+;N!C&P?~waTDbg`E*Jb6tQd_YJGjwiY4bR(kp*cyfF8I|q z`1Q&!%OhiMh@4R@v~6cJNE#8UMiwQM+qzQXx2M)E~Lyy@OV z52NNhAN^l+ARLd$yl<@)5iUt%TvfB6ZtI3`Pa>|5Q&FU7`2Hlv!qL;r#J{i)xCqze zO1z8Wg1hX(WpcZcqP=0`G!IlihGMdqhVu3=jJypLbGek2^u0quYvCX2Ur}QMovMTa+6$sxiA`l16O+UEAB@pYY6jj} z<&h4>1-4ms7Im3Q$%b1tI4*+D|VYJRn!?Zpzj(+cB{xd2bpb;3*`mAfa5YQK{_QEDaS#V50> zSj+fB$se!DG+ah?>7NOUqwu#lST4XuFgsqsBW$beuk59qeG@X0Y9%jC?CoyjI*YdS zo22)NR}u_&u7swE{-i$1rxNodv~{m=?{sf=w{jP8r;?@k6Pmd{?NR$}`wV+e`+f2U z6G=R+M1`6xeu4+lP#P$GCDoVg(s#@hAEe%LFL{}4p!s<~e|ev(RTo{>mtq_qf8@Vx zO8EmV7wXp<#=HG0ee>9h~(e;V_NgO^RwVrM*&jOA zJJyiGlhgLrYO^gQso=HTSN>f@Cx!=3XLB38n{4W08Z;sUzz zf9aR6;b63jJkqAd15yz8v1iCoS1ThlCn~ui##8MuN}{)9Ieia5`-b)fOwmGGI!wm` z%Ies>s3YD$=?34?&K{h8I65eNDD)z-E?!2DDDR@r!et|GqPSjC)keVoZ><&wQS7I$ zQiq|Am=RAx(VdU_j-s1h`aa#`O^}yE#z87e5>r+_aG7>&97@8G{MH;UoM-d+nyjnq z!ndLo3`mw+NIP(`zE2O-UpgV*MNibzl3%9N#0{v7Wu1K5Jf4@mE+eUdBg8Rr$`j|IrK7AC0r#O40R2y4qgw~ z0(ChVZhtS|Bwvp}_t5Zg@9?wG$DkT29Zd08@fGrW0<*&P1G9X&{muM82Ry;{p@dML z(16gn(BN**`wOY|M}p7;Lj%j$2(3EmJ;0@=frV>Y@S zH+;~bbV)908Dhz1{Sr3$@77F58}~f7)m6_~)Txo=bj|&Y{q{VZlzSwsBh6}f;_rB( z_jZqW_a}!q=E`*KarJe!bvPVl9ESY~4x4}4>)8w0uFBtv8K~bkqarUQpO+VtT$Lg( z7FSF8twrqrv$wTXvfcvGpDn-Qw3LxHkcUx*SWzmsrHOipA zU8)UHZ7|+G;;g+AkAq$D5Z+P0vxRJ|B%nEds?O3T;^Ni-r_#fyIv1fd?m~Xke{S3j z@k=-x&rfIWMT^}vCc!-%8ea%=C?9C!VG#1~;l@@~$HA8B0@8m+ZwzCl4vryhg$&Ju zLT)4ck!4I+jg1rf0HXxHDfh&V(g7(AFShY80=tlVw8GiY8FEy{KVt?7DJ|gH{ARsw ztt($ME&6j^Hz(kJyoJshM=9$9={VTkPvB{F!1yCz?_YqWpHpk<$C>Fq<9A(PA~81j z`EdvtWSm2_`B;Amd+U36^Jg?CTY}!~zU=xqt%z1qb;e`SRCEZhW2fS`m6g2i5%Juy z)6wm*TS_6_RIWxpaMH#`FQ6}97cYi)$r+^(lUoCAk5VO8B^r(O#0jZ(d=S2Oxl!s} z#l6T0PI(`0N?UCkNYQNNJdR0rwTYHRPctqE&7`{IQVb@&tDkgQ`oQfw1tcRb-IDu( zJliq4hET76fqx@8J<~2ujm|I9-pi-L)^XZIc^_ z`HU)RUzmSyBa6ZvLlr_fLwAFRg8PD#6Bm8DxInFz#+Sgi7$&y?J73WC#APi^OdebtGTL0YQw#~B_aQtSgLB7ssmL+mN z`3|*fv{)b3?NYYTze<{1+ggMUU4>mE;3D`FE=JhYRVXjon-}VM zHb2$1|I*>FF=NcaMaTx*JF1K#E4~r;a4md6EaYkD#|Nm1at&V}A6(=YC~HR0A%&U! zo1jfirWTs$(>}ud>ZNprA6Lo93J)U@&QX6&K^f3OeTZM_C-$ZKcV$Mx3n$oeZY+*r$(Hm7}|WtsRlj&LRMzDSgJSpKvPaJ08g zlCGd6YG51#%Xq9+M8oh&d#H+Pl8)0K=^`D-k!mZ91=sEgdn1Z=tTo!yV{8fzfOvmr z*o+MDJHbd{3-^s7>2_@eeWi!$^enzpP1g=-HPwmK^pd>RGfZWlN7qMAL}WDE<+;tf z(L>&j4~x4kYEa$CdY=!Vt`3>i)>J|^D?uezh^_XRd zn9W$Ll|}uXLp&y2HNVC!qMh)A*b1a^6gdFD(KUI^g8DY48{6e^5!@g`w}RV(BZAF? zxq^QNW(C#;CI{vRgkWay0B-C*2Cw+f_-6d@N)0UynZY5!I>Beu zrM-a*fzm-MK4oo!#RJd$y#tSeiIK~&gY@Xnv6taB0iSoY_fclq%#WVBnN>5ZXYS1G z=ym#X_@?@b_)`P70vUnjp_@v5F&lfUA*i|ck+kDLA--KEDNqoo;8UcU)`p~S{Ndc< z=x?v<_{UWf=hd39h+Dc=xr)0Nxr@5LbFC%IyP-49vD=|LMmaAzpF6X-zH}8pQ4&ux*$>OkPwN7Iy>|*O>yGhoM)%MJi$mZ-6ct;VrCJgp^;z=>DG+Y{tzs3)^ z*uCT2m!u9Bg}Kv9*kL@@R>RlZWfmf7vp4Q5P01!Z3-)~+1bi=A<{}{CgXsJfp%B=L zogMdV;VTm8Vxer(H%c%sYw_1iO)qhOwMz7Ke}ZiM2xIbHw9g*tj^lnB^VH1za5of@q4gM>nT;VdfYYtn!AK%__F?i zuZP!6q*~_!8Otv>luKD|TF2YcEi>dqu%c6Pf~AtBxn+hWD%(X<>!r-pW*L3(i{FT+ z`5-(Co|!L&szQI9GG((3zqWV9dL&J z4d;mL4;2lq2we{C!Dmdx=Wku;YA9dmJ{4?I@L`~Bpk1J6pikhtfFAe=(orig!Z+4i zz_-ZXJ6JK)G@Ofh-5=`dKbSc#bFpVr`rh=+j5eOOo}WDY0SuKr~z4Ay{+aBu}>t)L+OGnFRa$6F|>I*%L znOa-@E^5T8f(?B{XFRM+o5ziNh6dZ=F#7mZ`m(u34|6um+1($LpxHPrk9HpTvZ!gu5p0RuWOFTyx-5NDpU)1>hY~NU2yfc!xS)Zirh)?H6p#Rk;3+Lgi4Z;7v5j^<})M7Qj zdw&pr6$%Pv$qR2quQ`Gp%Nw5V132P+YdDQM##JNDD9f*#!7I3oQsAxHP+yF@!ftJ- zx?TAyHaK+CUo<#2ls&vETps?}w=g}IkejuGq~CIE`0eqd}}Y$(OpRw9zk6VOxNZ?!x^gLtCo_;IQ>E)|=;rRM=N8 zaE_JMH26NXrBhNjddJH=B{gucZY8!hax<~!fcvHBBy@oA=GKQBV@%2XpT1qKgHCR@ z{;gI|?TYedW^{jOf3QceNw7vRd+-J)?dQNZ0Y~7Ge`?@zup3NP7w&#*!vgB${kV@E z23fox8XYVXycEn5>>Y3hvVv?p_rLRJBMY@`V7~7`=Knl>Gn;t-@Lu)}2*$#fA~i!c z|HjM)nO!`8rdu=iWbDsald&pebjIL}(w-KXmA#txo^OUfDOe=>uM*PMngVVq&n<=Q zo5%yVOFi|!;nCbAwRwOz)cURCioL464tc`4oKwiw$>(ZGuXxhA)79PmjNERILvl`a zimtq_i_RBLtE-9YscVE=z_E6*^Qz;e?JemQcr;k-mWGyE?8>)W+FI9h;tJZHSnF6n zF(Im?e5ZmJ-ov?gu+?sxNS|4g8|*0A-;HszTS@o0S(sr8mi|Xl3k#kysAK z!vVbrUf5Z2YV8mH?PTxP3AB44Q%W{9MBZiz^i93s-%jBy?IFXd0m{e2id}15wjf_{Me)NYU71xgH@7RHTK(m{U zAL0r++TkxDk(ojn->omCUZX6z>-1yDq@woIZ zv}DDf*DjY4^BAqk{TKmT>UV92v0B{C`*jWP|NPK{t)M5u~&s=>HV{n8;@BH2ztIP_iD^MzXD2jzj-8=C{k?F~JOw@S~ycm^l_j zi{b2i0AJ`msAtV+VGy_`I3N{>*G1WrCDt=?Gc+SoBmOzxQxLE^|dp;507B8o)kO7wd=%2`mwx99x6AJ z8%V40L(OJRq${y#&z0HneawA}v}GW(6}UZ4kiOF$uGI#78V;*PW6wkLn9Pa=&A_X` zpY)9b0!=wR0sn4JS{1xm9)@y+i=O6VVdHUByP2~OD)fA&DWz*&D^ ze^cBG}YX6PB)Ju@;-d;PxIfv4f)v98KyeXp=Y%5HgME8;q4KPLW(zwi^d)uqgca7{WW z+bnr3kL8aR!9K>3lU%vAp!xNj-CYj%99KE#E4*0hINQ4pxvaROOx?6)no=7zm71;4(3NF>aZf3#L6XS}6-yJML1l>M}IswLU7i&HgC{>Hk_e#nsl z&sLCM;v?8vsLWpTF4I>pJRG{~_w+l4fv)yEoP<{U1L*cDl7j5@b zm?DF5Q)r4B@9(&(er{w?HA=u!JO?M^H2mBe+zj~)Ny|_x7*ho|N-jg_!nBzxEwp^H z&B2Xn5wq!JSQJ-r@)7-`%z8Tx!I?Z zNct9R=`ebgFT{rUeE&d7Omkt1FpT@zmY4+I(#tJ|mYv zNtVIbtfuK|O!bj$TmyFYe(g7HpmHPHATp2M>QSgCSioU;e0q7dy`Ofbo5i?Dtc!;B5`zC#k9LqT@9P!0lbl)@j5wS6cQWCH*kI!iJRSIa0Dik(;)#j)#;`LBE zonlXRQ9ZAv;0b%rD96OvQ$3@;0{h(?%NFh){46L3?{Usn1qM=?1_TBNegNUf41NrK z5uOtoPM3HfP%v;Xu-RYUKhNLR(>Sw~H{#9f8$g$M)qm9gh?AG*o8k?53S^G;T;cqD z=lR^Ddj9ck4-O6e8Yt|Wmbo{xt~ZPCR_2wA!Rh(azesnd`_sCnZ%!YdelBB1=6mln z|Mt+FDCvA!ce6We&F`)6>~U)=aXl#^|6^tk3N1k?Jh;M%(k4*EvetICTJ~-ve|+u8 z>#X1^>8|OT3v<7&eS>2u32$edBb>vjc9N?QZd|WjCETA}MX7XOIXl_UTX$R5SlU{~ z%X2LAY^5ES=rs?zrn!H1KDEWEYokdQpJl0S8|8T7+-y&_wvn$&?YO#Ruc1=3q=WA%?4p<4 z0B-U(-c8%_RnUd>A;6%+Nqe)iej*?(jQk6kL}5Fe9#wi?Iog1kd+ z!>883ac(@G#haD4+ErtPc?z$wTcAOmz=hoC)=bVqIw$N`*#G#jvI{&yrIfY(O0IYk z>1!XuUevHxBJZOA<+qh)&zKTl6#EJvmaHUbe89ak0cXsPoVjzbK!fp@N^g*&^UA-9 zptevyqBI>(C%KxMo<+PT-50+RP8lVc0RAxVv7NYUoHPE>f74cy1H6x)X{dHkA8qtD zPN1XeLe6;~SR+g2H}Dg#%Ze}rmxUK-4xXSd92$S3+)&rU%BjV3kYp6m3!?ui0zxFl zzYNz2rUpL+jszA3CI%|;HH%Z05ljw^gJV`Zd=36fr{Ed?5^uz_-P6WX%kv`bUi#sT zZl3F&uQT&|UwX^=pMg`}@E`E4^@`rxo+BA$Jf}Q<&yCEpzKelw!QcIxyje2yWlqUF znfaHedWM$vC@qxsmOtlBubcjPdgqL*p4*w<`o;%;kEpQ)@X0cbdBS|SP0R2=X)0D1 zXNr%dm+}ej&!Q-Ut4m`*>!(}K*;d=HIzE9ex}4ofVEoH*+_u0n%DT|Lf;q0GQ*!?8 zsOcQ->`6BnalLcjaredPV4r)ivx@zU^|4j8UILA6;mGL%k$myW7>+n@6BYq`l%v49Ivw!xx& z1*gd_WMy{!5$?@>@_PDHze}5qsPt1|9A_GR^mocJG8wbswf7xL`DlVdcTErxNR{0*U+@G{9+E4ls+>Y9yK`M!3<3XVho#cHc&=2Bq^MJnPzZsGn zAbadV{F+*yPoxok9}iLL^v7+l758Ihtyw&0q*CY#Rc&WrUSN2j5Vh-E;B4^ca7`w( zmf>;u)po%HV5|R#CnddRdTRRbX{l+8(=yZQrvICsJL6{hBu`G?$v~mtu)yWO+rSRr z`OJY-vpbo+z1e-q{#@WIR(}KUS{Nd!F_%?eDb0>0{I5=~FXW zdD1*zdeZ{aBIV<5`h_mqR3j^Opd*~KDP#&RX9G6RGGCr7Z(=Tp$ek^82rrtHLy=e_nN47%ysMNZmbtrSezlc?JM@vxG{r+1f`yD+D%AM@oy z_$b3PK|6;o=9h>RULX7`ur4rzidH#rJ#aeMAzXlymYs7pKio3XF7id7sb@gi_i5GA zv`<$)xznnrO-%ErC8vL%RxqQ7*B$5)SQuy*d>cIEFYX)QJ?H&_ZFWC@Z~q$qNdF3- z+q>M;%G29Z#4|bLNV+xsLz>B1eV^t?&zW96{aLyl98&ap1C^s@yd}5De(jz9%BVrt zl_)jB@u8T!RGKR_lox96c+M_O=M*JStggsh1z+zp+F?F}3?oVnQ$WV*T}Tua!Mup+TeQniGs z&H?uB_GCw8N3x?J2?TAyNscqQjl^a2R~Vv0>4)lYRvy9T+Ceg9PWVJ;wO{qJIPs4q z`D7)kqg4E$TbR%BU(aE_)TeSEwn2k&%~%EMPzS!{GIKapOqfGfg&@ z(a#o#!9JX4b}#Q=IxOz>xM&x`n?4)g{~4z=FIf3A(tNKe<@o;%N2~b{dYXD5{ePPW z%}=m~CYuBCI*XXIKuhlnaqg5B!aj30XliE?CU(&cj)yOO0$)%IPv(z8aq2(=9Qmwf zew0QF*=qa)2dl4H0A1Em{cEt7V(iLV=wtbr4&iYyM_-{eSF0#<<6ZFY&!YHMi94zm zs8AQ)tKRB&Y$b}319e-ytK^Q)h!%}6Q!cApc$S?cWQ|iwviDd=s`0n@K9nGpXFt5P zi}C-#_k0`s0T1X>v7B^}E#SBnAfMnz+`2B|LEZx=@)LBJr#Wc_)NizfbmwKktUUTL zvl5(^-^|V+#+UdMs~N+LAB_5VP)FhMe6D5XoOLmp8X~;?&&(>|93I$}Uz4@>g}D)( z_!HwtJr9U)8TADliO;oHx(!9Zc>S_g0!`i!y_g;brT$L$D0gDukKs^I3H&c`g?e^B z@GRgBSc7|ljYD@rC2>MLiB54qpr)r&TG=$?(}hnfKRy4HlGY~e3^nO>+VqTu-p&47 z{+0deJS9%Vr zTf?;epI)Y|&Y0!--g`PYGFDhc1E{0uhiVRb;0!`ZVL9qpGl%GmY6f)lHRzvA7xf)=EFC1RI8W;vd~s%&QC`Vxp0&~F zB$mT_ddB=xh}}{lp`Uq^e>RnwZZsa)o4~1-&_h<^wAL}a#&q+xagPpkuC^Jb@D{B& zJ}%AGALt8Xc;n>2J9!P;?x)Ny9bxlL*Dh;U_06!Wmg|MIyUIj(c=N%@@3GVB>MW zUx%Y-5Dsru?H6SVI&(j@B#Aq{98R!janUUU&wjHxgr0b%SrjczFPymRfS2}%ZYQRzJ#6B^*@+W+nEu@xMsaB=gXpbN1 z%+`D;AWEP!?``ZsaWJ1x>L+I7vpC1J5Z1!xT+i=s=3I*KO)A4Q+swP+(Hil(Zoq#V zLVsZ~&Z`aMlcG=H6UXWO{DE&^ekg%yf$D)gL2qzF=tZbZ*c;9Wzwp=f%uD+!E$!2? zPisCo)7sNPwxt?X@-)qSmToX=6&Sd?Th(u1^Ndr_;>pEg8pZPL6XIP(fc_Q z+Bcq88J#j58K=@$(lriBACNAjf1UQjCtJFjQ6e*|@7GX|_+hoS_M2Xm`|uBKExM)K z#y%MKdxhabSD};e4h2Seahg1v4eCmJN9S2*F=rRD0V+7RIkUTJJMTGKIP*HIIbS=o z;?=Xqx!GCAmEZl^eH&h+9k=qL2@4Z;BuEKq?oJ5<+?Q}I-|BL?|8&2_3vYnCkGrP( z71^vuU5nji66Yk$cb2nXwk{^W=b)uLnzo{%Cae*k;QG^%Y@XZX95&T|01q6crQkwS z*ci-C=m-wR)zBC=M)f|De*g`Ch%SGo`I7ok!n{lx=`VC87r+8n z=$F{NsCbj*BdMYTTDI5v*ZKghG&irVCcsL6iVEf`8sfv?2D$a1DyzT6@2gpK1BbWq z%YaqQeD@OLG&Q)nM@!s~xR_Gk}$5upwHvzd2`f^bzz8#k6tpBT+rvDO5Hn2A>2z3$6-22n=Pq zdK=gs{3bM=uRlXQLNom*Jh{?OrPWUR_0xv5SX#YwExlF7jf`OCey`}8&qze0y=_2R6>_N!C0hEFt3Rke5%FP-|Sf& zeeHwo@9iZV1DumwerB@onB1B;@57M{IHP3EophaYA4=$#FfZXkVwuGA?hddfPq-A< zH|~9|>aKFGZ1A^Ky2wJVAjt(LXVi2Sb~SgWp%A$4JYcV9D`k6Qon?IqqqGD$CY#~J zjV4K953I(C=63xFen+>oN#Ge*a7OUqe%6ni!e(Y+xJI|Q-NvBLu4bzE)3jt;mWMfI zGtXXKI+PW-8TICLu7lO}ULV0J7^pu1fwWVDw&2s&pIdPUDJwZSWoPJ~7O3BG2ivq+ z%-10}CI2ODirh+*nFT7*r+m;0;!wYsEYjuduG=be!313R165aBYjx2lH_&frU9|>k zEG9+gMEb{at9!Ve&%jH3uaAWX)`~q)9`wprsHlbDZP=)7H9!+fkuE&LoQoc<0lsRJ z#Y8r1SO42~qgBfV?_(UgnVLqjJ{Z>hF6Bk6MZAkP08L~)Tm%j=E7k|cUyYaZK=9ML zbg%cA#D>Jx=(G4urCj_$yo_3nQ~H{zEEhYAJ#5-D=^lsh95~1bJ*{}~v-45Ut0+U|Y$~sBPSbZCwf9iP;*yJZ1s02mVIWI47NqDZCRIs7Yf~-U>XE z1##!LX@g)BY*4c@?>5kv8NcAnw+%PViM(TbV3y+AFXn^k-$uB_p0K$wiV6Iwc7i?W zboET^SY%IlB21AQ!4-i_e;SqO0<~yepm(rxs3qL})4>(Np8lqpGc&%)=$Jk&Evx6} z3@M{v#?=ft^9s1fYwrW^39r>V-c!%>&U4&1F;Fb;zpEGNF z>Sh$qaA!PDe~|t>{a*T|^k37Pr{_!mm@(R0BCsNuHS#K!piCtv;uGHW&Cz}|U>3Om zBVD9Y%;(jVG6yhIBn$6_g<=`GFMQWa7B`-l-`PevkGVIxmN<6V&)6-F+m8CqInHA2 zt;4Q4)U-?PJP8jH?zzXg_BdO@RW3reS=8CsIn&wB`N1*5(ZTV-k>nJe`N@5(=kPgd zauOfA{&LoL)^xP6-?0s}t+r0IG==;3BmN*cZ{N^$Irw-w4mmf{K*HA0R7^QlIEI z7I2R?*5|-BZ>3G;sc40RjF&t0wE8=&ku{)l*HMJD)ap|O`{+Bkh2D`He3Dht0;RXzeH_y9{d8`FP2xKtm>)~mw_E5Ih+B{X0wze+f1jMN2o z1;^rP>|4lIE@s> zx$G~kr!g0Avp>wEBol8i`oK$ithd%SD>L{RE8>>*6Fa|J%6CdOlB?Xx8Z{NJ=AXtS za}c_kYGC3Qq(va+&#V_nG#D=o!FTr~KJxuwp{mOC_|WKYcr<(!dLL{NtQ9EfKkJkH zai8h?%YQpy4OI?J4NeYj3NG|pd~3X8Gh2C*J$d~9WS+|CkbW{_YGy@W8{ZjkVXx$! zj7BZhyU{zxgT&^nCH?3$6zhpithRSQR)YLLh+JlRYjZd&RNdE!w_&n^hG!U%cnUY@N zPf?DO))8dj4SVB{I6GA^j?;OR()Xj=oJWnyr5Dj=z$Ko;#yW-bp|SmW!>?L_V9kah z8HQ(dgq`>up5hd$VrgS6Y{xA41UCmiIR~cV(0|dsS2ruel~(8hN>EQy^w~^kUuwy8 zoZjdF{I%{xUPNw0dd4;?e~|E2JUTCw6#0bT<>mNE^)`+&lD-T7;o`7Pe9UrVK^E<1 zUeL+0W_QDbQ@zgZ{jE?-ILUO^31_VK;5I$g@$qJ4zWJ5$%#5Q*P-)4;GZP=kR6U(Z za;a8EyNOr!cv#Y7=nX&8C+1SSv!j2cz9L=z*Vr^%5&dBLn|PX=q7OZyR8tQqtKmuS z;??w0mf^SFL$mPoyTF3nutw&Rc)yVR!$l-#Pe*BV2z+ubjN)sG7u{GB(32HR(r@UZ zM={aPqYnMcoOp>{iQ9Mx2jnxOCe_%-1iV4b2{U@HF^tX`RGCzpWOA75>OX5w)NG`6 zjfS1I+E@zapNwzG6+Ef(z@~J8j|9m`yeb?KSMYR{k@HzHt&QZTsN7ncNA+YaQ;C7Z zbd0TxM#HT_M}z%>BZJ97)nC(}-Ty0Y1`pv8NnX{AN^GV8+-$OO#>Hv_?mfgUBZxUaBpj#tZcc$;}wd$*udyXXDao8W8g8|r)Ld+m<~1_$2->I9Pf zr@h~2R`P^0p1{Rgobe#zdB&rRml-=Ve$SYl+1%eWSU%(nRUpmmMW}ROuy1iN5a}EL zNf}Mb>UFIu`=YXBCDjq?Na^Nk5Wl@>`qq*P<`9bGBZ2X&3SGFMOa!qWFZF6n&Y{P8VVTT<4KaS1ww{TW!}!0!f30>zQ?rIl!#7 z6|}Jk-e&Fe z)q@k8smW=KM)Zyq!0snRAH|lbztM?Cji2bh>Z6{S7yp{HlEpZWi{oMN`z`37ZB)|3 zOr2g3#;eRwkCY#kvpD;AQr~e-@I+M8fq9IeA6%}yR;sA|d0Pa_tfST#e4-oM?Qitj zoS9Vo=zLl}?V+lwMd4#Fg}b&2FN1Ahw9~W;OsfaT4>hs#∾`x}VcK=zqiUO46$v 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 Fe*k(j{{R30 literal 0 HcmV?d00001 diff --git a/isis/tests/data/demprep/vest64_dtm_specialpixels_downsampled.cub b/isis/tests/data/demprep/vest64_dtm_specialpixels_downsampled.cub new file mode 100644 index 0000000000000000000000000000000000000000..d59798635be032ec302e84a3344ae61827ab75bf GIT binary patch literal 334254 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 literal 0 HcmV?d00001 diff --git a/isis/tests/data/lronac/nacl.img b/isis/tests/data/lronac/nacl.img new file mode 100644 index 0000000000..4c87b061b9 --- /dev/null +++ b/isis/tests/data/lronac/nacl.img @@ -0,0 +1,154 @@ +PDS_VERSION_ID = PDS3 +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 5064 +FILE_RECORDS = 52225 +LABEL_RECORDS = 1 +^IMAGE = 2694 +DATA_SET_ID = LRO-L-LROC-2-EDR-V1.0 +ORIGINAL_PRODUCT_ID = nacl00015d79 +PRODUCT_ID = M114145549LE +MISSION_NAME = "LUNAR RECONNAISSANCE ORBITER" +MISSION_PHASE_NAME = "NOMINAL MISSION" +INSTRUMENT_HOST_NAME = "LUNAR RECONNAISSANCE ORBITER" +INSTRUMENT_HOST_ID = LRO +INSTRUMENT_NAME = "LUNAR RECONNAISSANCE ORBITER CAMERA" +INSTRUMENT_ID = LROC +LRO:PREROLL_TIME = 2009-11-29T14:51:21.623000 +START_TIME = 2009-11-29T14:51:21.968000 +STOP_TIME = 2009-11-29T14:51:39.599000 +LRO:SPACECRAFT_CLOCK_PREROLL_COUNT = 1/281199081:26214 +SPACECRAFT_CLOCK_START_COUNT = 1/281199081:48869 +SPACECRAFT_CLOCK_STOP_COUNT = 1/281199099:24674 +ORBIT_NUMBER = 1955 +PRODUCER_ID = LRO_LROC_TEAM +PRODUCT_CREATION_TIME = 2010-06-30T21:15:10 +PRODUCER_INSTITUTION_NAME = "ARIZONA STATE UNIVERSITY" +PRODUCT_TYPE = EDR +PRODUCT_VERSION_ID = v1.2 +UPLOAD_ID = SC_2009333_0000_A_V02.txt +TARGET_NAME = MOON +RATIONALE_DESC = "TARGET OF OPPORTUNITY" +FRAME_ID = LEFT +DATA_QUALITY_ID = "0" +DATA_QUALITY_DESC = "The DATA_QUALITY_ID is set to an 8-bit value that encodes the following data quality information for the observation. For each bit a value of 0 means FALSE and a value of 1 means TRUE. More information about the data quality ID can be found in the LROC EDR/CDR SIS, section 3.3 'Label and Header Descriptions'. Bit 1: Temperature of focal plane array is out of bounds. Bit 2: Threshold for saturated pixels is reached. Bit 3: Threshold for under-saturated pixels is reached. Bit 4: Observation is missing telemetry packets. Bit 5: SPICE information is bad or missing. Bit 6: Observation or housekeeping information is bad or missing. Bit 7: Spare. Bit 8: Spare." +LRO:TEMPERATURE_SCS = 3.88 +LRO:TEMPERATURE_FPA = 17.73 +LRO:TEMPERATURE_FPGA = -12.94 +LRO:TEMPERATURE_TELESCOPE = 8.89 +LRO:TEMPERATURE_SCS_RAW = 2770 +LRO:TEMPERATURE_FPA_RAW = 2115 +LRO:TEMPERATURE_FPGA_RAW = 3440 +LRO:TEMPERATURE_TELESCOPE_RAW = 2536 +CROSSTRACK_SUMMING = 1 +BANDWIDTH = 300 +CENTER_FILTER_WAVELENGTH = 600 +LINE_EXPOSURE_DURATION = 0.3376 +LRO:LINE_EXPOSURE_CODE = 0 +LRO:DAC_RESET_LEVEL = 198 +LRO:CHANNEL_A_OFFSET = 40 +LRO:CHANNEL_B_OFFSET = 104 +LRO:COMPAND_CODE = 0 +LRO:LINE_CODE = 51 +LRO:BTERM = (0, 8, 25, 59, 128) +LRO:MTERM = (0.5, 0.25, 0.125, 0.0625, 0.03125) +LRO:XTERM = (0, 32, 136, 543, 2207) +LRO:COMPRESSION_FLAG = 1 +LRO:MODE = 7 +Object = IMAGE + LINES = 10 + LINE_SAMPLES = 5064 + SAMPLE_BITS = 8 + SAMPLE_TYPE = LSB_INTEGER + UNIT = RAW_INSTRUMENT_COUNT + MD5_CHECKSUM = 4eecc98d2932a8e9d38d76446a704a49 +End_Object +EndDS_VERSION_ID = PDS3 + +/*FILE CHARACTERISTICS*/ +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 5064 +FILE_RECORDS = 52225 +LABEL_RECORDS = 1 +^IMAGE = 2 + +/*DATA IDENTIFICATION*/ +DATA_SET_ID = "LRO-L-LROC-2-EDR-V1.0" +ORIGINAL_PRODUCT_ID = nacl00015d79 +PRODUCT_ID = M114145549LE +MISSION_NAME = "LUNAR RECONNAISSANCE ORBITER" +MISSION_PHASE_NAME = "NOMINAL MISSION" +INSTRUMENT_HOST_NAME = "LUNAR RECONNAISSANCE ORBITER" +INSTRUMENT_HOST_ID = LRO +INSTRUMENT_NAME = "LUNAR RECONNAISSANCE ORBITER CAMERA" +INSTRUMENT_ID = LROC +LRO:PREROLL_TIME = 2009-11-29T14:51:21.623 +START_TIME = 2009-11-29T14:51:21.968 +STOP_TIME = 2009-11-29T14:51:39.599 +LRO:SPACECRAFT_CLOCK_PREROLL_COUNT = "1/281199081:26214" +SPACECRAFT_CLOCK_START_COUNT = "1/281199081:48869" +SPACECRAFT_CLOCK_STOP_COUNT = "1/281199099:24674" +ORBIT_NUMBER = 1955 +PRODUCER_ID = LRO_LROC_TEAM +PRODUCT_CREATION_TIME = 2010-06-30T21:15:10 +PRODUCER_INSTITUTION_NAME = "ARIZONA STATE UNIVERSITY" +PRODUCT_TYPE = EDR +PRODUCT_VERSION_ID = "v1.2" +UPLOAD_ID = "SC_2009333_0000_A_V02.txt" + +/*DATA DESCRIPTION*/ +TARGET_NAME = "MOON" +RATIONALE_DESC = "TARGET OF OPPORTUNITY" +FRAME_ID = LEFT +DATA_QUALITY_ID = "0" +DATA_QUALITY_DESC = "The DATA_QUALITY_ID is set to an 8-bit value that encodes the + following data quality information for the observation. For each bit + a value of 0 means FALSE and a value of 1 means TRUE. More + information about the data quality ID can be found in the LROC + EDR/CDR SIS, section 3.3 'Label and Header Descriptions'. + Bit 1: Temperature of focal plane array is out of bounds. + Bit 2: Threshold for saturated pixels is reached. + Bit 3: Threshold for under-saturated pixels is reached. + Bit 4: Observation is missing telemetry packets. + Bit 5: SPICE information is bad or missing. + Bit 6: Observation or housekeeping information is bad or missing. + Bit 7: Spare. + Bit 8: Spare." + +/*ENVIRONMENT*/ +LRO:TEMPERATURE_SCS = 3.88 +LRO:TEMPERATURE_FPA = 17.73 +LRO:TEMPERATURE_FPGA = -12.94 +LRO:TEMPERATURE_TELESCOPE = 8.89 +LRO:TEMPERATURE_SCS_RAW = 2770 +LRO:TEMPERATURE_FPA_RAW = 2115 +LRO:TEMPERATURE_FPGA_RAW = 3440 +LRO:TEMPERATURE_TELESCOPE_RAW = 2536 + +/*IMAGING PARAMETERS*/ +CROSSTRACK_SUMMING = 1 +BANDWIDTH = 300 +CENTER_FILTER_WAVELENGTH = 600 +LINE_EXPOSURE_DURATION = 0.337600 +LRO:LINE_EXPOSURE_CODE = 0 +LRO:DAC_RESET_LEVEL = 198 +LRO:CHANNEL_A_OFFSET = 40 +LRO:CHANNEL_B_OFFSET = 104 +LRO:COMPAND_CODE = 0 +LRO:LINE_CODE = 51 +LRO:BTERM = (0,8,25,59,128) +LRO:MTERM = (0.5,0.25,0.125,0.0625,0.03125) +LRO:XTERM = (0,32,136,543,2207) +LRO:COMPRESSION_FLAG = 1 +LRO:MODE = 7 + +/*DATA OBJECT*/ +OBJECT = IMAGE + LINES = 52224 + LINE_SAMPLES = 5064 + SAMPLE_BITS = 8 + SAMPLE_TYPE = LSB_INTEGER + UNIT = "RAW_INSTRUMENT_COUNT" + MD5_CHECKSUM = "4eecc98d2932a8e9d38d76446a704a49" +END_OBJECT = IMAGE +END + 2-")+-,.,.,-,,,,+,,-+,+-,-,-,-,-+---,-+-+,+,+-,.--,-+,+-+-,-+,+-+,,,,,,,+,+,*,+,+-++)+(,),,,,,+,,-+,+,+,,-,,,,+,*+(*)++--...,-++),-.,,)**-,++++,+,+,+,+,+,++++*,+,*+)+*+*,*+)++,,-+-+,++++*+*+*+*,+,++*+*+*+*,++*++,+,+,+,+,+,+-+,*+)+)*))&**+*+)*(*'*(+')&'#$"$"%#$"$&*+-,,)**+)*))&('*)*)*)+*+*++,*+,.,,+,*,,-,-,.,.,.-/./-/.0./..,..00002120100//.0.0..+--//11300/.+,-0./,/-/.//0/0/1/0/101/0/0.1./././././/1122312-1/212121212121111131312143456343435353545475756564769898><:87758:82142:9977689<=?>?;;9<;;862-'$ !!(*,0.36432----/-0/2578;<:86467<=@<;566;<@?BB?;=>AD?A>@ABBAC@B@C?A>B=<750212/0--+*"%))&*'*),+,,.-/1201-1////-//0///.-0-/.0/20212.200,.-.,-,../.-+,,.-../-...,-.0.--/./00,.--,-.0/./.././-/./.001./.../././.0./././01011100/0.00211/00//0/0.-*,.21212/0/0/0/1010101/0./.00101/002222101010/210/./-/./.0010201010101/00101-/.100/////0/0/10111/0/0.0./-/.101/0///0/0//././.0///////0./././.0.0-/./.0/0././-.-.-../-...-.-0//..,.,.,-,-,-,.-.,--.-.-.-.-.-.,.-----.-.-/-/-/-/-.,-+,,-,.-/.+##'+/25720..-.-.,---,-,.,/./,.,.,.,,,...-...-.---.,.,-,.,-,--...//.../.-+/./-.-.-.--,.-/./--,.---.-.--,-,.--,-,-,-,-,-,.--,-,,+-,.-.-.,---,-+,+,+,,,,-,-+.--,,+-,,,,+-+-+-*-*,,-,-+/+.--,-,-+-,-,.,.-../-.-.,.,-,-,-+,,.-/./-.-.-.-.,--.--,-,-+-+-,.//*-+-,-,-,.-.-.---.././///0./..--,+-.-.-.-/-/..,.,.-.--,.-/-.----+-,---,-+-+,,---,.-.-.-.,-+,,-+-,.,-,,,/-.--,-,-,-++,/--,.--,--...-.,.,-,-,-,,+-,.-...,.-.-/./..-.,,+-,.-/.0..-../..,.....-.-.,-**&($&$(%('*),+--/./-.,--.-,*+)++-,,-/-/-.--,-++)++///-..0/0/011/0/0//./....-.,-+,+-+,*+*+*+*+**+-,.-/-/.0/0010101/0/0.0//-.,.-.-.-/.///..,-,--//0./-.-.-.-.-.-.-/-/...-+,-/./---.-.-/././././././-.,----.-.,-,--...--,--.-.,-,.-//0./-.,-,-++*-,--.-///..-/-/-.-.-.,.,--.,.,-+-*.,.-/....**,/-.,-,-,-,--.-.+,,.++*,-/./-.-.--,.--,-,-,-+-,-,.+-+,+-,.+-,.,-,-+-+,-/.0-.-.-.,-+,*+*,+,*,+.,-,.-..0-.,-,-,-,/-.-.,.,.-.-.-/./-/./-.-.,-,-,-,,+,+-,-,-,-+,+-,,,-+,,-+-,-++)-,../,-------,-+.,.,-,-,-,-+,+-,-+-+,+,+-+,--,-,.,-,-,-,-,-,-,-,--.-.-/.0./.+*,,.,-,-,,+-+,,-+,+,,,+,*+*+*-)+*++--.,..0..--+,+,+,+,*,+,+,*,+-+,+,+,+,+-+-+-,-+-,.,.-.,-,-+-+.,---+-,.,---,-,-,-,.+-+-,-,-+,+-+-,-+-,-,.,,+,,-+,,,+,+,+,+,+,*,+,,,+,+,*,+,*,+-*,*,*++,,..0-/,+)**++..0/0.-*+)*)*'&',..+,*++*%('-.-(("'(0040-,,+-+,**(**,,.-.,-*+*+*,+-+,++*,*,*+*+*,*+)+*+*,*+*,+,++*,+,*,()'**,+,*,*,*+*,*+*+)**+*+**)+*+*,*,++*,+,++)+*,*+&++++*(**,+,)+(*)+***,)+)*')%*+-,-++,/+,-.,----.,-+,+-,-,-+,++)**,,---+++.-.-.,.,,**),*,+-+,+,*,*++,,-,-+-,-,-,-,-,.,...-.,-,-+-,+,-,-+-,,+*%()--/./--,,,/-/./././-.,-,----/-,,/-.,-,-,-,-,-+,,-+,+,*,,,,,*,*+*,++**)*(****+*,+,+,*+*,+,,-+-,-,-,.+("$$-/1,,*+*-,-,.-./00101121322121210-/.100..,-,-,-,-,.,-+-+,+,+,+,+,++*,+-,-+,,,+,,-+,+,+-+-,,+,,-,-+,+-,-+-+,+,+-+,+,*,,.-.,,,-+-+-+-,,,,,-,,+,+.--,-+-,.,--.,.-.,,,.--,-,,,-+,,-,-,-+,,.,-+,*+*+*,+-,.--,,++*,+,+.+-,-++*-,-+,+,+,+,+,+-+,+,+,+++,+-+-+,+-,-+,+,+,+,+,+,+,+,+,+-+,+,++**(*)**-.0/0/0,,+,+,+,+,+,,-+-+,+,+.--,-+-+,++*+*,+,++**+,+,+,+-+,*,+,*+)*)*)*)+(+)***)*(*()(*(*)*)+*,-***)+*+),+,,-,-+,+,+,+-+--/.0//-.,.,-,-+,+-+-,-..,.,/./-//0/1/0/0/0/0/0./././/1/001/0/0/0/0.0./..-..0/1/1//./././-../-.,-,.-/-.,.-.,.-/..-.././,-,-+..0/115/((**.-.-.-.,.-../..++*..000-../..,.,-+,,,++,.-.,,+,+-,-+,+--0/0--,.,-,-+-,-+-,.,-++)**+*,*+*++-,-,--...-/-.+-,.-.,,+,,.,-,.,,,-,...-/,.+,,,+,,--.-.,,*-,-,,*,+-+.-.-.-.-.-.-./1.-,.,.,.-..0-/.//178+,)--/0--.-/..-/-001/006<9-' +,0./////-.-/,,+,*+*,*+*+**&*'*%&&$ $"! " '% !! !!$!!!" ! !#()..'& #*)+'**+*+*+,,*,,+)'()*,**),,-,--.,.-.-.-,+,,-+,+,+++-+-+,*,*,+,+,,,*.,.././.0/11221021434241664-314133544263203/31./0/1032133/322710314467;674443234924366857677878798988777;863788787866576<80/014464546454645444534243324344433121312110100/0./....,.----,-,-,-+,+*+,+,**(*(**+)*)***)*'*)+(*'*(+**)+'(')))(*(*)))))++,*+(*)+*+(*(*&&'+))(*(+*,+-+,+,*+(*)+*+(('(&('(&(&))+*,*+)*)+*+*+*+*+*+*+****)*)*(('(%(&)&(&)(+*+))%%"$#%$((+*,)*&)&&$%!%#%&'%(&*()&)%('('%'&$&$%"%&)()&)#&#&#'&&#$$&$'&'$&%'%(&($&%(%(')'(')(*(*'**+*+*+*+*+)+*+)*(+*+*+)+*+*-+,*+*,*,*,*,+,+,+,+,*-+,+,*,*-+-,-,-,--.-/./,-,..//.-/-/././.0.0//-/-/./.00112/0.////0/100///00010/0.0/1/0/0.0/10111/0/110.1120101011101/0///0/0/1/101/0..-..0/001/1/1/101/100/101//./.0/00100//./-//0/0032-,,+./0/0..,--/-.-.-/....-/./..-.,.-.-.-.--,,+--.././-.,.,.-.-.-.--,-,,,.-/..-../-/./-.-.-/.../,-,-,-,-,-,-,/.001120000/0./--,-,-,.,+*..0/0-.----,.-.-.-/-.,---,-,../-.,../.1//./-.,//0....-.-.,,'%"'*-.0/.,,+-,-,,+.-.,,+-,,+,*,*+)+)**,,/..-.-11..-,,*+*+***+'*&)&*)**-*+)++,+,,.+% %%*+,)#")#'$$#&%'$&(+&+18+& !%##"$! !"!" #  "!!%$&&&$(#'$&#%$'#&#'"$!" !##!#!$"$"# " # ! !!#"$#$ ""$!$""%#'%'"# !# ##%!%" %  $!$!"#"%"%!$"%"$!# !%#%""!$!#   ! ! ! %"%#$"&&*(*)*)*)*''')%&$%!# ! $! %$'&(%''(%'#%#$"%"%"%"#"#!# #!#"&$&$%"$#$"$ "! $#&%'$&"" "!" " " ! ! #"'''$!!'),,/.-**')%($&$%#&$'$'&(#&#'#%$'$'%&#$#&"%#%"$"$"$#&#'%)')&'%'$'$'$&%'(+)*))#%$)'($'$&&(&'$&%'')'(%'%'%(&(&(%'$%#'$$"'''%$2,")+,+-,-+-,-+,*,+,+,+,,-,-,-+,+-,-,-+-+-+,*,,-,-,,*,*++-,-,-,-+-+,,,+,+,+,+,*,+,*,*,(,)*,,+,+-+-,,+,+-+-+-+,+,*+)*(++--.--,,+,*-,-+,*+*,+)+*+,++*,,,,+*+*,*+*,++*+)+*+)+*+***,+,*-*+*+*+*+*++,*,*+*+*+*+)+*+++*,*+*,+,+,+,+,+++,*+(+(((*'*)+*+))(+)+*+(*&($&"$"$"#!#$)*,+,**)*'*((&(&)'*)*(*)*)++*"(+0/.,,*,,-,-,.,-,.-/./.../..-.-..0/1/20201/0./..-001//-/.0/1/0-.-.,.-.-.-.-0/0.//0/1/1/1/0.0.1./.0.//0/0/1131312/1/102111101010212132324354546243445342435454645465779887=<:87689:98662:9977799==?>><=;=::9;89550+ #%,,-,/142/0.,--/,.-135787<;8567::>:;8767:>=@@=9;=@CDEBA?A?>B?B@B@A?D;=9745210..-,+$(&)$)%((+,,,../0101.0//././/00//-*,-//203.0/1/00.',,-,,*-/12*++,--..-,/.0.,./..-../-/-/..-.-/.-/.-///-/-/.1/1././-/./-/.0-/.//001011201/0/00211/////0//..+--10521///0010101020100./.0/101/112112101011111//.../.--0011101000202000001./.1.///.0/0.//10220/0.0./-/-./000/0./.1/1/0//...0./.0/0./././././//-/-0/0/0././..,.,.-/-/-.-.-...-.,.,-,-,-,-,.-.-.-.-.-.,.--,/-.--,--.-.-.-/-.,.-.,-,-,-,--..,'&(-.34720//.0./,-,-+-,.+...--,-,-+++...-.-.-.-.-.--,--.,-,--.-../.../..-...,.,.-.--,.-../-.,.--,../-.,-,.,-,,,-,-+-+-,--.,-+,+--.-.,.----,,+,*,+-+-,-,-+-,-,,+,+,,-+-,,,,+,*,+,-.,-,.,.,-+-,,,-,-+--.-.-.-.,-,-,-,-+,,.-.-/-.-.-.,.,-,-,,,-,.,-+,,-/-+-+-,-+-,-,.-.,.,.-.././.0././,.,-,----.-/-../--,-,.,.-../,-,.----+,,.--+,*,,-,-,.,.-.,.,.+-,-,-,-,.,-,/-,,.,-+-,-,,,.,-,.--*,-/./,.,-,-,-,-+,,-,.-.--,.,.-/././,-+,+-,--/././-../././-.-.-.-.++()$'"&#'%)'**++.-../..-/./--++)++-,-,.-..---,-**'*+000-..//0/100/0//./-/././-.,-,-,-+-*++**++,*++,,.-/-/-0.0010101.0./-.00./-.-.-.-/.../-.+,,--//0//-.---.-.-.-.././-/..,--.--,.-.-.-/././././././-.--,---.---+--/./..---/..)+*--0/0-.-.,-,-,,+,+,,.-/././-/././-.--,.-.-.--,,*,,---,.-.-.,++/,.,-+-+-,-,-,-,-,-+,+--.-.,.,.-.----,-,-,,+,,-,-,-+++--.,.--,.,-,,+,-../-.-.-.,-+,+,*+*,+*+-+-,.-///-.--,-,.,.-.,-,-,.-.-.-/././-.-.,-,-,-,-+,+-+,--,-,,+,+,,-,-+,+-+.,-++),,-.---,.,-,-+-+-,-,-+,,-,.,-,,,-+-+-+,*,*,,,,,,-,-+.-.,-,---+-,--.-.-.././.-,-,-,.,-,-+-+,,-+-+-+,+,*+)+*+*+*++--.-../-.,,++*++,+,*+*,+,*,+,+,+,+,+,+,+-+-,-,,,-,.-.,,+-+-,.,--.,-,-,-,.,-,-+,+-+,+,+,,,+,+,+-,-,---(*,.,-,-+,+,+,+,+-+-,-+,*,+,++*,*,+,*++,*+*+*+++,..0./,+&'%**--0/10/++)*(*)*(,,,++*-**&'(,..'%$(*/03/-+,+-+,)('**,,.-.,-*+*,+,+,*,++*,*,*+)+)+)+*+*+*+(*(,,.,-+,+,+,**&**,*,+,++*+*,)+***+*+)**+*+*,*,+,*,+-+,+*)+*+++',++*+***+*+(+)*)+***,)*(*'*(+***-,,,.+,-.,-,-----+,+,+-,-+,*+)+*,+,,+)**-,----0..++*+*,+,++*,*++++,+,+-,-,---+,,-,-,.---.,-,-,-,-,,+-+-,,*(#''+,//0--,.-.-..0./..,.,-+----.-,,.,-,-+-+,+,+-+-,,+,*+*,,-++*,+,+,++**),(+***+*+*+*,*++,+-+,+,,--.-.-)"%%-/1,,*++--.-.-/.00000121212121210,,-000--,.,.,-,---,-+,+,*+*++,+-+,*,+,,,+,+-+-+-+,+,+,+-,,+-,-+,+,*-,-+,+++,+-+,++*,,.-.,-+-+,,-,-+,+-+,+,+,+-,-,,+,,--.--,-,.,.,-+-+-+-+,+,+,,,+.+---,.+,*+*+*,+,+-,,++**+,,-+-+-,-++*-,-,-+,*,++*,+,+,*,+,+,+,,-+-,-,-,,+,+.++*,*,+,*,,,+,+-+,+-+,**(*(+*--/././,-+,*,+,+,+---,-+,+-,.--+,+-+,*+*+*++,*+*++,*,+,,-+,*,+,**))(**+(*(+)**+*+(*&)&*(***'*)+*+*+*+++*,*,),--+,*,*-+-+-,/.0./--,-+-+,+,+-,.,-.--/./..-/.0/101/0.0/0//-/.//0.0/0/0///0/0/0./-/-/./.0/201/0-///./-.-.,.--,-,.-.-.-.-.-/-/.../..,,+,*--../.0,+*,,.-.-.-.-.-.-.--+,+-.0/.,..0..,--.+-+-++,.,/-.+-+,++*+*.-1/0---/-.+-+-,-+-,-,-*+)**,*,++*++,---.-/..-.--*,+,,--,++,/-.--,-+-,/-.-0,.+-+,,,,-,,--,-+-,-+-+-+-,.----,.-.,--..0//,.,.,-,./1././/012/0-/-0/.-/...--..0/0/00272*& %*--/.//1./-...--++***++,)-++(+),)%!" &#!!&$ # ! " !#!*#  #$! &&++,*#$((-*(**)+*++,+--/(%%)*,*'%+,-,,,-,.-/.-,++,,,,,+,*+*,+-+,*++,+,+,++*-+../-//11356421//323236986+1020224222342240340/012283023.00224455445598745443348474566.1258879797989888=7836586767678879556535454557455655454423243323366432121212010100/0....-.-.--,.,.,-+,,,+,+,*+)*(*)+)*)+(+(+)*(*)*'*(*)*)+*+*&&('*(*(+''***,*,**(+*+**)*'*)*(+'&$*'**++,,-,,*+)*)+**(*')%'&*&($(*+*++,(*(*)+*+***,*+**)*)*'**,'(%%%('*%'$(***+'*$$!%#&$)(+*,))%(&&$$"##&&'%''*()''%(')''&%$&$%$%$(&*')%'#%#&$&"$#$$(()&'%'%'&'&'%)&''*%)')()()'*)+*+*+++*+)**+**)+*+)+*+++*,*,++*+*,*++,+,+,+,,*+.,,++*++,,-,,+,+,,../.1,.,..///-.-.-.-/-//0//./-0.0/0011100.//0/1/100.0011101/0/0/1/1/0///00111/0/10/.0010101011201/0///0/101/1/0.0//-..0/102.1/1010100010201./.0/1/0/000/0./-//0/101/,***-/20100---.--,.-....../-/..-.-.,--.-.,-+++--/.0//..-.-.-../-.--,-,-,--.-.-.-//.././-...+--0..,-,-,-+,+,,/.101110100//./----,-,-,-+.././-/--,-,.-../-.-.---.---.-.,--/./.0//././-/./..-.-.-.,-(&#)*-./.-+,,.,-,,+.-.,--.--+,*+*+)+***,+.,.-.-/./--+,*+*+*+)+*-&(%((+,-*+),++*,)+()$*'*)*'((,+,)% #!%&(&)+-%(#+% $!%!#!! !$#! ! !   ""&%('%%'$'%%$%$'#"#*"$ "!# $!$"$!#!#!# # " !# $!$ #!# "!!$$&$&!%!# !" "#$"$"&"' # $" %%%#$!$"$"$!#!!!%"%"#!#"" "! !!$#%#$"&'*(*(***)*')&*$%#%#$ ! %! $$'&'#)%(&&#$$&"%#%"$"$!! $!# "!%$&$$#$"%"# # ""%$'%&#$!! #!! ! "!" #"&&)((!"!'(,,-++)*&(%($&$&$'&(&'**!%"$#$$'#&$%"$"$"%"%"$"$"%#%$(&*&)$'$&%'%'%'%((*(*()"&%*)*&(&(&(%(%&$''*'(&'%(%'&(&'$&%&$(&'$'$'$#2-#)+-,-+,+,+-+,*,+-+++-,.+,+-+,+,+-+-,-,-,,*,+-+-+,*+*++--.,-,-+,+,+,+,+,+,*,+,+,+,*,*-+-,,*,+--.,,+,+-,-+,+,+,+,)+*++---,,+,*-+-,-+,+,*,*)+++-***,./,,*+*,*+*+++*+*+*,*,),)+*,+,+,*+*+*,+,*+*,*,*+*,+,+,*+*+*,*,*+*++,+-+,+,+,+,**)+())*'*),*+)*)+)+)+(*''&&#&#%"$!$#()+*+()(+()(''(&)'*(*)+)*)++' &'/10--*,+-,---,.-.-/-.-../..-.-/.0/1020201/0/0./.001/1/0.0.0./-.,.-.,.-.-/-0//.//0/1/0/1/0.0/0.0//,..1110112132202/101111211121112232324254545342553034546354637575778788::989798:89797:997689:>=?>=<=;;9;9:6721,(" "%-++,/.2/...,-+//.012555576858687;:=88779@87<=AEEEG@=?@@C??@@<@>A=>=:66241-..,.')&*%($(&**,-..0/1///101-0.0/000..**,0/21000/0+(')*.031/+-.0.----.,.-.,/-0.///---,-0./././.-+/....-//0.0..-1../0./...0././././0001011211/0/10201/0//.0//./-.-00420///1010101110100///0.001011211110102020100//.0.--0/1010100121201/10200.1././.0/0.//10311/0.0./././/0/0/0/0.2000/0/.0.//0/0././..-/.0.//0./.0-..100//-.-.-.././-.-.././-.,.,-,-,-,,,,,.-.-/-.././--,/-/-.-.-.-/-.-.-.,-,-,,,-,-,--../-,+-033401/0/0//,-,-,--.,/./-.-.,-+++...-.-.-.-.-.,-,.-.+/,.,../././-.....-.,-,--.-.,--/./..,.-.,/./-.,.,.,-+-,-,-+-+.-..-,-+,,-,--.-.-.,-,,+,+,+,+-,-,-,-+-+-+,+-,-+,+,,,,,+,+-,.,-,-,-,-,-+-,-,.-.-.,.-.--,-,-,-,-,.,.,.-/-...-.,.--,-,-,.,-,-,,,--.,-+,+,+-,-,--.,--/././.0././..,-,.,.-.,.-.././---.,.,.-/./---/,,,,,.-/--+,*,,--.-.-.,.,-,.,---,-,-,.,.,/,-,.,.,.--,.,----.--*,-0./,-,-,-,-+-,-,.,.-.-.,-,.-0/0./,,-+,,+--..0./-.-../..-.-/..--++''#&#%#&%)(*)+*--../././//--++*+*-+.-.---.--,-++'*+000-..//0/0/0/0./.0././././,-,-,-,-+,**)++-+,,-,.-/-/-/.0/10100./././00./-/-.././././..,-,--//0/0./,--.-.......././.--.--,,,.-.-/././././././././-.,-,....-,--/.0-.,.-0/.)+*-.0./,/-.--,.,-+-+,+--/.0./-.//....--+-,...,.+,),,,-.---...,-+.-.--+-+,-,,-+,,-,-+--.-.-.,.,.-.--,.,.,-+,+-+-,.+,+,+--/,----.,-,-+--../-/-.-.,,+-+-*+)+)+,.+,,./0/0./..,-,.,.,.,-,-,.-.-.-/-/./-/-.--,-,-,-+,+-+---,,,,+,+,,---,,+-+-,,+,+-,-.----.,-,-,-,-,.--,-,-,.--,-+,,.+-+,+-+-+,,,,-+,,/-.,-,.,-+-,.-.-/-/././..-.,-,.,.,,+,,-+-,-,,+-,-++)+)+*,+,,.-----.--+,+,*,+,+,+,+,+,*-+,+,+,+,+,+-,-,---,-,.,.,.,,,-+--.---.,.,----.,.,-+,+,+-+,+,+,+,*,,,,.,,,-)*+.,.,.+,+,+-+,,,+,,-,,*,*+*+*,*,+,+,++*****++,,//0//,*$%#)*-.0/111-,**(**,*,+,*+*,*+)**-./*&&*+/02.,*,+-+-)*(*),,...,,*+*,*,+-+,+-*++,+,*+(+*+*,*,++)*(,-.--,,*++,*+)+*+*++,+,*,*,*+**(+**(+*+*+),+,+,+,+-+-++)+*,*,*+++*+*+*+*,)+(*)+*+)*)*(*(+*+))).--,-+-,-+.,.-.-.,-+,,-,,+,*+*+*,+-++()),+-,/.1//,,+,+,+,++*,*,+,+,+,+-,-,-,-,---,-+.,.-.,-,-,,,-,-+,,,,,*'#'',-000.--../-/.0.../,.,-+-,.,.-,,.-.,-,-+-+,+,,-,-+-+,+,,-**)-,,+,+,*+*,*+++*+*+(**,*,+++,+,+-,--.-/.,(*+./0,,*++--.-/-//0/0/0021312121201...0//,-,--.,.-.-.--+,*+***++-,.,-+,+,+,+,+,+,+,+,,,+.,---,-+-+-+-,-,-,-,,+-,-,-,,+,,.,-,-+-+-+-,-+,+-+,+,*,,-,-,,+-,.,.,.,--.,.--+,+-,-+-+-+-,-,-,-,-,.,-+,*,+-+,+-,,+,*+*,+-+-,-,.,,+,+-+,+,+,+,+,+-+,+,+,+,+,,-+---,-+,+,,-+,+-,-+-*-,,+,+,+,+,++*+'*'**--//0/0--+,+,+,+-+-,-,-+-,-+-,,,-,-+,+,*+*,*+*+*,+,+,+,+,++*,*,*+)*'**+)+*+(+),++)*'(&)&*)***)+*+*,+,+,+,++%*,.,,+,+-,,+--//0//--,-+-+-+-,-,.-.-.-../././/0/111/0.0//.0.0/0/0/0/000.//0/0/0/0.0.0.//001/0/0./././-/-0-----.-.-.-.-.-/./-/././.0,,,-+--.-/./,,+-,///.,-.,.-.--,-,,,..0/.,..0..,.,-+-,.,,,,+/-.,-+-++(,+..0//,-,--/,.,-,-,,+-,-++*,*,+-+++,+-,.-../-/./,-+++,+--.+,-0-/..,-+-,.--,-,.---,,.,-+,,-,-,---,-+-,-,--.,--.-.-.-.././-/--,-,//0//./.0/0//./././././-../.0///100/-++*,+-./.003//-..-/.+,-+*,+,+-*+)*)/*$#"%# !%! "  #' ! ! ! $% !"'$&$(&)')*+*+''%''**+*,+-01%%#((+**)++,+,--,.,.,-,,+,+,++++*+*,+,+-+,+-.,-1+("&,./.0/214352301132227??69/1/113473303243502221350043/02.002277373246<70233645465;3038+,-2697:8:797988797:38565668788967578555354558564545454433333434354433121212010101/0......--,.-.,-,-+,,-+,*+****)*)+*+*,(+(+)*')(+(+***+***++'$(&*(*'*)*)+*,*,*+*+++)+(*)**+)*%&%)'**+*,,./,*+)**+)***()$&&+()%(*+*+*,)*'*)+*+)+*+*+******'**,')$'%))*%($)*+*+')%&#&$&$)*+*+))$&$'$%"%$'%'$'&)'*()'*))''$&#'$&%%$'&)'*$&#%$%$%"%#&$*)*''&(%(%(%'&*&)&)%(')'*(*'*(**+*+*+*,)**+*+*,)+)+*,+,*,+,++*+*,++*++,+-,,+**.,,+,*++-,-,,*,+,,--/.0./-/.021+++--.-..//0/0./.0/0/0/11200.0/000/0/0.0010101/0/0/0/100.//00201/0/101/0010111011111/0/0/0/1010000/0./-/.0/101/001010100/10201././/10001/1//././/0/101.+)*+./31311..-/-.,.-.-.....-/././--+,-0..--,,,--/.0./.../..-../-.-.-.--,-,.-/-.-//..///...-)--0..,-+.,-,,+,+..0/2020100.0./-.,-,-,--.-.-/./-/-.,--.././-.-.,--.-../-.,--///-/./.0/0././-.-.,.-.,-**'*+-..,,*,,.,-,-,.-.,--.,-+-*,*+*+*,+,+-,.-.-.-..-*,*,+,*,*++3.+$)#+-0++*,*,+,(+(*'*'+(,')(+.6+'!"%%''(&*)1,!"$"$!" ! "#  "" ! ! #"&&*%$&%%(')"&!&##%*!  !#"$"%!$!" $"$ # # ! ! %!## $!"!"!$#&$$##!" !" !"$"%"$""!!#!$"!('&$%!$"$!$!# ! $!$##!" !"  #! !!$#%$%#'&*)+)*(*)*'(%($%#%"$ ! "!#""!%$'&'%(')%&"%$'$&"$"%!###"$!#!#"&$%#&%'$&!#"#!$#'$&%%"$"" " !!!# #"&')(*(($)(+*+))(*')')%&$&&)&)%'&(#&#&#&%'$&$%#%#$"%#%!$"%#%$&$(&)&)%'$'%'&'&'&)(+(*((&'&*)*'(&(&(&($%$''*')&(%'%'%('(%'&&$'%($%$&"#2-"(+-+-*+*,+.,-+,+,*++-,-+,+-+,*,*,+--.,...,,+,+,+,+,+,*,-.-.,-+,+,+,+-+,+,+,*,+-+,*,*-+-+,*,+,,,,-+,+-,-+,+,*-+,*++,,-,,+,+,+-,-,,+,+,*,))+++,))),./,,*+*+)+*,*+*+*+++*+***+*,++,,*+*++,+,*++,+,*++,+,*+*+()+++,+,*++-+,,-+,+,++*+(*()(('*)++,*,**(*)+(*')&(%&#%"$!$#((***$%',**''&(')&)(*)*)*)+*("(*11/-,+,,-----,.-/-.-/-.././-/.//0/00101/0/1/1/0/0//.0/1/0./..-.-.,--../-/.0..-/.0/0/0.0//.//0/10/,-/11202121323020201010013121213221313243545333552/3464535464657576868798989799:8:887;9:7789;>=>>><;886=:9530.*'!$$&,),-,./*.+.+/,///11345354.43874577<99799<>=?64;@;B@>;85510..-3*%"'%)%&&()++-./././/102/0/0/0//-/,.-/.10112/-"(+02542./+----.--,----/,/-/-1-.,++1/1.../.*+0././-..0///..0.-.0-0-/.0././././/1020112020101021201/1/000//./.00100.0/1010102120101/0/1./01021122121203020101/0.0/..//1010101121200.10211/0.../.0/0.0010210//././,..001/1/0.//1/1/0/0//.0.0.0///0/0/0.0./.0////*+*011/0././-/././-.-../-/--,-,-,-+,+,,--/-/./..././-.,.-...---/-/-.-.-.,.,-+,+-,-,-,.-/.0-//1/1/1/0/0//-/,.-.-../-.,.-/-.,-+.-.-.--,-./-.,-,--.+/,-,.-.-/-.-///-/-.-.,-+/./-.-0.../-.-.,/-.--,-,.,.,-,-,-+-+--/.-,-,-,-,-,.,.-.,-,,+,,-+,+,+-,-+,,-,-,-+,,++,+-+,+,*,+-,-,-,-,---,.,-,-+-,-,-,/,/-.,-,-,-,-,.,.,../..-...,.,-,-,--.,-+-,-,-,-+-,,+,+,+-,---,-,.././././-/./-.-.-.,.,.-/././----,.-.././-.,.,----.-.,,*,*,,--.-/-/-.+--.,--.,-,---,-,-,.+--.-.--,-,-,.-.-.+--/-/-.--,.,,),-/-.-.---.,-,.-/./..,--,+-+-,../././././-.-/.0-.--+*(&"$"$"&&*('(**--/./.0/000.-+,*,+-,.,,,../.-+-./(,,/..+-/0/0/0/0./.../.0/0.//0-.,.,-,-+,++*,+,+-,.-.-/-.-..0/10100./-/.0/0./-.-.-/-/./-...,-,--//0/0./,.-/-.-.-/./.0/10---,.,--.-,+0.0././-/-0,/.0./..,.-/----,.-/..+++-.0//,-,.-/-/,.-.-.,-,.,,+,+--/.0//-///--,.-.-.-.-.,-,+*++-,.-.-...-.,.-.-.+-+-,--,+,,-,-,.,.,.-.--,--/,.,-,-,-+,+,+-,.+,+-,--.-.,.-.,-,.,-,.-.-.-.-.,++.,-**'*)+,/+,,..//0./..,-,.,.,.,-,-,.---.-.-/..-.-.,-,-,-,.,,+-+-,-,-,-+,+,,-,-,-+-+,,,+,+-,../-.-/,.,-,-,.,.,-,-,.-.,-,-,-,-,-+-,.,-,-,-,-+,,.--,-,.,-,--.-/-/./././-/,.---.,-+-*-,-,.+-*,*--.+,*+)**,+-+.-.,.,-,-+-+,*,+,+,+-+,*,+,+,,-+,+,+,+,,-,---,-,.-.--,-,-,---,--.,.,--.-.--,,+,+,+-+,*,+,*+*,+--.,+,.,,--,-,-+-,-+-+,+-*+,.,-++*+*+++*,+,+-+,****(+*,,./1//+'!#!()--//101-++)(**,+,+,*+*+*+*+*,,.-+*,,/./+,*,*,+,*+***+,.,-,,+++,+,,-++*-*++-+*+,(+*,*++,++*+)-,.--++*++-+,++*+),*,++*+*,*+***+*+(+),++*,+,+-*+,/--,+*+*+*++,*+*,+,*,*+*+)+*+)+)+(*(*(+*+'**.--,-+-,-+.,.,---,-,-,-,,+-+,*+*++,++'))++--//10/,++,+,+,*+*,+,+,+,+,+,--,-+--.-.,-+-,.-.,.,-,,,-+-+,+-,,'%$'(,-0/0..,...-/.0//./-.,-,-,-+-+-+-,-,-,-,-+-+,,.,-+,+-+,+-***-+,+,+,*,*+*++*)*)*%**+*,+++,+,+-,.....-.,..//.*+*,,.-/./.0/000/1021223120201//./-.,-,-,-,../--,-+-+,)*+++---,-+,+,+,+,+,+-+,+,+-+-,-,-,-,-+-,-,-,-,,+,*,,.-.,,+,,-,-,,+,,-,,,.+-,,+,+,+++-,-,-+-+--.--,-,.,.--,-,-,-,-+-+-,-,-+---,-,.,-+-,-,,,,+,+,+,+,+-,-,,+.--+,,-,.+,+,++*,+,+,,-+,*,+,,-,-,-,-+-,,,-+,+,,-+-+-+-+,+,+,+,+,++(*(+*-,//0//--+,*,+,+-+-,.,-+.,.+,,,+-,-+-+,*++-*+*,*+*++,,,++*,+,+,**(*')(*(+*+'**,++()&(&(&))*)*(**++,*++,+,+*$)+,,,+,+-,,,,.//100.-,,+,+-,,,.-.-.-.-/-/././/00101//.0././/0/1/0/0/01////0//.0/0./-0/101..,/02/0./././..-.---.,----/-/-/./-.-/.0./--,-,-,--.-.--+-,/.0.--.,...--,-+--.././-...-.-.,-+-,.-.+**.-.,-+,+,*-,../..+,,----.-.,-+,*,,-++*++-,,*++,,,,-,--/.0./,-+,++*--.--..-/-/,,,-+.--,.-/.,+-,-,,+-,.--,.-.,-,-+-+,,.-.-.-.-.-../-..0..+-,///////.0/0////.///./.0.0/0/11311..,,,,+-+....0/1/0-/-.-,-+,+*,+,+-*,*%%(%&$%!# "!"!&#&!# # ! % $ $*(&#&'&*-26,%!#)*,*,++&'%*)+*+*++,+,+-,.*,*-.-,-,-,,++*+*,+-+-+-+--/26/-#(+//1.221223212222227<;7<3412134844131453/3.10461,/./00/2562:6124259=2/135745469?4-,2*-/35:898:887767797;6:9577687878675665454745475656454555352433353545331313120201//././-.-.-.,.,---,-+-,,+,*+*+)*)*)+*+*+*,**)*'*)+(*(****)(*((%*&*(*(*)*)+*++++,+**+)+(*(*(*)*$&$)'*)**,,/3,++)+*+'***)*'(&*(*(*)+*+*+(*'*)+*+*+)+***+*+**)*)*'(%(%)(*'(&**+**''%&%'%'%**+*+(($&%'$%#'$'%%#%$)'+**)*)(%'$'$'$'%&$)'*&)$'#'%&#%"%$'&*(*''&(&('(&('*(*#(%)&)&)'*(('**+++*+)+)+*+*+*+*+*+*+),,,,,++)**,+,*++,,-,-+,+,*,*+*,,.,,**)++,,--/.0/0./.122+&#*+.-..//0//.0/0./.0010100.0/0/0/0/0/1/10001/1/1/00100/0/00201/0010100010101/1121101/0/0/0/0/0/0//././/0/10101010101/1/1/1/0.0/0/1/0/101//.../.0/102-+)+,./32411//----,.,.,/././-/./-.--+,-0..--+.-.-/./-..0/0//-../-.....---,-/-/,.,//0/0//-...*,.0-.+,+.-.,,*,,/.1021201/0.0./-.,-,,,-,--../././..,.-.././-.,--.-.-../-.-..0/0././/0/0././---.,.-.+-*++,,,,-+,+-,-,,+-,---,.,-,-+,*,)+*+),+-+-,.-.,-,---+,*,*,+,*,+2/)(&%++-+,+0*,++)+)*&)'+'.)*)+.82* $$%$'%+#)*)*" #$% % ! " ! $!   "!$$&(+#%!%%('+!& $$'%) !!#"$"%"%##"$"$!$!# " #!#!$"$!$!#!%#%"$"$!#!! #!$"$"$ ! # % #)&%#$!"!$"%!! #"$##!! "!# " !!$$&%&%((**+*+)*()&(%%"$#$"# "! #!# ! #"&$'%'%'%(%'#%#&#$"#"#"$"$!#!# #!&"$#&%&$%"#"$"$$&$'$%#%##!#! ! ""%&)%**)))'*(*&'(*)*&)%'%(&*'(&&%'$&%&$&$&$&$%#%$%"$"$!"!%"&#%$(&)')&'&(&)&&&)'*)*()&)'('*'*(*')'(&'&'%(&)&)&)&(%'&''(&'%(%'%&"&$%#$2,"',-,-++*,,.,-+-,,+++-+-,,+,++)+*,*--.,/./,-*,*,+,+,+-+.,.,-,-+,+,+++-+,+,*,+-+-,,+,*-+-+-+,+,+-,,+,+-+-+-+,+-+,*,+,,-+,*,+,+-+-,-+,+,*,****+,***-..+,*+++(+*+*+*+)+*,*,*+*+*+++++*+*+*,*,*+*+*,*,+,+,*+*+&)+,+,+,*,+-*-+,+,+-+,**(*&*&)&**,+,*,*+(*)+()')()&(#$#%"%#(&***$%',**&'&(&*&)')(*(*)++,),-/--+,+-,-,.-.-...-.-.--././.0.//0.0/1/0.101010000//-0.1/1/0..-/-/-.-/./././.-,..0/0.0.///.//1/010-/001201010212/202110202121313132212122535443336562555453646355757677878898989::9;865:8;897::>=>?>;9775:7730-,&%#)***&('*--$'$,+//1-037565743.2485976876868:;=7>@;:@B@=:86110//1++''$&$''('*),-/-/-0/31211.0.1//-/,/-/.0/102.*),12553..,-,.,.,-,...,.,.-.,0./,--..0...0.*,0././-/.0.0././././-/...//0././.0/112010201010102110101/0/0/0/0.0/0/0/0/0/10112120102/0/0/00112111312130212010201.0././-1/11112121200-0031100./.0/0/0/0/10210-.-/.-+,.11201/0.0/0.1/0/0/0././.0-./101/0/1//.0.../++*.01//-.-/.//0//./-.//./-.+-,-+,+,+,,--.././././..-.,.-.-.-.-.-/-.,.,-,-,-,-,---,-,.-..0/1/0/0/100/1/0./-/-/./..,.+--../..+-,---,,+-.0..--,--/./-.,--/-/-.-/./..-.,.,-*.-/././.-..-.-.-/-/-.-.,.+/,.-.,.,-,.-.+/-.,.-.-.-.,.-.,-,+)+,/--,,+-,-+-+,,-,-+,+,+,+-+-,,*,+.-.,-+-,.--,-,,,-,-,-,.-.-.,--.-.-.,---,.-../..-...,-,.+-,-,.--,.-.,-+-+-+,+,+,+,,---,-,../.0.0./././-.--,-,.,.-.-/..--,.,/-///,.,---,.-.-.--,,*,*-,-,.-/-/,.+--.,,,/,-,---,-,-,,,-....-.,-,-,.-.-.,--.-.-/-.-.,-*,-/-.-.,.,,,,,.-/./..,.,,+-,--./0./...///..,..0./--*+(($%#%#$&-*%&'*-,..//0/000..+,+,+,+-*)*.03.**,-.,.-/..*-/0/0.0.0././/0.0.0-///-.,.--,---,-+-+-,,,/-/-.-.-.-//00100..-/.0/0.0-/-/-/././-/-/,.--,./1/0..-.-.-.-.-/.0././..-.,.,.,.-.-/././-/-/.0-/.0/0..---.,-,-,../.-*+*-.100-.---.-.-.-.-.,.,-,++,+--/.000/0..+++.-...,.-.,-+,*,+,,--.-...---.,---+,+-,-,-+-,-+-,--.,/-.,-,.-.--,---+.+,+-,-,-,,,-,--/-.-/-.--,---,.-.-.-/,.,,+.--**&))*+,+-,/.0/1//..,-,-,-,-,--.,.-.-.-.-/..-.-.--,-,,*--.-/+-+-+,+-,,,,,-,-+,+-+-,-+,+-,.-/-.-.,-,-,-,.,.-.,-,.-.,-,-,.+-+,+-,-,-,-,-,.,,-.,-,-,-,--.-/-../././-/..,.,-,.--+-+-,-,.,-+,+,--+,*+*++,+,,../-.,-+-,-+,*,+,+,+-+,+,*,,,,-+,+,+,+-,.-.--,-,.----,---,.-.,.-.,-,--.-/--,-+,+,+-+-*,++*+*,,.,--,,.,-+,+-+.,-,,+,+,+-+-,-+,*+++*,*+*++,+,++*+)*)++--//10/,("""(),-//000-+**'*+,+,+-*+*+*+*+*,+-,-,.--,-+-+,+,+,*,*+*,+-+,,-,++,+,+,*,+,*,+,++,,*+*,*+*,+-+,*,,-++)+*,,.-.--++*+*,++***+*+)****+)+*+*,*,*,+-**,0..,,*+*+)**,(**,+-+,*,*+)**+)+(*)*(*)+*+)++-,,,-+-,-,-,.,.,.,-,-,,,-*,*-++*+++,,'*(+*,,//100,,*+*,+,*+*+*,,-+,+,+,--,.+-,.-.-.,-,.-.---.,-,-+-,,+-,,((%)(,-0//-.,.-.-./0/1..-.---.,-+,+,+-,.,-,-+-,-,-,.+-,,+-+-+,,,+,+-+,+++**,*,*+*+)*%****,+,+,+-+-,.-.-.-/-/./.-+,+--/./.0.0/000/0/112120101/1/0..-.,.-.,,,../-.,-+-+-+,+,,-,.,-+,+,+,+,+,+,+-*,+,+-,--.-.,-,-,.,.,-,,++*,+.-.,,+,+-,.,-+,,----.+,,-+,+,*,,-+-,-,--.,-,-,----.--,-+---,-+-+-,-,-,--.--,-,-,-,-,,,,,,+,+++,+,,-+)*-..--,---,,+,+,*,+,+,,-+,*,+,,-,--.-.--,-+-**+-,.,-+-+,+,+,+,++,,+,**)++.-/.0..+-*,*,+-,-,-,-+-,.,-+,,,,-,-,-+++-+-+,*,*+*++-,,++*,+,+,)**)'('()*++*-+-+*&)%'&('*&+(*)+*,*++,+,+,++)+*+*+*,+-+,+,-/0211--+,+-,-,-,.-/..-../././,-.11200/0/0./.0/100///0/1/0.0/0/0././///0/101-,+//301/0.///./-.----,-,--../-/./---../..,---,.-.,/,,-.,.-/.0/.-.,/./--,,+--/-/./..--,...--,-,.-.,-+-,-,-,-+-+..../-.+--.-.-/---.-,+,,-,,*,+-+-*,+,+-,.,.-//1./,-+-,,+.-.-.-/...0-.,,*-,.*,,.---.,-,,+,,---,.-.--,.+,)+,./-./,.-.-/./-..0.-,--//0//.0.0///0//.0//././/0/0/158331.+-,+-/+.-..1/0.3./*,-2/*')),,-+-)*+)()%**& # $#""%#'"#!%#!" $!"! !!$  "$(&%'',-43,$!&, %+*+**''&)(*+***,,+-+-,-)*'.//+-*+,-+,*+*++,+-+-,/-26640+ #*/02154/0122442100041/1433332326424425441404173/,..///1:=?19012445583757675668:814/4012568798<58575768687988778988885846595536465656565645443534232534353322121200/100//./././-.-.----,-,-+,+,*+)+)+*+*+*+***,*+)*)+)+)+(*)**))+(*&*&+)***),),*+++*+++*++*'*(+(*')%'%)(+)*)+,.--,-+,((%++,*+'*'*'*)((++,++()'*)+*+**)*)****+**(*)*&&&(&))*')'**,**'&$&'('(&*)+**''#%$&$&%(%&#$"%$('**+**('&&&(%'$&$&%(')&'#&#(&'$$"$%(')'*()'(')'(%'')'*%(&*')&)'*')(**+*+*+*+)+*+*+*++,++*+*,,-+,+,*+*,+++++,+,+,+++,*,+,+,,.-,)('++,,--/.1/0.0./.0-+*,,../.0/0/0/0/0/0/0/00201///0/1/0/0/2/1/0/1/0/00001//.0/00200/10211/0010201.101010100/0/0/0/0.0/0/0./.0/1020111020100/0/0/0/00101/0/101//..//.0/011.-+,-//22411/.----,-,,,/././-/./-.-.,-./.-,-,.-/-/--,--/.210..././....-.---.-.-.-///./..-....-..--,-,.-.,-*,,//1121200/0//....,-,-,-,.-/-/.0//-.-.-/./..-.-.-.-.-/.0./...//0./././.0/0//./-/..--,,+,+-+,+,*++,,-,-,-,----.-/,.,,+,*+*+(,*-,--.-.--,-,-+,+,+,++*++,*+*(*+,,,/+0*-****))&)'*$***++,40' "#(&#"$"#$(,'""#""% " ! !!!  % (!!!#!"$&'*$&"%$'')#&#&$(')"""$"$!$"$#%"#"# $ " # !"##$#$ $"$#&#"#"$##"%$'#$!# "  # %!#)&&!"!!!#"($#"$!# ! %!#""!$#&%'$)(**+)+**((&'$$"$"$!$!"# # #!&$'%'$'&'&($%#&$%!#!#!#!#!#!# #"&#&%'%%$%"$"%"%&'%'#$#%#$!# !  " ##%$)%)()()%)')'*(*)*((&('*'*((%'%'$(%'$&$&$&$$#&#%"$#$!#!%#&$%#'&)&)&(%(&)&'')'*(*(*%('('*&*)*(*'(&)&(&(%(&)&)&)%('(((%'%'%'%% %%&$#2-!(+-+-+,*,+-,-,-+-+,+,+-,,++*+)**++--0.0..,-+,*,+,*++,,-,.,-,-+,+,+,,-+,+,*-+,,,,,+-)-,-,-+,+-,-,,+,+,+-,,+,+,+,+,+,+,+-+,+,+-+-+,+,+,*,***+*,+-,-+,++*+*+)+*+*+*+*+*+*,++*+*,),+++**++,++*+*+*,+,+,+,*+*+*+*+*,++*++,+-*,+-*,+,*)%((*''&**,+,+-++)))*')'*('$*"$ $$&%('*)*&''*')$(&)&*&*%('*(*)+*,+---*+*,+---,--.-.-/-,*--.-/./.0.0.0.//0.0.001/10100//.0/1//////././././..-/./..-..0/0/0././.1/1/110/00101010101110202020212220323232312122434333346575645354654.1288867798879797:9;;<:9898:898::=@@;@:??DBDBEDDBCA@C?6<<>>AB@=<984310/0,.*(&$'))(&)),-.-/-/.42511.0/2/0,/,-,0,/0012,$!,,22552-,+,,-,-,-,.-.,.-.-.-/-.-----/-0-/..,.-/-/-/./.0./....././..///1/0./.0/101011201010202010101/0/101/0././.0/0/001/101011200//.0/20100020212011312020201.0.../.0/10102121321/0131100//,0.//0.//00100././-,),-12200//./.0.100/0/0//-/,/-/010101/1/0.0././-,,.//./-.-0/,00/0/0../.-.--,-,-+,*+*-,-,.-/.0.0//./-.-/-.-.-.-.-.-.--,-+,+-+,,-,,+-+----0/0/001/1010100./-/-/./.-**(+,/.100--,---,,+-.0./-.,../-/--,-./.../-../-.---.-.-/-.-.....-.-.-/-...,.-.-.-.-.--,.,-,-,++/.-,--.-.-.,.,---,)$*+0/.,,+-,-+-+,,-,-+-+-+,+-+-++)+,-..--,-,.--,-,-,.,---,--.-.-----.,.,.,-,--/./.../-.--,-,-,--.,-,.,.,-+,+-+,+,)-+-,.--,-,.-/./././.0./-.-.,.,.-.-.-/-.--,.-.././-.-.,--.-.-.,-+-+++,,-,.,/.1-.,-.0,,,.,-,---,-,---,.---/--,-,.-/-/-/-.-.-.-/-.-.,-+--.,--.,.,-,--.././..-.,-,-,--..///...0//./,-./..-,++()$&#%"##+)(')*-,/.0010101.,+-+,+,+-'&(.01.-*--/..-.-.-.//./././././.0/0.0.0..-.-.--,.-.,-,-,-,--.-/-/-.-.-//001/0-.-..0/0././-.-.././..+/-..-+..1/0..-.-.,/..-.-..0/0.--/-.,.-.-/-///././..-/-//0-//0./-.,.,.-/./--**(-.100..,.-.-.-.-...--,-++*+*,-/.0/0/0/.,++.-...,.-.,.,,+,+-,-,--.-/..--+-,-,-+-+,,,,-+-+-,.,/-.---.,...-.+-..,-,,+,,-,.+-+-+--.-.-/,.-.,.,-----,--/-.,-,-+,*+'*(**,+--//101//..,.,,*,+-,.-/-.-.,.,-,///..---.,-,,*-./-.,-+,)++.-.,,+-,-,,,-+,,-+-+-,--/-.-.,-,-+.-.-..-,-,.,.,-,-,.,-,-,.+.,.,.,.,-----,-,.,-,-,.-/-/..-/-/-...,-,-,.--*,+-+-,.,.,-,--,+,,,*,+,+,,-,--/,-+,+,+,+,+,+-+-+,+,+,,,+,+,+-*,*-,.-.--,.,.----,--.--,-,.,-+,+--.-/-.--+-+-+-,,+,++*+*,,.,.--,,+,+,+-,-+-,,+,+,,-,-+,+,*+*+*,++*,+-+,*+*+)+*+*,-//0//,)"$")*,.//001-+)*)++,+,+,*+*+*+*+*++-,.-.,-,-,-,,+-+,+,++*+*,+,+,+,,-,,+-+-+,++*++,+,*+*+*+)+,-,-,,++'(')*,,/.0./+,++*+*+*+*+*+)+)+(+(**+*,*,*,+-,+,/-.,,*+*+*+*+'**,+-,,+,**(*****(*()'))+*,*,+,+++,,-,-+,,.,.,.-.--,-,,++)-+,***,--))&))+,//00/,,),*,+,*,*+*,+-+,*,+++,,-,.,--.--,-,.,.,--.--,-+,+-+,+,))'**-,/..-.,.-/-./103/,---.,-,,++*,+--/-.,-+,,-+,,-+-,,+,+,+,,-+,+-+,,,)$)-,-++*+)+)+(**+*,+,+-+-,.-.-.....-.-,+-,.-....////000/0/102111100/0.0..,.,.-/---.-.-.,-+-+-+,+,,-,-,,+,+,+,+-+,+,*,*,*,+-+.-.-.--,-,.,.,-,-++(++/..,-+-,-,.,.+-+-,.,-+,+-+,+,+,,-+-+-,-,-,-,,+-,.-.-.,-,-,-,,+,+-,---,-,.--,,,-,-,-,-+,+,+,,,*++,,,**',..,-,-,-,-+,+,*,+-+-,-+,*,*,,-+-,.-.--,-+,**+-,.,-,-+,+,*,*,*++,+,*,*,+--//0..,-*,*,+-+,+-,-+.,-,,+,+,+.+,--,,*,+,*,*,*+*,*,++**),+,*+')**(($((+*+*-++*)&'%(&&')$+*+*+*,*,*,+,*,*+(*)*)+),+,*+),-00221..,,+-,-+-,.-..--../0/..*,-11301/0./-/.0/000.0/0/0/1/0/0././././0001/1-,+./200././-/..-.--,.,.,--.././-.---.-/..-.,-,.-.,.,-,.,--../....-.-/-.+-,.-.-.-...,-,.--,-,-,-,.,-,-+-,-,-,,+../+.-/-.,-,--/,-,-,-+-,-+-+-+,+,+,+-,,,-,.-//1-/-.*-,.+-,--.././.0+-+-.,-/(**,-..0+-*++--...+.----,.++**+..,./,.,.-../..-/,.+-,/././././///0./.0//././/0/0.16:562/**++-/+.,..0..-0..(,07-*$+(,*++-*++*()&*%#""!%#"$$$()# &&!  ! " #"# "  !!&'#%-/-+--%&.*, $"*)*)*'((*'+****+,+-,-,,)+*--.,,*++-,,*+*,+,+,+,,.-3561-'$#+-1133693121446220115/10432232204356543551332243.-.-//12:;907/2355445577867566:854646122669<:7926566777687978787878889:786:8867575656565644243434332435453323010100/200.-.../..-.-.-.--*.,-+++,)+)+(*)*)+***))+*+)+)+**)*)*()(*(*'()))**+)*(+)+*+*+*+*,*,++(*(*(*%($%&''+((*+,.-.--+,(&$*,,**'*'*)+#&$+,.*+()(*)+*+**&+)**+**)*'*))!(''(+*+()'**+**&'%(&*')&()+)*%%"$$'&(%'%$!$"%%('*)+(*'(''%'$'$%#&$('*%&#'$)&'## #$(%('*(*')'+*&&(&(%'(((*(*&(')&)(**+*+*+)+*+**(+*++,+,*++,+-+,*+*++,+++++,+,+,++*+*,+,*,,.,,'('**++-,//100//..,/..,--/.//0/0///////0///001/0//.0/100/0/0/0/001/1/0/101//.//001/0011211/001010101010201/0/0/0/////0/0.0/0./.012020201010100/0/0/001/1/1/0/0/0./...//1120/,.-0021200..-.------,0-/./.....--.-...-.+-,.-.,.-,*,,/.221-.-/./-/-.-.,..0*-+.-/./....-.-.,/-.+-,-,.-.,-+,,./2011401/0//..--,-+,+,,-./...0./-.,.-/./--,.-.-.,.-/.//0..-..//0//..,//0//-.+///--,,+,*,*,*,*+++,-,-,-+-,.,.-0,.,,+.,)('(-*--.....,-,,,-,,*,+,*+)+**(+(++--,+/*+,.(*++*'((()(()(**+/.(%#! "+'!"##%%" #" %"" "!$  #! #(  "!%#'&)'$$%#(%'$%$&$**+# !$!#!#"%#&!!(!% !#!"""$#" ##&%*#!""%!"!$#&"# ""  !!%"#%$# "!!! " ! #"$!#!$ #"!$"&&(&)(+)+)*)*'(%&$$!#!# #!"# # !$"%#&$&%'%(&'#%#%#%!$!"!#!#!#!" #"%#&"%%$#$"""%"&&(%'#$#%$%!#!   """%$&%'&)&(%'%(')(*(*'(&*'*()&'$&$'#'%&%($'%'$&#%#%!$"$ #"#"%$%#%%)&*()&(&(')&)&)&(&)&(&(')&))*))'(&'$*&'&)&*&)%'%(&(''$%$&$&%&"%#&$$2,")+-+-+,+,+-+-,-+,,,+,+,+-++)*)*)++--0/0..,,+,*,+,*+*-,-,-,,+,+,+,+,+-+-+,),+,,++,+,*-+-,,*,+-+-,,*,*,+-,-+,+,+++,*+,-+,+,*++,+,,,++*,*,+*)**,*,+,*+*+*+*+)**+++*+***+*+)+)+*+(,*+,++,+,++*+*+*,+,++*,*+*+)+*+*,++*,+,+,*++,+,+,'$!&(+*)&**,+,+,++(*'*')(*((%'! $$)&(%)'*'('($'%(&'&('(%'&('*)+*++-,,)*),,.--,-,.--,.-)(+,0,/-/.//0/0.000/0/0/1/0/000//-/.0/0./-/-/-/-/..-/-.-.-.-.-/.0/0././.0/0/100/1/0/100.1/102.202121112131312123322132333/24455454545454650+.18:;878;8:69797;9=;<9;99798:989=;><<98652423/.,&$++,($" #$-(/-211058>>A:611*44<7:7;;643246;7<<>:>=A=B?CBDDFECDDEDAD=A>@?@=>;:7631/.+.*)&$'*(*((*,,-)0.00225111201./-/0*,.-//102,%$,*21430,+*-,-,,,-,--/..-.+-,/..-.,.-///-.-.,.-/./--./.../,.-../...../.1.1...0/10011120100.21201/0.000/0/1/0.0-/.0/0/0.//0/0021111//-//11101110202011211010211/0./-/.0/1010212122301020100/0.0./00//.0/100/0/0..+--101/0//./.0/101.0/10-+,+//112110102/0/0./-/./..-.-.,.-/..000////0//-.--,-,-+,*+*-,-,.-..//////.-.-.-/-.-.-.-.-.--,,++*,+,+,+,+-,--.-0/0/1/1/1010101/0./.0./,+&%$*+//211.-,-,-,++--/-/--,.././-.+,././-.-.-.--..-...-.-/-../-.-.-/..-.-.,.-/-.--,-,.,.,,,---,/-.---.-.--,-,.,-,*%*+0..,-+,,-+-,,,,,-+,+,+,+,*+++*,,/-.,,--,.,.,-+,*-,-,-,-,,,-,-,---)-..-.,.-...-...-/-.,-,-,---,.-.,-,,+,+,+,++(-+-+-+-,-,.-/./././././-.,-,-,.-.-.,/-.---.-/./-.-.-/,-,--.,.,-+,+,*,+-+-,..0-/-./1+,+,+,+,,-,,+,,----.-/--,.-.,.-../-.-...-/-.,.,/+-,-,.,-*.,-,.,.,/-/./-.,-,--...-/./...0////-.-.,--,++(($%#%!#"(&)(**-,.//0100/0.++-++*+*,**+../-.,--.--,-,.-...-/-/././.0/0/0.0./..-.-.--,.,.,-+-,-,.,-,0./..---..0/0//..-../.0./-.-.-/././-.-.-..-+-.1./..-.---...-.-.././..,.,.,.-/-0./.0././-.,.-0/1-..0././-.,,-.-/.-***,.0/0-.,-,.-...-.-.-.,-+,*+*,-/.0/0/0/.++*-....,-,.,-,-+,+-,.,.,--..---,-,,+,,,+-+-+,+-,-,--...-----.-.--,.,-,-,-+-,,,-,-,-,.,--..../,-,.,--.-.,-,--.-.,-+,*+**'))++--/.101//-.-.+'(+,-+.-/-.--,-,-+/..-..---,-,-+.-/--,-+*'**...+++,+,+,+,+-,.,-,-,--/-/-.,-+-+-,.,-,.,-,.--,-,-,-,-,-,-+,,.-.,-+.--,,*--/-.,-,.,.-/-.-.-/-/-.--,-,//.'(%+*-+.+.-.--,,+,,-+-,-+,,-,---*,+-,,+,*++,*-+-+++,,,,-+,+,+,*,+,,.,.--,-,-,-,-,--.-,+-+-+-+-+-,.-/-.,-+,+-,-+,*,*+*+*,,.-.--,,+,+,+-,-+,,-+,+,+,,-+,***,+,+,++*,*,+,*+*+*+***,,..0/0-+$%#)),-//0..++)****,+-,-***+*+*+*++,+---,-,-,-+,+,+,*+++*+)+*,+,+--.+-+-+,,-+,*,*,+,*+*,*+*+,.--,+)(#$$((+,./0/1..,,*+*,*+*+)*)+)*)*'**,*++,+,+,+-,---*+*,++**)*(*)++,+-+,*+)*)***)*(*'*)+*+*,*,*++,+-,-+,,----.-.--,,,-,,*-+-+**---**&)),,//1/.++*+*+++*+*+*,+,+,+-+,+,,--.-.-.--,.,-,-,--.,-,,+,+,+,+,+++,*-,-,-+-,.-/./.0/2..-.-/,-++*+)++--...,-+,,,,-,-+---+,+,+-+-+,+-+,,,'$'.,-++)****+)+*+*,+,+-+-,.,.-.././-.-,,.-.-/-/././.0/0/0/1010101/0/0//..-.-.,/-.-.--,-,-,-,-,-+,,-,-,-+,+,*,+,*,+,*+)+*,+-,--.-.-.,-,-,-,-,-,+*++.-.-,+-,-,.--,-,-,-,-,-+-+,*,+,+,,-,-+-+-,-,-+.,--.--,-,-,,+,+,+-+,-/,-,-,-,-,.,-,.,-+,+,+-,,*,+,+-+,),,-+,,/-.--+,+,*,+,+,,-*,*,*,+,+.-/./..,-,-+,+,,,,-+-,,+,*,*,*,+,+-,,+,*-.///,--.+,+++-*,+-+.,-,-,-+,+-,.,-,,+,+,+,+,*,*,+,*,+,*+*,+,**(**)&&#((**++,+,*)&(%(&)'*)+*+)+*+*+*,*,*+)*&*(*)+*,,-)*(,-003220/,-+---,-,.-.-.-/.0.///-,-/0311/0././.100/0/0.0/0/0/0///0,/.///000102//-//1/0./....-/..-.-.-.--,..//0-.-.-.-...-.,.,.,/-.,-,-,--.-/././-.-.--,.,-,.-.-.-.--,.,-,--.,--.--,-,-,-,--,+.-,),-100,-+--/-.,-,,+-,-,-,.*,*,,-,-,-+-,.-//0.0--*+,.--+-,-././..,/*--,,.*+*,-/00+,*,+-+-,.,.---.,-+,++,.-...,--.-../..-0+/+-,../.0/....//0././/0.0.0.0/0/13:7741+'(++-+-+..0./-/--*--.,.+0*,*,+,+,*+*)'(%%"%"&""%$#*,'!"!#%"!! #"%! ! $ & '# *.+$*0%+-$##!(#+),++(((*'*(****,+-,-+,+,+,+-,-+++-,/**(++-*,*,+-,//1,-+--00124356436243422123301153424210386663351/1/0/12..-./051532153545564557797846688:5236234567;;8744455778687978799858788:787:897866676656564434432444343545332202120001//././..-..///-.,,,.,-++*+)+**'+)+*+*+)*)+*+)+(+*+*+)*(*(*(*'()**+*+*+)+*+*+*+*++++,**(*(*)*'($&%&$*&**,-.-.-.,,))&**,)*()(***###*-.+*)('**+*+)*&*)**+**(*(*)*#('()+****())***')&)&)')'))*')%&"$#'%(!&&#"$$%&'&*(*(*()'(''%($%#%%(&(%%#'$(%&"# %$(&)')&)(*(*)((+)%%''((()*')')')(+*+*+)+*+*****++-,-,,+,+,+-*,)+*,+-+-*++,*,*+++++*,*,+,,-,,**)+*+*,+/0100./-/,/--+-,..//0/0/00//0/////100//./...101/0./.0/10101/0/001/0.//0/1/1021211/101010102120100/0/0.0././.0.0/000..-012110100020100/0/0.0/10101/101//./-..0.1120/./-10100//--,.....-.-/-/-/-../-.-..../,.-.-.-/-.,+),-00321/--...././..,./1),+--/.0./..-.,-,---+-+.-/-.-.,--//1./053200./..-.++,-,,,.-..//0..,/-/.0./,-,-..-...-..000//---//0//.--..0//.-*../--,,+,+,+,),+,+-,-,-,-+-,..-./-.--,0/*&&&++100-.//,,+,+-,,+,,,+***(+(+)+,--/*,)*+-+**+*(((')')*****-..-( '( %%"!$! !#!!!" "  !! "")$)%**'"%#&$'$%$'%+-+"!$"$!$#&#& *"&!""!!!!&!"!$$&#%!""&#$!" !&#'"$!"!!  #"""'"" $"  " !#!#!"! !!$!!""!%"&&)(*)+)+(*()&)%&%&!#!$ " " " !!%#%#%$'&'&(&&$%#%$%"$!# # #!#!#!#"%$%#%"#"$"$"%#''*'(%%#%#$!"! !! #!#"%"%#&%'&'$'%(&('*(*()'*)**)')$'#&"'$'%(')&(%'$%"$!#!#!#"$#%$%#%%(&*'*')'*()()&'&'$(&)&'')&**)(('*&'%*&(&*'*')&'&*')&'$'%'$%%&#&#'$$2,"(+-+-+,+,+,+-+.,-+,+,+-+-+,+*'*(++-.0./--,,+,*,+,+,+-,-,-,,*,+,,-+-+-+-,,),+,++*,+,)-+-,,+,--,-+-+,+,+-,-+,*,*,+,*,+-+-+,++*,+,+,+,+,+,+*++*,+,*,*,*+*+*+*+*+*+*+*+*+*+)+)+*+)+*++,+,*+*,*+*,*,+,*+*,++*+)+*+*+*+*+*,+,+++++,*+%$ %),+*)**,+-,-++(*'($*(*((&%"#%*))'*'*&(%'#&&'&(%'&(%'%(%))+*++--,''&,-/.+*.-.---.-)),-/,.,////0/0/001/0/0/0/0/1/1./.0/0/0.0./-/-/-/..-.-.-.-.-.,..0/0././.0/0/10101/0/0/0.1/102/313122222231203232413122424/36666464545475750+/28:;8979886:778<9=;<;;:9787:8;9;;<;;88541200--*$! ,)($!&',+1.34/137>=<5791,10<6:98933305499<;;8<:>=@?ABCDGHGFFCECFBDAA@@>>;<9:6300+-**))&)'*(**.,-+/.00104/21100//-.--./.0/1/1/+$$&+,0021/++*,,.,,,,+.-0./..*.,.....-../.0--,.,.-/./......,...././//./--/1/1.-.00211110101/1/012010/.11110/0//-0./.0./,..100/0001111//-0/1121100020201121212120100./-/.0/10101121122021200/0///0/0/0///0/0/0/0/0//-/.0//././-/./.1/0/101.-)**..123121101/000//..-.--,-,-,-,.-0/101/1/0.0-/-.,-,.+,++*-,-+-./././////-.-.-/..,/-.-.-.,-,,*,*+*++,+,*,,--.-/.0/0/1/101010101/0.0/.+)##")+//221..,-,-,-,--/./-.,.-/./--*--0./-.,.-.--..-/./-/-/-.-/..-.-.-.-.--,--/....----,.,--,-.,.,.-.-.-.-.,-,-,-+,*+,.,.,-+,+-+,+-+-,-+,+-+,,-*++-+-,.,-,,--,.-.,-+,+-,-,-,-,-,---,-,-*.-.,.,-,/./..-.-.--,-,-,---,---,-+,+,+,+,+,+,+-+-,-,.,/-/./././/.//-.,.,-,.-.-.-.-.-.-.-/..,----.-.+.-/,.,-+,+,+-+-,-,--/-/,../,.+-+,+-+-,-+,,-,-,.-.-.-.---.-.-/-.,.-0,/-.,-,-+-,-+-,-+-,.--,.,/-0./..,-,--.-.-../-/.000./..-/-.--+,))&&#%!#!'$('**,-//0/1/0/0..,-++(+),+,+--.-/-.,-,-,.-.,.-.-/-/-/-/.//0/0././-.-.-.-.-.---.,.-.-.,.,/./-/-../././//..-..//0./..-/-/.///,..///..,--0.0..-...-/-.-.-.-.-/.0..--,.-/././/0././-.-/.0/0..-.-//0./---.-.--,,+,-/..,-,-,--...-.-.-.,-++*+),,..////0/.,,)--/..,.-.----+---,.,.,-,.-.-.,-,,,-,,+,+,+,+,+--.-.-.-.-.--,-,--.,-,-,.,-,-,,,,,.,-,--../..,.-.-----.,-+.-.--,,,-+,*+*()++--/.0/0/.----+++,,-,--/..,-,-,.,/-.-.,.-.,-,-,.,.--,-,+(*+/..+,,,+,+,+-,-,.--,-,--.-.-.,-,.,-,.,-,/,.-.-.--,-,-,---,-+,,.-,-.,/-,***,.0..,----.-/-.,.././-.,-,-,///'&$**-,-*--.,-+,,,+-,.-.,-+-,-,,)+*.-,+,*++,+,+,+,+,+-,-+,+,*,+-+++--.--,-,-,-,-,--.--,.,-+-+,+-,../..,,+,+-,-,,+,++)+*,,.-.,-,-+,,,+-,-+-+-+,+,+,,,++*(*,+-+,+,*+*,+,*+*+*+*,*-,.././--))&**-./..,+(+)+***,+-,,++*+)+*+*++-,---,-,-,-+,*+*,*+++)*(**,+-,.-.+-+-+-,--,)+*+*+*+*,*,+--.--*(#%#%$)(+,./1130/,,)+*+*+)+)*)*)*()'**,*+*,+,,,+-,-,,++*,+,**(*'*)++,+,+,*+)+(+)*(*(*)*)**,*,*,*,+,+-+,+,+-,.-.-.--+-,-,,*,+,,,+---**(*(+,../--++*+*,+,*++,*++,+,+-+,+,*,-.-.-.--,-,.--,.-.--,,*,+,*-+,*,,-+-+,*-,-,--../.0/0././..,-++())++../..,-,-,-+-,,+,,-,,+,+-,,+,+-+,+,))*-+,++)***)+*+)**,*+*,+-,-,--...-.-.--,.-/-/-.-.-/.//0/001/100/0/0//./....-.,.-.-.--,--.--,-,-+,+-+-,-+,*,+,+,+,+,*+)+)++,+----...,-,-+,,.,-+++-,-*-,,+,,,+.,-,,,-+-,-+,+,+,+,*,,-+-,-+-+-+-,-+--.-.--,-,-+-+,*,+-*,-/--,-,-,-,.,.,-,-++*,,--,+,+,+,+,*+*++--/,.-.,-+-*,*-+,*++++,++*,+--./0./,-,-+,+,+,+,+-+-+,*,*+*+*,+-,-,,+--../,-,-+,+,+,*,+,+-,-,-,,+,+,+-,-+-+,*++,+,+,)+*+)+*+)+++++**)+**%&#''**,+,,-,&%&$(&''))+*+)+)+*+*+*+*+(($)&***+,,,(*(+-0132300,-,--.+-,-,.,-.0/0.///././0200.0./-/.0/1/0/0/0.//1/0./-/././.0/00201/0//////./././././,.-.-.---.-../..-.-.--..,-*.,--.-.--,,,--/-/-.-/-/-.-.--,-,.,.-.-.,-,.,-,-,.--,.,---,.,-,..,*-+)&*,01/,,+--.-.,-+,+,,-,-,,*+*,,-+-,,+-,--.-//0..+)+...-.-...//+*++++---.,,+-,.-.,.+-+-,-,-,--.-.--+,,,,--...,.-/-../.-,.,.,.,...-/...../././-//0/1/0./.0//047854,&%**,,-,../././,-,-+,+-,-+,)+*+*,)+*+&(%'#&$($###!"!"!#$#"! # !$   " $!)"").'$&+%(+*'%$##+*-,,()'***(*(+*,+-,,+,+,,-+-,/,*+,+.)**+*,*+*++,,----.-0/0/01332243522143322444-12331421/25669262./.-//131/0/-.2/212123567574656699744478>41472546568975664648796879888:;:666768775979895787765656454445443424244433121212/1/0//-/..-.-///0/,-,---,,++**)+**(+*+*+*+(**+)+)+&+)+)+(*(*((&*&*'*)+*+**)**+)+*+*+++)+)*(*(*(*')%'$&$(&+*,,-,.-.,,+)(*'*'*(*(+**%%$*+.+*'''**,*+))&*(*(+)+)*(*)*&(%')+**'(&))+*+')')&(%(&)((&)&'$&$&$%!&&&%$#$%(&)'*)*(*&'&&$(%&$&%(&(%&$&%'%%#%!&%(%)&'&((*'*))'*$&''')&'(*()(*(*)+*+)+)+)*)+)))++-,-,,+,+-,-++)*+,*-+-+,*+*+*++++,*,+,+,,-+-++)*)*)-,//0/0./-.-.,,+--/.//0/0///0.0../0/0/0////.//11101././/11200/0/000//./.0/0/0021200/102021101110101//.0././-//0/01100/0.101020101020100///0/0010100/0/1/0..--.//1120100.0/0./..,-,../..-.-.+/-0./-/-.-...-.-...-.-...,,*,-11311//-.-.././..-/-.,-,.-/./.../-.,-,-,-+-,.-/,--/---./0--0322/0./..,.++-,+-,.-.././.,+....///-.,,.--./.-..0////---/.0/0.../././-.+.----+,++*,*+*-,,,-+-,,+-,--/..-.-.-++,+*%'&++052/-./+++,,-,,+,+,***)**(,)++,,,*+)**++*')***)')'*)++,*.5:5+!$!)#,/&   ! #! !!& ""  # #"(%(&)'($&#%$&$%$&%+/*!#!%!%"%#%  ' &!!  ! !&"%"$"$ ""$"%$'$ "!%!%"$  !"!"""$##"!!!!"!"!! "!#!!""!%"&')(*)***'*')&'%&$%!"!#!" "!!" #!##%$'&(''&&#$"%#%"%!$ # " ""!%#&#$"# " #!%#%#'()&'%&"$"$"!"" # "!#!$#$ #!##&$&#%$'&(&)(*)*(*)*()&($&#$!&$'%(')%(%'#$"%!# " "!$"%%&$&$'%)&*)*(*(*'(&'&($($'%&&)')((((&)&)%'%(&)&)&(%(%*&(&&$&%'$&##$%$'%$1,"(+,+-,-+-+,+-,-+,+,+-+,+++-++'))++--/-/,-,,+,*++,*,+-,-,,+,*,+,+,+,+-,-,.+-*+*+*,*,(,+-,-+-,-,-,,+,+-+-+,*,+,*,+,+,+,+,,,+,*,*,+,+,+-+,+**+*,*,*+*+*,*+*+*+*+*,*+*+*+)*)+)+)+*,**+,+,++*,*+*,*,+,*+*+,+++*+*****+*,*,+,+,+,+,++&$ %),++**)++,,-++(*'(#*))&&'*#!!$*))&(&'%'$&$'&'%(%'$&%)$)&*'****--+""!*-00-*.,.,--..-,...,,,..0/0/0/10101/1/0.0/0/1//.0.//0//./,.-/-/-/,--.-.-.-.-/././-.-/-/.0/1010100//-/.100/1.20213121202/222333312003435466755454545473651/23889686979899:9;:><=;::9687:8;:;;;99864411,-)'%" #**&$)&,*.//00/377103791.11<88<7852446897:8:577<:=<=>ACHHJIHEHEFDDBBCB?=:;:>=4//*++,,((&(+(++-,--/-//214.100/01--.-/-0////.020+*),,.//-,++)++--,,-+.-0./..+-,....-,--..0,-+--/-0./-.....+./....//0-..-/1//...0021212010100.//20200.1/100/0./-.-/.0.,*-.22100010101./.0.1121200/10202121101020000/0./.0/10101121222120201/0.////0/0.//0///0/101///0.001,-,--../.0/0/101-,*++./1231401.0////./...-+++,+,+,,--0/11101/0./-.-.,-,.,-+,*,,-,.././.0/0./-.-/./..-.-.-.-.,,,,*+*+*+,,*+)+,.-.,..//001010201011100/0/.*%!##*+0/123.-+.,-,-,--.-.-.-.-/./-,*--//.-.-.-.-.-.,/-/././--,.//..-.-.-.-.,.-/./-.--,-,-+-,,,.,.,--..-+/./.-,-+-+,+,,-,,-,+,,-,-+-+-,-+,+,*,+,*+,-,-,,+-,.,-,.,-,-,,+-+,,-,-,-+-,-+,-.,.-.+.+-,0./..-.-.,-,----,,-+-,.,,+,+,+,+,+,+,+,+-+-,--/-/-/././--0.-.,.,-+-,--...-------/./-.--,--.,/./--,.+,+,+,+-,,,-,..-*,.//.+-*-,,,,,,+,,,,-,.-.-/,.-.-/././,.-../,/.---++*-----,-+-,//.*-+.././..--,/-.-/-..0.0/0/0-/-.-.----,+()'(%%"#"%$)'**-,//1/0./../-+,*+)+()*-+.-../..,-,-,...-.././..,.-/.//0/0./.0./..-.-.--,.,.-.-.-.-.-.-/-/./././..-0-/-.-/./././--./././-.-/....--,.././-...-.-.,./.,-+..0./,-,--0././.0./..---.././..,.-/010/.--...-.-.,.-.,.,.-.,.,--.-.-.,.,.++)*)+,..//0/1/-*-+--.-.+.-.--,-+---,-,-+,+.-.--,,,-,-,,+,*,*,,,+,---...,/-.,-,,+--.--,-,.-,,,+-+-,-+-,--/./..+.-.-,+-,.-.,.-.--+--.,-*+)+*++--..///..,-+,+,+-,-,--/..--,-,.,.---.---.-.,.,/+---,.,-**+.--+++,+,+,+-,-,.,.,-,-----,-,-,.,.,-,-,.,--.,.,-,-,---,-,-,-,.,--../-,(**-.1//,-,...,.-.,../-.-.,-,-,-,,*+)++-,-,.-.--+-+,+-,/./,-+-,-++(**---+,*++,+,+,+,+++-,,++*+*,+,+++--/-/,-,-,-,-,.-.-.--,-,-*,+,,../-.,,*,,-,,+-+,++)+*,-.,-+,+,+-,,,-,,+,+,+,+,+,+,++***,+,+,+,+++,+,+,***++++,+--/./--+**++--.+,**),,*)))++.,-++*,*+*+*++-+,,-+-,-,-+,*+*,*+**)*)*)++-,.--+-+-+,,.--+,++*+)+++*,+--.+)#" %%&)+*,,./11200,,)+*+)+*+**(+(*(*(+*,*+*,+-+,+-,-,-++*,+,**'('))+++,,++*+)+**)*)*(***(*(+*+*++++,+-+,*,+,,.-...+,,-,-,,*,+,,,+-,-+,*+*,,.--,,*+*,+,+,*+++*++,+,+,+,+,+,-.-.-.,,+-,--.,.-.--,,+++,*,+,+,,,*,+,*-+-,--....0/0././-.--,+)*(*+../-.,-+,,-+-,-+,,-+,+,+-,-+,+-,-+,*++,*+)*(***)+*+)**,+,*,*,-.,.,---,.-.-.-.-/-.-.-.-/-////1/0.0.//0/1/1.0./..-.,.-.-.--,.-/-.,.,-+-,-+.,-+,+,+-+,*+++*+)+)**,,--.-/./--,-+,,.-.*,,.+.+,,,+,,-,.,-+-+-,-,-+,+-+++,+-+-*-,-+-+,+,+,+----...,-+,+,,-+,+-+--.--,-+-,-,.-.,.,,*+*,,.,,+,+-+,++)*(++-,.-.-.--++*++-+-*+++*+*++,,-,//1//--,-+++,+,+-+,+,++*,*+*+*,,-,-,-,--.-/-.,,+,*+*+*,+-,-,-,-,-+,+-,-,-+-+,*,+,+,++*,++*+**)+*,++**)*)($&%('+*,+,+,+''&$'&''**+)**+*+*+*+++*+'*%(%*),+,+,*+*,-002220/,-+-/3*-+,+,*-.1/0/0/0.//001/0.0.0..-//100/1/0-/.1.0..-/././.0/0010100././/0/0..,//0/0,.,.-.-.,.,/-/./././-../-.,-,.-/./,-,-,--/./-.-.-.-.,.-.,---,.---.,-,-,-,.-.-.,-,-,-,-,-+-,,+--*)+,0/.,,,--.,.--+-+-,-,-,+*++-,-,-,-,-,-,-.../--+,,...-.-//0/-))*(,./101/**++--.+-,-+-,-,-..,--/0,*,*-+.,.-.,.,.-.-/..,+,.,/-.-.-.-.-.././..-../.1/1/0.000.016482,&*(,,.,.-../.0-.,1-***,--,*+*+*++***&(%%%$%*%!#""!"%&( " !!!" *$  ! "$$#!#'-*&"&('+(+($ #$*+.-.')%)**(*)**++,+,,-+,,.,,,-+,+,+,*+*,*+*+*+),+,--...1232..012252522143324347/22121333/123474521/0-00101111000121312359:5846766987453668454:63/3479:6667575878787:7:788776665767677987578856575644343344453434454413120101/0./-/..-.../0./,,,-+-,.++***+**(*(+*+*****+)*(*)+)+)+)*)*'(&*'*'*(+*+*+)+*+)+*+++*,*+**(*(*(*')$'$&$('+++,-,-..+,+*)*(*(*)*)*)+('&'*,**&(&+*,*+(''*(*(+*+**(*(*%)&*(*')$('*+,(*'*()%&$&'(%%#'()%($'$&"'$*)#$%$'%''*'*((%%%'&(%'%(&*&(%'#&%($%$&#'%'%'%'$'')(*()&($'')()&)'+)(()(**+)*'+)+)+)+()(++-,-,-,-,-,-++**,+),+-,-++)+*+*+*,+,+,+,+,+-,,*+***,,/.0/0..-.-.,-+-,../.0/0/0////./.0/0/0//.////000//./.0/21200/0/101/0//.0/0/1021200/202010101020101/0/0/0..-/.0000101/0/100/10101020100/0/0/0/10101.0/100//-..//0010201/0//./-.-.+.....-.,-,..0./..-.-.-.------,.-../--,-.0.0.0/10/..-/././-/-----.-/./....--,-,-,-+-,../,++/---..0.//000/0./-.--,-,,,-,.-../-/./,/.--/././--,--...-.-0.///-.-/.0//./..-/./--,-,,--,,++*+*,+-,-,-,-+,,-,..0-.-.---+,+*'(()-+/33/.-.0.+,+,,-+,+,*+***+),*,++*+**)+)+)+'**.-+%(%))++-+08=:,# (+191' ! !$"!#'" !#!&$'%'&*&&#&$&$%#%#&%*,& "%"$"$"%$$"$"%$ ! ""%#%#$#"%#%#-+!!$"%#$ ! !"!#!# #"#!!! ! " "!"  !""$!" # #!#%'())*)*))''&(&($'#$ #"#!" "! " #"%#&%(''&&$%"$"%#%"%"#!"!" " !!$#%!#!$ ! " $#&#)()&&$%""!%#"###!$!$ #"$ # $#%!&#%#'%(&)'*)*(*)*)*''$&#$"(%(&('(&($&%'#%!# # #!$"%%%$'$(%(&)(*)+(*&)&(&(%'$&$'%'')$$(*&)%(%&%(&)&)&(%(&*&('(%(%'$&"'$&%&%$ \ No newline at end of file diff --git a/isis/tests/data/lronac/nacr.img b/isis/tests/data/lronac/nacr.img new file mode 100644 index 0000000000..aeba74294a --- /dev/null +++ b/isis/tests/data/lronac/nacr.img @@ -0,0 +1,154 @@ +PDS_VERSION_ID = PDS3 +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 5064 +FILE_RECORDS = 52225 +LABEL_RECORDS = 1 +^IMAGE = 2696 +DATA_SET_ID = LRO-L-LROC-2-EDR-V1.0 +ORIGINAL_PRODUCT_ID = nacr00015d79 +PRODUCT_ID = M114145549RE +MISSION_NAME = "LUNAR RECONNAISSANCE ORBITER" +MISSION_PHASE_NAME = "NOMINAL MISSION" +INSTRUMENT_HOST_NAME = "LUNAR RECONNAISSANCE ORBITER" +INSTRUMENT_HOST_ID = LRO +INSTRUMENT_NAME = "LUNAR RECONNAISSANCE ORBITER CAMERA" +INSTRUMENT_ID = LROC +LRO:PREROLL_TIME = 2009-11-29T14:51:21.623000 +START_TIME = 2009-11-29T14:51:21.968000 +STOP_TIME = 2009-11-29T14:51:39.599000 +LRO:SPACECRAFT_CLOCK_PREROLL_COUNT = 1/281199081:26214 +SPACECRAFT_CLOCK_START_COUNT = 1/281199081:48869 +SPACECRAFT_CLOCK_STOP_COUNT = 1/281199099:24674 +ORBIT_NUMBER = 1955 +PRODUCER_ID = LRO_LROC_TEAM +PRODUCT_CREATION_TIME = 2010-06-30T21:17:26 +PRODUCER_INSTITUTION_NAME = "ARIZONA STATE UNIVERSITY" +PRODUCT_TYPE = EDR +PRODUCT_VERSION_ID = v1.3 +UPLOAD_ID = SC_2009333_0000_A_V02.txt +TARGET_NAME = MOON +RATIONALE_DESC = "TARGET OF OPPORTUNITY" +FRAME_ID = RIGHT +DATA_QUALITY_ID = "0" +DATA_QUALITY_DESC = "The DATA_QUALITY_ID is set to an 8-bit value that encodes the following data quality information for the observation. For each bit a value of 0 means FALSE and a value of 1 means TRUE. More information about the data quality ID can be found in the LROC EDR/CDR SIS, section 3.3 'Label and Header Descriptions'. Bit 1: Temperature of focal plane array is out of bounds. Bit 2: Threshold for saturated pixels is reached. Bit 3: Threshold for under-saturated pixels is reached. Bit 4: Observation is missing telemetry packets. Bit 5: SPICE information is bad or missing. Bit 6: Observation or housekeeping information is bad or missing. Bit 7: Spare. Bit 8: Spare." +LRO:TEMPERATURE_SCS = 3.88 +LRO:TEMPERATURE_FPA = 17.67 +LRO:TEMPERATURE_FPGA = -11.38 +LRO:TEMPERATURE_TELESCOPE = 11.14 +LRO:TEMPERATURE_SCS_RAW = 2770 +LRO:TEMPERATURE_FPA_RAW = 2118 +LRO:TEMPERATURE_FPGA_RAW = 3388 +LRO:TEMPERATURE_TELESCOPE_RAW = 2429 +CROSSTRACK_SUMMING = 1 +BANDWIDTH = 300 +CENTER_FILTER_WAVELENGTH = 600 +LINE_EXPOSURE_DURATION = 0.3376 +LRO:LINE_EXPOSURE_CODE = 0 +LRO:DAC_RESET_LEVEL = 188 +LRO:CHANNEL_A_OFFSET = 52 +LRO:CHANNEL_B_OFFSET = 108 +LRO:COMPAND_CODE = 0 +LRO:LINE_CODE = 51 +LRO:BTERM = (0, 8, 25, 59, 128) +LRO:MTERM = (0.5, 0.25, 0.125, 0.0625, 0.03125) +LRO:XTERM = (0, 32, 136, 543, 2207) +LRO:COMPRESSION_FLAG = 1 +LRO:MODE = 7 +Object = IMAGE + LINES = 10 + LINE_SAMPLES = 5064 + SAMPLE_BITS = 8 + SAMPLE_TYPE = LSB_INTEGER + UNIT = RAW_INSTRUMENT_COUNT + MD5_CHECKSUM = 2b00bb29ada1cfd17e91b093056f59a1 +End_Object +EndDS_VERSION_ID = PDS3 + +/*FILE CHARACTERISTICS*/ +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 5064 +FILE_RECORDS = 52225 +LABEL_RECORDS = 1 +^IMAGE = 2 + +/*DATA IDENTIFICATION*/ +DATA_SET_ID = "LRO-L-LROC-2-EDR-V1.0" +ORIGINAL_PRODUCT_ID = nacr00015d79 +PRODUCT_ID = M114145549RE +MISSION_NAME = "LUNAR RECONNAISSANCE ORBITER" +MISSION_PHASE_NAME = "NOMINAL MISSION" +INSTRUMENT_HOST_NAME = "LUNAR RECONNAISSANCE ORBITER" +INSTRUMENT_HOST_ID = LRO +INSTRUMENT_NAME = "LUNAR RECONNAISSANCE ORBITER CAMERA" +INSTRUMENT_ID = LROC +LRO:PREROLL_TIME = 2009-11-29T14:51:21.623 +START_TIME = 2009-11-29T14:51:21.968 +STOP_TIME = 2009-11-29T14:51:39.599 +LRO:SPACECRAFT_CLOCK_PREROLL_COUNT = "1/281199081:26214" +SPACECRAFT_CLOCK_START_COUNT = "1/281199081:48869" +SPACECRAFT_CLOCK_STOP_COUNT = "1/281199099:24674" +ORBIT_NUMBER = 1955 +PRODUCER_ID = LRO_LROC_TEAM +PRODUCT_CREATION_TIME = 2010-06-30T21:17:26 +PRODUCER_INSTITUTION_NAME = "ARIZONA STATE UNIVERSITY" +PRODUCT_TYPE = EDR +PRODUCT_VERSION_ID = "v1.3" +UPLOAD_ID = "SC_2009333_0000_A_V02.txt" + +/*DATA DESCRIPTION*/ +TARGET_NAME = "MOON" +RATIONALE_DESC = "TARGET OF OPPORTUNITY" +FRAME_ID = RIGHT +DATA_QUALITY_ID = "0" +DATA_QUALITY_DESC = "The DATA_QUALITY_ID is set to an 8-bit value that encodes the + following data quality information for the observation. For each bit + a value of 0 means FALSE and a value of 1 means TRUE. More + information about the data quality ID can be found in the LROC + EDR/CDR SIS, section 3.3 'Label and Header Descriptions'. + Bit 1: Temperature of focal plane array is out of bounds. + Bit 2: Threshold for saturated pixels is reached. + Bit 3: Threshold for under-saturated pixels is reached. + Bit 4: Observation is missing telemetry packets. + Bit 5: SPICE information is bad or missing. + Bit 6: Observation or housekeeping information is bad or missing. + Bit 7: Spare. + Bit 8: Spare." + +/*ENVIRONMENT*/ +LRO:TEMPERATURE_SCS = 3.88 +LRO:TEMPERATURE_FPA = 17.67 +LRO:TEMPERATURE_FPGA = -11.38 +LRO:TEMPERATURE_TELESCOPE = 11.14 +LRO:TEMPERATURE_SCS_RAW = 2770 +LRO:TEMPERATURE_FPA_RAW = 2118 +LRO:TEMPERATURE_FPGA_RAW = 3388 +LRO:TEMPERATURE_TELESCOPE_RAW = 2429 + +/*IMAGING PARAMETERS*/ +CROSSTRACK_SUMMING = 1 +BANDWIDTH = 300 +CENTER_FILTER_WAVELENGTH = 600 +LINE_EXPOSURE_DURATION = 0.337600 +LRO:LINE_EXPOSURE_CODE = 0 +LRO:DAC_RESET_LEVEL = 188 +LRO:CHANNEL_A_OFFSET = 52 +LRO:CHANNEL_B_OFFSET = 108 +LRO:COMPAND_CODE = 0 +LRO:LINE_CODE = 51 +LRO:BTERM = (0,8,25,59,128) +LRO:MTERM = (0.5,0.25,0.125,0.0625,0.03125) +LRO:XTERM = (0,32,136,543,2207) +LRO:COMPRESSION_FLAG = 1 +LRO:MODE = 7 + +/*DATA OBJECT*/ +OBJECT = IMAGE + LINES = 52224 + LINE_SAMPLES = 5064 + SAMPLE_BITS = 8 + SAMPLE_TYPE = LSB_INTEGER + UNIT = "RAW_INSTRUMENT_COUNT" + MD5_CHECKSUM = "2b00bb29ada1cfd17e91b093056f59a1" +END_OBJECT = IMAGE +END + $%%&&%&%%$%$$#$#$#%%&&'&'&'''$%'*&%#%%''(&&%%$%#%$$#%$%$%$&$&&%&)%$%%$$%''&'&%%$%&('*))'(&(*+*)***+++++***,----,++,,+*(&'+//0/.,,+,++++++++++,,--,---,,,,,-,,,,,,,,+++,--+++++**+*++************,++*++,++*+++++*+++++*++++++++++++,+++,,,,,,,+,+,,,+++,,+,,,,+,,,+++++++,+,+,+,++,,,,,,,,++**+**++,+++++,,+,++*)*+-..--,,+,,,+,++,,+,,--.-.-,+,+,,,,,,,,,,+++,,++,-,-,-,---.....-----....-.---.-.-../////-.,,+++,,--..///./..//////.--../././../0/0//....--,./0./////////0100111200010000/0/00////./..........//0/001011211111110/00100010/..///0/////0/0/0//..........--,.---.-...----------.////0//.///...../..../////0./....---.---.--,-,,,-----,,,-,,,-,+*,-.,,,,,,,,**,/----,,,....---,,,----.-.----,,,-..,+,+,,+++,-.--,,-,----,,,,,,,+++++++,,++-....---------,,,,,,++++,+,,+,+,,,,,++********)()*******+,,,,,++****))(*(*(('**,,+++*)'&&'&*)*+*)*',*+**))(((**+++++++*++++,,++,+++++,+,+,,,-,+,,+++++*****++***+++++++*++++)+)*)+*+*+,++,,,,,+,+,+,,-,....//........--./0./..-../////././..///...././..-.-.......//0011110100//00000000000111212222222223231211110100//13121223345456432212222222122334454434555433333334333333332323334334333433010232122322233323221101121122220000000100/0/0010001/22200/.02331000001101///0010000/0/////0/00////....../---.-----.--..-/......-.-----.-.-.------,-,------,-,,,,,,,,-,,+,,-,-,,+,+,,,,,-,,+,/..-.-.-...-.-.,-----,-,-,--------,,,+++,+,,-,----,,,,,,-,-,-,-,--.,,,./0000/00/../....././//./././././/001/000/0//./..-.....-....///..---0/000/0////////.//0//.//0//...//.-.-..///......///0/////0////.00101000////0000000/0/0/0/0010000000/0//0//././//............-.-.....-...---..-.--.-/---,,,+++,+---,,*+*+,,+,,,,-,,,-,,++**+-,+***+)*))(**+,-----,,,,,+*+*+,,+)'****+++++,,,,++*+++**('')*)&''(((+*(***))&'$&%&&''('))*++*+++++,,++,++*)((('(()(*)***)***++*+))''())(&'&&##$)))*+**'*,,+*))(***)**+++++**)*)*((((*)'(()++*****+*,+***))&('&$'((()'('+)***))')('&&%$'*(&)*'$&*,,,*)*****(****+()()))((''%%%'')(((()))**+**+******+*,++*+*++**********++******+,,,++*()'')*+,++*))''('('((+++)(&'%''(&)'('(()&')+''&'&'%%'*+,*+***+*++++++++,,++******+****)**+***********+++*+**)(&'&((('**++,+*(&#"!##$(*+,-../..--++***)&(&'%&')))(*)*******)***)*)+***)&$$'+--,*)(*)*)*))())()((((*)*)*)****+**)*))*(((''%(')*++*()'&&&&'%&$$%&&&$$$#$%%))('&'((*++*)'*+,*)((('(('(()()'(()((()(*()())))))*(*)*)())()())***))()*+**(*)***)*)(&%#""%&(*+,,++*(%((((()(')')()((('()()()'(()()******''&***('(((((*))((''&(()()))()()'(''''()'('''''''(')'((('((('''(')()&&'''(&&&(')'''((''&$%&&&&&'&'&(&'&%$$"$#"#$$%%&%%&''))**)''&%$$$$$$#%$$#"!""$%&')()()''&&$%$%%&%&'((('(&'()((''''))'(''&%&%$%$%%&&$%&&'%%# &*++**)***))((()**++**)*********)*****)*')(**+++*)()*+**)****)(&),,*(+,+*+*+*+********()())**+++****()(**++-,++++*****++******)*)*)**+*+****)))***)*))()')(*+,+*)))**+*+*))*)*(*(*(('()*))))*)(*)()*)*(('('((('('&&''&%&%&()))''&%$(&&%&$#""#$$&&%%$(((*)&&'$$#%#$$%$$$&$"!"!"" !""%%(''$# $)*+)'(()*))))(()))**,+---,-+,,---,----.----,-,----..------.......--,,,,+++++,,,-.....-,,,+++++,++*+***+*+*++++**+*+*+++++++*++++++,++*+++*****+,,--,,*($#!"#$'*+,,..../..--+***+++++++,,,,---++*+,,,,+,+++++++++++,--,,**,-,,++*+*+****)))*(*()(*)***)*)*'(&&&'&&$&%'%'''&((*)**+*+++**')'('&%%#$%&%$"""####"$"$""#"!  # !!!  """ !!""  !"!""!!  !#$%&'&'%&&&%'&%')((())))*******)****+++**)*,,,+*++,,,,,,-,,++++++++++,.,,+++,,++,+++++++,,,+,,++++++++++++,+,+,,,+,++++++,,,,,,+,++++***++++++,++++*,++*+++**+++---,,,,,,,,+,,---,-,-----,,,,,,,-,,,,,,,-,-,,,,,-,,,,---.---.-.---.-....///...---,---,,,,+++,,,,---,,,,--....---------,-.---.----..-.---......---,,,,++***,---.-.//.///////./..-,,,,,++++++,,,,+,+,+,,,-,+++,,,,-,,,,,+*****++***(()**+*+**(******)*)'(')''')*+++,+++*++,+,,,,+++++**)*((&'&(()((&&#$#$%'(**+,,-......-,,+*)***(****++,,,,-,,,,,,+++,,,+,,+*+*+*+,,+++**+***+++++++***+*+*+)((**,++*+++*+*+*+++*)''')*++-,-,,+*()(*))(**++,,,-...-,++++*+****('%%%%%'&''((**++,,,**+,+*(('&$%%%&'(*)*))())*))((')(*()())*(*))'('(()')(*)*(*))())***())))**++++***)*)***)**+*****+++,-,,+*'(&''''((''*(****++-.//0///////..--,,,+,++*+*+*+*+,-,,+,,,+,+,,+*+*++,,---,,+++*++*+*+*+********))**(*(('''((*))(('&&'(()**,++*+*********++,+,++*++,+,+,,,,,,,,--------.---.-.././//....---,,,*(&%%%&((**++,,,-.---../////./////..,-,+**(('((***)**+**)*'))++,,-,+)'()+++*&$$$$&'(()()))((()()'(%&%%&'''&('('((((*)*******)***%%#&),-.-,+++,,,,+**)**+*******++,,--../--,,,,,,+*++-----......../-.....-...-,,---,-,,+,+,,--./0/0..--,,+,,,+,+,,,++*+++*+++*+++***+++,+,-,,++++,-,,,+**&$!""&'*+--../..-.,+*)((&'')**('&&%((()**++++,-.,,**()()()*******+*+)***)*()*,+**+*****++++**+*+*+*))*****())*(*****)))*)*))(**)*****+++*+***+++*++**+++++*****+++++++*+*+,,,-,,*+++++,,+,+,+++++,,-.-..--,,+++**+*+)*)++++**+***+***+++*++++,++*+****++*+++++++++*+***))+,,,+*****+++,,*+)'$$$&(+++,-,-,,**())))****+*+++++*+*******+*,++++++*++,,,+++,++****+,,--,,,+++,,----.-,++**)**+*++++,++++++*+*+*****(()(******+****)***)**+++*+*+,,+++,,++++++++++++,++,,++*+*******++,,+***+*+++*+*+***+*,,,,,+++,+++,,,+++,,,,+**)*)*+++++++,,,++*+,-,-,*&"!"$%'*+,-./000-,+++,,--.-.--,)"+0"$%&&%&$$#$#$#####$%%''))((((&&'(&%$$%&()''$%$%###$$&$%#%&%%'&'&&#$$$#%&('&&%%##$%'()))(*''())**+++++*)$%),-//.-+++,())&(+./10/,,+,+,,++,+,+,--..--,.,,,-,-,,,,,,,,+*+-//,+*+*++*+,+*****)******+++*++,++*+++*+*+*,*+*++++++++++,+++,,,,,,,,,,,,+,,,+,,,,,,,,+++,+,+++,+++,+,+++++,,,,,,,++++***++,++++,+++++++)*+-..--,,+,+++,++++++,--.--,-+,+,,-,,,++,,,+**+++,--.,-,--..../---.-.-.------.----.-..///..,,+++,,--..///././//////.--.././/.../0/0//.//........//////0000000111100000000//00////././....-..--//0000111121111110100010100//.../00///////////............-,.---...-.-----.,--..//0/0//////.....//.-.//00//.///.----...----,-,,---.--,,,-,-,,+*+,//,,,,,,,,,,,.----,,,...--,--,.------.----,,,,--,,++++*++,-.,-,--.------,,+,,,++++*++,,,,--.-.-.------,,+,,,,+++,+,,+,+,,,++++****)*)*)*)**+****+,,-,,++**)*)*)*)**)***+*+**)*(&'('****+*+*+*+*)()'()*++++++*+*+++,-,,+++++++++,,,,,,,+,,+++++*+*+*****++++,++*+++**)*'**+*+***+++,,,,+,+,+,,----.-..../....---..0...--../0///.....///............-----....//00101110000/10101000111122222233222222222210101000/12022223233446742112232222221335575444454534333334343333332322244433333423./1233342230022322221111122211111110101100000/0100001012110011210001001000/0/0000000/0/0/000/0////.///./...------,-...././...---------..---.-.------------,-,,,-,-,,,,,,,,--,,,,,,,,+,,----,,0-.---.-.....-.,-,,,,,,,------.--,,,,+,+,,,,,,,,---,---,,----------,--./////0./.../-..../././//////.....0100/00//./.0/..../.../...///..---./000/0/0././//.//0././///0//..-.-.--././....-.--/00////0//.../010000/0/00011/0/0/000/0///000000000///////0//////././.../..-.-...-.....-../.------.--,,,,+,++*,,-,,+++++++,+-,-,----,+*)*,-,+++++)*))'))++,,---,,,,,+)((+,-,*)****+++*++,,,,,+,++**))')((&'&'()*)(+*(()'&%&#'((')'*(**+*++++,+,,,,,+*)(''&)()(***)****+*+++**')((((&&''%$$&&')***&*,-+**))******++,++++)*')'(''*(()(**+*+*****+*+**()('''%(')(('((**+**)*(*(&&&'&()()))&#%*,-+*()))*+*****+)*)(()('&&%&&''()((()*)****+*+)*(****+++++*+*****+*+***+*+****++,,,+++*+*))**,++**(('('(&''*++)(&'&''('(&'$'**(')*'('(%&&'(**+****+++++++++++,+,++++**)+*+*+***++*)*)****+*+++++**(('('('((**++,++))&$#$$&'**,-...-.,+*+**)(&'%'%&')**)******+**(***)*******(&$&+,,+**(*)))*)*())())(((())**)*)*++****(**)'(''&''****)'*((&(&'%%$$%%%%#$$%%&'**)'&%((**,+*(**+)((('('('(()((()')))()()()*))*)*)))))*)())()())*)*)*)**+**)*******((%#!!!#$&)++,,,*)(''(')()&)())*)('())()((()(((**)****))&*(('((((('(()')'(')(((()('()*')&''()('('''('(')(('(''((((&''(')')'''''(''&(''&'''''''$$%$&'%&%'''&&&%%%$##$$$$&%'&&'&'()*()''&%%%$&$$$$$$"""#"$&''(')()''&&%%$%%&&'')()(('(')()'(''(('('(%&%&%%$%&%'%%'&&&$! &++,******)*))(**+++**)*********)*)***)*))'()+++**())*********))*++)'+,+*++*+**+****)*())))***++****()(**+,-,,++*+*****+**)**********+++******)*)***)***()'*+,+*())***)*(()*)*)))(()(*(**))*(*()()()((')'('(')'(''&&&&&&&''))('(&&%&%&&'$$"##$#&%&%&'(()('&%$%$$$$%%$%%%$"""!" !"&'(('%#"#%(()'((()*(*)*()()(**+,,-.--,,,---,------.-.---.-.---....--.-.---.-.--,---,,,,,,---.--,,+++++++,++*++**+*+++++*+*+***+*+++*+*++,+++,+,+,++*+***,,,,-,,+*'$""#%'*+,--..././-,+***+++++++,,-,,,,++*++-,,,,+,+++,,,,,+,,,,-+,++,,+**++*****)*****)*)*)+******()'&&&&&&&&&&&&'&(((()*+*++***(('('&&&$$%&$$#$#$#$$"$$$#"$""  !#! !!" #$"! "!!!"! !!"""""!!!! ! !"#$%&&&%'&&&(''&('))*))(***)***)****+*+**)**,,++++,++,,+-,-,,++++++++,,,-,++,+,+,+++++++,,,,+++*+++++++++,,,,,,,,,++++,+++,+++++++,++*+*++++++,++++++++*++++++++,,,,,,,+,+,,,,-+,,--.--,,,,+,,,,-,,,,,,,-,,+,,,--,,,-,-,-,,,---,-,--..//0//././-.--,---,,++*+,,-.-.,,,,,.-.-.------,--,-.---.---....----.-.-..---,,+++*))),-----.././//0000//..--,-,,,,,,+,+,,,+++,+,,,,,+++,,-,,,++,++*+*+*+*+**))*****+**)*********)(''''(***++++++*+*++,,,,,++++***)('''')))()''&&%&&))*+++,,-....--,-+*)*)*)****++,,,,-,---,-,,,,+,++++++***++,++++*+***++,+,,+++**+**+)*)+*,++++*+*+++++++*(&&%)*+,-,,+-,*)*)+*****+++,--...--++**++***+(%&(&(&'(('((**+,,++***+*)'(&&%%$%%()***(*((()))(''((*)(((())))(()()))())))***)((((**+**)((*++++++*********+++******++,,,,,+((&(()(('('))*)**+,-.//0//////./----+,++++*+*+*+*+,,,,+,+,+,,,--++++,,,---,,++++++++++*+****)*())))*))()()(*)***)((('''())+,++++********+,+,+++++++,+,,,,,,,,------.-.---.-.-.......././..--,+**(&''))*+++++--,----.-/.//.////..--,,++**'''()))))**,++***++++,,,+*%$&)+-,,*&$%$''((*()()((()()''%%$%&'('&''())()****++********))%&(+,-,**+,--.-,++***+*+***++,,,,,,.-.--,,,,,,,+*++,---.....././......-.-..-,,-.--,,++*++--//000/.-,,,,,,,,,,-,,++++++++++******)*+,,,--,,+,,,,,,+****)&##"&(*+-././..--+**++*(()***()'(&''()**+++*,,-++**'(()(*)*******++++****))*+*+*+********+***++****)***)('***)*++)*)*)*)*(*))))*****+++*+*+**++++++*+*+++**)*++++++*+++++*++-,+*++++++,+,++++*++-,..../..-,++++*+*+***+*+***+*******+++++++++++*+*****+*+*++*+++++++****++-,,++*+*++++,++**&'&'(+++,,-,,,+*))()*+***+++*+++*+********+++,+,+*+++,+,++++++++*++,,,,++,+,+,----./-,++***+++**+*++++++*+*********))*)*)*********())**+*+++*++++,+++,+,+,+++++++++,+,+,++*++**+***+++++*+++++*++,++*+*++,+,+,+,+,+++,,,+++++++**+*********+*,,-,,+++,,,,*%""$$%(*+--./0//-,+++,,--.-.--,*#+0"$&&&%&%$#%$$###"#$$&%((*)*)('&&&%%$$$&'(('%%$%###$$$$$$%%$%%&&%$$%$%#%&'&&&%&$$'%(&)()))'''()*++++,+*'!$),.000.,+++(('&(+./100-,,,,,,,,,+,---./0.---,,,-,-,-,,--,,*)+-/0-,+++++*+,++*****+****++++++++++++*+++++*+++**+++++++++++++,,--,,,-,,,,,+,+,,,,,,,+,+++,+++,+,++*,+-+++,,-,,,,,,++++*)*+,-++++,,+,,,,,**+---.-,,+,++*+++*++,,--.-.--+,,,,-,,,,,,,+**)**+,--.-.-.-////...........,--------....///..-,+++,,--.../.././.0//..././/0/0/....0///..00.....-/././////00/000011101/0/000/0////./...///....-.-.010001111111211000/000010100..///0/0////.///./............-----../-.---------./////0//////.....///...///..//..---.-.-...--,----.-.---,--,,,,+++,-.,,,,+,,-------..-.-...-----,-,,-,.------,-,,,,,,++*++,+,,-,,,-./-.-.--,,,,,+++++*+*++,,,,--.....---.--,-,,+,+,+,+++,+,+,+,,++***)*)))*)*)**+**+,+,,,+,+*)*)*************)*))'''((*))*+*++***))(('((++++,++**,,+++,+,++++***++,,,,,,+,,,,+++++*+**+***+++++++++++**)*)**+*+*)*+++,,,,,,,,,,,,,--.-/.0/...-.---.-../...////0////////./..././........---....//0000101010001011020010223232322221212222212111100110101122233332444321133232322123568533445443334333334342322232334432212353501112234555.+/2322121111111110121101110101000000/000011111111110010100000////0000000/0/0/0/0//00//.///./..---------.../../..----...------,,//.--,-,-,-,,,,,,,,,----,,,,,+,,---,,,,,,,,,--...-/..-----...----,,,-,-,,,-..---.--,,++,,++,,,,-,,---,-,,,,,-,----.-----.././.0./././......././//////.....0000/000//.-0.........///////..---./00/////./././////./././/00/....-.-.././......-..110///0//././000000/0/0/000/0/0/000/0/0/0000/0000/0//.//2//////.//.....-.-.-.-.....-.-../..-------,+,,,+,+*+,,-,,+*++++*,+,,-,,--,,++*+*,,+++++**)((((*+,,---,,,,,+*))+-,+*)+++*+*,+,+,+,+,,,,++*))'(&&%''((()(')()')$&()%((((*)*)*)**+*++++,*,+,+**(('%''()*(*)******+++**()'())(&%&&%$&$((****+,-+*)))*)*)**++,++*+))(('(''((')(**+***********+)*(''''('(()(((***+***(*'&&'()((()()(''*+,*)'(%'*+**)*)*))'('(((&&%'%''''(((())****+++**'+****++++++**)***)+++*+++***+*,+,****,--,++++**))'('('(&'()**)(')'('(((&'&(*+('')&(''&'')()**))*+++*+++**))++,,--,+**)+******)++*()()**++*+++++)*(('(()'()**++,+++*('%&%'')*,,.----++*+**)'&&&'&&')************(**))******+))&'**+*())*)*****)*()()))')()))(()*++**))(*)*''&&&''*)*))(*)'((''$%#$$##$#$$&'(')(('&%'(**++*(*)*()''')()'('('((*(*)*((()(*)*)*))(*()()))))()())*)***)*****)*)***)*)&"! "#&'*+,--++)'&'&*(('(()))))(*))(*(((('(()'()+++**()()((&(''')()()')()()((()(((*')''''(('(''&&()((((''&'()''&(''')('&'&'&('''(''%''('&&&$%%$$%&&%'&'&%%%$%%$#$$$%'''&%&''((('(&&%&&%&&$$$%##!"#$#%&'''&('(('&%%%$$$%&'()))((''&('(''&'&'')(($%%&&&$&&'&&&&&&%$"!%***)**+**)*(('*******)***)*)***)))*****)*(*)***))(()**+)*)**+++++++*++**+*++**+****)*()())*++++*+))(*)**+,--,++++*****+***********+++*+***+**)*(*)**+**)*'**+**)*)*)*(*()()(*()((())))(()()(*()((((''')())('('(''&%&'&'&('*((&&%&%&%%'&%%###$$&&'%&&'&(''&%$$#%$&%&$$$$#! !!  #%&(&&$#%%%'&''((()*))()()((()*+,--...--,,,,,----,-------------.-.---------.----,,,.,-,,,,,----,,,++*+++++++*+*+++++++*+*+*******++++++++,+++++,++++*+*+*++,,,,,+*'&""#%&)*,--.../..,,*+)**+++*++,,-,,,+**+++,,,,,,,++++,,+++,,,,-,,+,++*+*+**)*)*******)*)**+****)*()''&&&'&'&&''''&(()')*+*++)))(('''&&&%$%$%%$%$&%&&##$#$$%$"!#"" ! !!!"!!""#""!! ! ! """"!"!"!! ! "#%$&%&%&%&&(((&(')))(((***)*)*)*)**+++*+***+++*++,+,,,,-,,++++++++++++,-,++,+,+++++++,+,,,++*+*+++++++++,-,-,-,,,+++++++++*+***+,,,,++++++++++++++++***++++++++,+,+,+,+,+,+,,,,,+,---.-,+,,,,,,,,-,,+,+-,,+,,--.----,,+,+,,,,,+,,--..//0/0////..----,,,-++**,,,...-,,,,--.------,--..-----,---,-..-------.-.----,+*+*))(*,,----.././///1110/..--,,,,,,,,,,,,,++++,+,,,++**++,-,,++++++*++**+**)*)*********)*)***)*)*((&(&&((***+++*+***++,+-,,,,+*)***(''&&')))*'(''&)(**+++,,,------,,-+*(*)*(*)**+++,,,-,,----,-,,,,++***+++*+++*+*+*+)*)*+++-,+***+*,++***+*,++*+*+*+++++*+)'$$&)*++,+++,,****,++++*+++,,-...--+++****+*+(%&*')'(())))+*++,++*)**)(''&&$%$%%(*+*)*)())))))(')')(('(''()))))((((()(*(**)((&'(**+**())+++++**()**++*+*+*+++*+*++,+,,,++**))))()()'))))+*++,-/////////..--,,,++,*+*+*+*+*++++,+++++,+,,-+++,+,,-,,,,+,++++++++****)*(('(((((')()()(*)*)*)()*(('')****+*+*******++++-++*+*++,,,,,,,,,,----------.---.-....../././..-,,,++**)**++,++*+--,----..../././//--,,,,++**&''('((*)++,++***++++,+,+)%$%)+--,*'#%$&')*)()'(''((((&'%$#%%('('&&()********++****++,**'&'*++)((+,-./.-,+***++++++++++,,-----,-,-,,,,,-+,+,,,-.....//./......---//-,,,-,,,,++*++--//000//--+,,-,,,,--,,++*++++++*)**)')(*+,,-,-,--,,,,,,+***+)'$$$&),,.././-.,,*(*,,+(*)***()'('''))**++****+*+*)(((((***)*)*)**++++***)****+*+**)******+*+*+****)*))()'***)*****)*)*(*)*))()********++****+,*+***+*++,+***++*+***+++++*(*,-,++**+++++,+++++,,--..///..-,+*++++**************)****+*+*++++,++++***+++++++***+*+++*++++++++++*******+,++**'('((**+++,,,,**)(&'*+)********++***)****++++,+,+++++++,+,++++*++++,,,++++,-,--.-../-,+,+****+***++++++++**+**)*****)*(*********)***)+*+*+++*+*++++++,,,+++++++++,+,,,,+++*,++++**+**+*****+++,+,,++++*+*,,,,,+++,++*++,++++++**)*******)***+,,-,,+,+,,,+*&# "#&(*+--////.,+*++,,--.---.,)#+0"%&&%$&$%%$##"####$$&&()***))''&%#$#$%'()((%%$$###%$$#$#%$%$$$$$$$%$$$%&&&''&'%%'&('('*('%&((**+++,,,)% #)-/101.,+,,+)&%(+-/00/,-,,,,,,,,,---,,/2/,-,+,,,,-,,,---,,+**-./,,+*++++*+++*+*********++++++++++++++**+*+*++++++,++++++,,+,,,,,----,,,+,-,,,,,,+,+,+,,,+++,+++**,,-++,-,-,,,,,,++++***++,++,,,,+,,,+++++,+,--+,+,++++++*,+,----,--,+,,,--,,++,,+,+*)))+*--....../././..........-.-------.-..//...,,+,+,,--...././////./..././/0/0./././/0//.//.-.---.././//.//00000001101/10000/0//./..././///....-..000101112213111100/000010100///////0/...././......././..-.-.---.-.-.----.--.-./0/0/0././.../....//..//..-.././-----...---------.----,,,-,,,,+++,,,+,,,+,,----.-...-..--.-.,-,..-,------.--,,,,,,,,,+*+*,,+--,,,,-/---...--,-,,*+++*,+++,,,,--.-...-.--,-,,,-,-*,+,+++,+++++,,+++*+**('((********+++,+,++++******)******+*+)*))''')(*)*****++**)((((()*+++,**(*,,+++,+,+++****++,,,,,,,+,+,+,+**++**+*+**+,+,+++,,+*+**)**+)*))+***,,,,+,,-,-,-,--.-/.//../...----../././//00//.///./././//./.../././----....//001101/0.001021111011232232322221111122112211100010111112334322334332323332322123568533344444333334434332333233343332212465801222333454.+0222221110112211122111121210101/0/0/000011111111111110101000000001//000/000/000//00//.../....-----,---...0/////..-...-.--.-.--0/.-----.,-,,,,,,,,---.,--,,-,,,---,,,-,,,,-../././..-.-----.--,,*+,...---...------,,,,+,+,,,,,,,--------,-,-,---.--...-.....././.../././.....//000//././/0000000/0//././////...0////////...//0/0/0////.//0//////...//000//..-.--....././/.../0/////0///////0/000///0/0000001010000/00000000000///////10/////..//....---.....-...-.-.//..-----.,-,,,,,,,+,,,-,,**++++*+,-----,-+,,,+,+,+,++++)*()'('*+,,-,-,,,-,,++*,,,***++++,+,+,+,+,+,,,,,+**)''&%&(()'('(&'%*(($&)*())****+*******++++++,+,*+*)((&((()))))***+++++,**((''*))'$&&&$&%'(**,,-,,++**)*))()*+++,,,+**))'('(()()(*)+*+*+****)()+**)('(((()))))(**+****)*&'&&****))()**)+++))((&'*++***)***))'('&%%%''('((((())****)**+++)****++,+++**)*+++(+++++++*+*++,+*&$(+-/0/..,+*)(('(((()''('))'(()(*()()()(())'(((')(''''((****)**++*+++)'%%)++--..-+*)**+*++*****(***)+**))+-,+**()'((*(****+,,,,++*)''&((*+,,-,-,,++)+**))&'&('''))*******+***)*)*)**+***+**)****)())****+**)*)(()))()()()(**++++**)(****)('&(())*(*)**)()((&%$##$#$"$#&(*(((('''))*)+**())))((''(()()'('')*(**)))()(***)*)*)))*)***)*(*(()(***+***+*+******)+)&"  "#&(*,--.,,*)''&(''&(()()(((***))(*()))()&')+++*)((()()'('&((()(*()'('*)()'(('(')'((''&&()'&%(*(((('(')&($%'*)(')((&&&'&('(&(&&%&(*'&&&$%%&$$%%&(&'$%"$%(&'%%$%$&&&'&%&&'&(''&%$$&''('%%$#$""$$$'&'''&'&'''&'&&$%$%&()**)('&&&('('(&&&''(&%$%()'&&&'('&&'&'%%#"!#$()****+)*))())*******)*********)*)))*)*)))*)***)(&)*+++**))*++,+,,,++*+++*+*+*+*+****()')**+,,,++**)**+*+,,,+*+,**,**)**+***+***))**+*++**++******+*+*+*+******)))**)))())))*)*)(')(*((()(*(*()))()'(')(*))((''')&&&'&(&(&(''&&%&%%&%'&&&$%$%$'&&%&%&&&%'$$#$$%%(''&%#$!!"!  !#%'('&%#&%%&%&'((()*)*)*))(('()++--...---,,,----,--.---------.---.-.-----------.----,,,-,,,,,-,,,+++++++++++++++++++*++**++******++,+++++,+++,+++,+++++,+,,,,,,,,+('$##%&)+---.../.-,,*+***++++,+,,,,,+++++++,,,,,,,+,+,,,+++,,,,,,-+,++*+***+**)**+******)**+**)*)*)*()'(&&&('(('&&&&(*(**+*+****)*'(''&%%$$#&&'(&%%&%$$##$$%$$!  "!! !!!"!"  "$%## """! !#""###%##!!!"#%$&&&&&&&&((*()))()(()*+*)*())****+++*+****+++++,+,,,+,,,++,,+,+,+,++,-,,,,+++++++++,+,+,++***++++++,+,,-----,,+++,++++*+++***+,-,-,,+++++++++++,+++*)*+++++,,,,++++,+,+,+,,,,,,-,---,,+,,,,,+-,-,,,+,-,----...---.,,++*++,+,+,,--////100////./..,-,,,,++*+,,---.-------.--,,,,,--../..--,-,--.-.-.----------,,+***))()*+,-,--../////02110/..-.-,,-,,,-,-,,,,+,+,,,+,+,+,+,,,+,,+++++*++++++**+************)*)***)*))()''))+*+++++*)**++,,,,,+,++*+**''((&'(*)**)'()**+++,,,-,-----,,+,*+**)*)))***++,-,,,-----,,,,,,*+*++++***++++********+,,---++++,-,+***+++*+*+++*++,,++*('%$$(*++,*++,+***+,+,,,+++++,---.--,+*****+++**&(')())*)*****+,++**)((''(''%%%&&()*)**)')()()))()()((&'&(()*)()(*))()(*)*))((%'(**++**))+++****()***+*+*++++++++++,,,,,++******())(())()+*+,-././/0./....--,,,,+,*+**++*++++++,+,+,+,,,,-,+,++,,,,,,,,,++,,++++****))&'%&&'''')((()(**+**)*)*(('('*)**+*+***+*++++++,,+*++,+,,,+,,,,,,--------.-..--.-.-....../.0//.--,+,++*++,,,+,+,,------..../...../--,,,,+*((&((((()**++,,,++*++,+++,+*'%&(+-,+'&%%%''())(*'('(((()''$###%)(('('))********+++++++,,+*('%'()(&(*+-.///--++***++,+,,,+++--,--,,,,,,,-,,,,+++,-...-.////........-..-,-,-,-,,+**++--//0/0/.-,+,+,,----.--,++++++++*))('')(*+,,--------,,,++*++*('%'&(*+,.....---++)*,,+(*******()')(****+**)))*)*))&('((********+*+++***+**)****++*))*****+***+++**)))*)*)***)*****)*))(*)***))****)****+***+++*+******,-++*********+++++***,++*++++,+,,-,,++++,-.../////,+*++,,,**)*********)*)*)****+*++++,++*+*++,,,+,++***+*+*+*+++,,++*+++++*****,+,++**))(**+*,+++,++)**)*,******)+*+++++*****+*,,,,+++++*,+,++*+*+*+*++++,+**+,-,,,--...--,,,+*+*+*****+++++++*+**)**+*)'*)*)**+****)****+++++++*+*+*+*++,+,++*++,++*++-,,+,+,*,,,,,+**+*+*****+++,,+,+,++***,,,+,+++++,+,+,++*+****)*******)**++,,-,,,++,+,++(%!"$'*+,--///..,+*,,,,------.,*!+0"%%%#$$#'&%$$"#"##%$&&()*++)*('&&#'#%%&()('%%$%%$$$#$###$$%$$$#%%"%#&%%&&&'('''%&&'&('('%'&(**++++,,++($&(,.10/-,+,,,+*()+-.0.,,---,,+,,--..--,-/.,,-+,,-,-,,,,,---,-,---+++++,++*+**+++**+**)***+*,+,,++++++++++*+*+*++++,+++++++,+,,,-,--,,,,,,,,,,,,,,,,,-,,,,,,+,++***,,.++,--.,,+,+,+++,+++++++++,,,,,,,+,,++,++,+,,+-,++*+**+,,----,-,,,+,,--,,+++,++**)))*+--.-..//0/0////........-..------..../.--../-,+,,,---.././//././-.-.///0/0.......///....-----..////0.0/0/00/01110100000000//.....0//././......000101121113221100/001/100000///////....././.../././-..--.-----.-.........-..//0/0/0//././.........///./-.-.-.,-.....-.------....---,-,-,-,,,,++,,+,,,,,-----........---..-.---,--,-----,-,,,,,,,,,,+,+,+,,-,,,,-.----..---,,.+++++++++,,,,------...--,-+--,,,,,,,,,++++++,,+,++++**(''**+*+*+*+++**+,++++********)****+**)*)*((()(*)*)**+++*)((')(***++++++++++*++++,+**))*+,++,,,,,,,,,,,+++++*+*+***++,+,,++,,+*++*)*****))+***+,+,+-,-,,,,-,-....//.//..-----..../..-.110/./.../..././..-..//./.----...//000010000.0110101111112233322222212111212111111000101111112352223333433233222121234575334344444333444332223222232434002/2353613332333202012222111011112111122111212110101/////000111011111112111201010001101000000000/001/000//././.....---,--.-../0///./-.-------.-.-.....-,-,-.,-,,,,,,,---,,+.-,,,,,,-,-,,,+,--,-/////./-../.-------,+)*,.//--....----,,,,,,,,,,,,,---,,++,-./--,-,----...-...././....-.././.....--//0000/.////000000000//../000..--.0//./////./////0//.././.../////./...//1010/.....--.-../.........//00100///0//.000/////0/0/0/10000/0/00000000000///////0///0////......-/--....-.-.-......-------,-,,,,,,+++++,+,*+*+++*++,,---,-+++,,,,,++++++**)(')(*+,,-,-,,,,,,+,+,++******+--,++++,,,,,,+,,*+*'&%&&((*'(&'&''('(%&&('*++*+++*+*********,++++***))('(((()())****+*+++**)*(())'&#%&'$&$&')*+,---+,++)*()((()*++,,,++))'''('('(()*+++***+**)()+**((()()'()))))*******)($%%')+**()())**+**)(((((*****)(*)*()((&&&&&''*'(''(((*****&'*,,,**(**++,,+****)++*)**+++++*++++,*'" $*-0110/-+))&'')))))'(&'&('))***))(*()((()()'((()(''&'')*******++,**&$"#(*,.-/.-+**)*+*+****)*)*)****)((*,,+**'((('*)****++,,,+,++))'()*+,+-+++****+++**'('''(()**)**+******)))**+*+*****+**)))()))*)*)*****()'))))))***)*)*+,+*(&$')++++)&(')')(*)*)*)*)(%%#$####"$#''(()()'(())*)***()((()('&''()(''')(*)***))(*)**))*)*)*)*)*****)*)(()+++**+++*+****+**+)&"  !#'(*,-..-,*'&&%''''()*))())*))(*(*()**()'')+++*(((())(')'')))*()(('()*)(()'('(((()''%&%(*)&'(*()((')'(&&#$)**(&'''&&&&&''''(&'%&)*(&%&$%%&$$$$%'%%"" #&))(%%%%$%&'''%&$%&'&'%#"#$()*(&$$#$#$$%%'&''(''&(''%$%%#$%%&))***)'&%''''&'%&&'&$! #'*,*(&''('&'(''%&%$$%%''))*****))()))******(*)****))*)*))**)***)*)**)(%$*)++++*)**,+,+,+,,+++++++*+*+*+)**)(((()*+,,,++*****++,,,++*+,+*+*****+**+******+++***+*+****)**+++***+****(*)*****()(*)*)*)***))()()))()()')()(('(&('*))((''&(&'&('(&'&(&(''%&$$%%&'&&%%$%#&%&%&%%%%&%%$##$'%'''%%##"! "!!!!"""%&'%&%$$%%&%&')'))))*)+))((&'),,,-...--,,,,+-,,,------.-----.-----.-----.-.-.---,,-,,,,,-,,,-,,++++*+++*+++*+++++++++++***+*****++,+++++++++++++++++,+,,,,-,-,,++))&%%&&*+,-.-/..--++*****+*+*++,+,+,+++++++++++,+,+-+,,,+++,+,,,+,+,++*+*+*+**)***************)*)*()()'''&'('(&'('&'')()*+*))**+**))'(''%%$#%(')&&$&&%$%$$$%$# $" !!   !  !!"!" "#%$" ##"!! !""""$$%$#! "#$$&%&%%%&&''***)))(())***)()()+)****+*+*******++,+,,,++++++,,+,,,+++,,-,,,,+++,+++,+,+,+,++++*+++*+*,+,,----,,,++++++++++++***+,--,,++,++++++++++++++)**+++++,,+++,+++,,,+,,,,,,,----,,++,+,,+,,-,,,,,,,----...-.---+*+)**+*++,,--//001000/////..---,,,++++,,,,,,,--...--,-,,+++,-.//..--+,+----....------..-,,+*))(('))++,,--/.//00001110/..--,,+,+,,--.----,,,,+,,++++++,,,+,,+++++*+++*+****************)*)***)*)*(*()*****+++*****,+,,,,,++*+++**(''&&()*)**)())+***+,-,-,------,++*++*)*)*)**+++,,,-,--,,-+,--,,++*+*++****+++*)')*++,,,,-,,***+--,+++++++*+++++*+++++**(&$$%'(+++*******++,,-,,+++++,---.--++**)**+++++(('()*()**)**+*+++**()('&)()%&%&&))*))))')(((*))(*())(''&(()**))(***()(*()())'%''**+++***+****)*)*)*******++++++,,,,,,,,++******)*))()()***+,-.//0////..-.--,,+++,***++,++*++,+,+,+++++,,,+,,++,,,-,,,,++,,+++*+)*))((&&$%%&&'&'&((*)**+++**))()'(())*****)**++,+++++,++***++,,,,,+,,,-------.-.-.......-.././///0///.--,,,++,,,,,-,,,,,,--.-.......-...--,,++)(((&''))((**+,,,,+,+++++++,+**))**+*)&'$%&'((()(*()'(()()''#%#$%('''(()********++++++++,,*)&#%%%&&$(*,-.000/.,+***++,+,,,,,+,+,,-,,+,,-,-+,+,,,,,--..-.////-.-.....-.----,-,,,+++*++,-//0/0/.-,+,+,,---,,-/.,*+*+*+*+(('&%('*+,-.-.-----,,,++++++**()(*+,-../..,,++++*,+*(+******)*)**)******)(()()')'(())*****++++++++****))'''*++,+)))**+*+*+++++****)*)*)))*)***)*(*)*(((*++**)************+++******+++,++*****+***+++*+++++++*+**++,,+,,,,,+,,../.0/0..,+*+,-,,*****+********())****+*,+,,,++++*++,,,+++**+***+*++++,+,++*+***++++++++++,++*******++,++*)(*++++****)*)**++,,,***+*++++,++++*++,+,++++++++*+++++***++,+--.-...--,,++++***+***+++++**++*+*+****(*)*******)*(*)**+++++++++++*++++,+,+**++++++++-,,,,+,+-,,,,++*+*+**)**++,,,,,+,+++++-,,+,+++++++,++*++*****)****+*+****+,---,++*,-,+,*($%&(*+,.-../..,+*+,,--,--.--,*"+0"$%&$$$$&%%##"""##$%''(****)*('%$#'$&''')')%%$$$$$'#$"#"##%$$$#%$"%$$&&&%&''&&'&'&)'((''&&'(****++++,++*+*,-0.-+,,,,+,++++,,-+,,-,-,,+,-----.-,,-,,,,+,+,,-,,+,,,-,,,,,+,+++++,++*+++***+*+*******+,++++++,+++,++**+**++++++++++++,+,,,,,,,-,,,+,,+,,,,,,,,,-,,,,,++++++++,+,))+--..,,,+++,+,+,++++,,+,,,,+++++++,+++++,++,++++***+,---,-,-,,+,,-,,,+++,,+,**()(**+,--.-/00/0/0/0./........-------.-.--++,/01/,+,,-,--....//...-----.///0/0......./.......---,..//000/0//.00001100100/0/000//..-/./////./-..../001111121212211100/001/000/0/0///................/..-.....--,-,-.......----..0/0/0/0//././..-...././//..----,,-///......-.-......-,-,-,,,,,,,,+,+,+,,,,,-----.....-.----..-.--,,--,---,,,,,,,,,,,++,+,,,,-,-,,,,,,-.-..---.-,-+*+,,+++++,,,--------.--,-,--,,,,-,,,,,,+++++,,,++*+**)'(****+******))+,,+++**+++***)**+***)***)()'((*)*)**+**)*)((()**+**+*+++++*+*+*+,+*)))**+*++,,,,,,--,,+++++*+*+***++,+,,,,+++*******+)********++++-,,,,,,,-----....//...--.---../.../01///..../....//..-../....-.-.-.././///00101/100010101111223232323231211111111111110000001122234333333332223343311.0244655443334333323454222222332234441/223333333333222202222221111011112111121121212110011/////00001000001011211111110000000000000/0010000/000//...///....--------.//////...----..-.-.--..-----,--,,,-,,,,,--,,,,/-,,-,,,-,---,,,-,--./0/.-,,.000/,------,**,...--...----,,,,,,,+,+,,,,---,,*)+-/0--,-,,,,-0/--.-..///....-../-...//0-.//011//-////////00001//./0101/.,-.00/.///////////////./..././//./....-./0110/..-.-.-........--.././/00100/////0.0///////00/0001000000/00100000000//.//////0.///./..-..--..--...--./.../-.--------,,+,,,,-,-+**+*+'++,,****-,-,,,,,+,++,+,+,+*,+***))*)**,,,,,,,+,,++,,,,++*****+--,++++,,+++**,--)*&'%%&((((''''(''&'&&'()*++++++*****)(***++***+**)*(('))((())*****+*++++*)))(')&)%$#$"$#%&)*,,---,,+++*()'&%'()+,,,++*)(('(&'''(*+++++***)*)*)*)(')()))())**))**)***+'($#%(*+**)'''(*)+*))*)*())*****)***((&'&('(&()*)(''&'())*))%&*,--+*()*+++++++*******+++++*+**+,++(##(-01100.,*(&'&***)*'(&&&'')**)*****)*))))()'((((((('''())())**+,,+*%#!#&*,.//..,*)*****+*)***)**********++**)()))(*)****++,+,,++,*******+++++**)))+++**()''&(()()******)*+*+''**+*+**)**+)*))())*)*)*)*)***)*((')())*(+*+***,*)%#!%(,--,+(&''''')****)**)'&$#""###$%'&())(('')(**)**))*()(('('('((('('((***))(('*)+********)*)*******()))*++*+**+**))*+,,**(&$#! !#%)*,--.-,*'&&'''''))*(*(***)*)))*(*)*))(()*****()(*))((()))(('('('*()**))((')'(((((&&&(((''')'((((()(''%$'(('&&&&&'&&&&&'&('(''')&&&&%%%'%%$%%%$$ #&**(&%$&##$&&'&%$&&(''$$"##()*(%####"##%%('&'''('''&&$%&$%%%'))***('%&&'&'''&&&&# $),-,*&'(('%&'&'%%%%$&&('(())***()()(()*)))*)*****)*)*)***)*********))'%#***++**)+*,,,+,,++++,++***+****)**)()(*)*+,+,,,*++++*+,++**)+++*******+*+*+***+++*+*++****++++*(+*+*******)**)*****())))*******))()()()')())())(('(')()))))(('('('('(''%'%)&&%%$%%&&(''%%$$$%$%%&&&%&%&$$#"$&%&&$&$##""!"""!###$$%%$&%&$%%&%'&''())**)*)))(&)*-,--.-.--,,,,,,,,,---,-,------.----..-.-.---.-.-.---,,,,----,,,,,++++*+++***+**++++++++++**)******++++++**+++++*+**+++,,-,,--,-,,,,**(&&&')+,---/-.,,+++**+++++++++,++,+++++++++,,,,,,,+,,,,,+,+,,++,+-,+**++++**)****+*+++++**)))+))((')'('((*('&'('((('()*+**()*+*+**)')('&%%$''('&''''%%#$$%%%" #! " ! "!!  ! !!"#"   "#$$$"!"!"!! !#!""##&%%""!#$%#%%&$&%&%''*++**))((((*+)((()*)******++***)**++,,,,,+++++,+,+,,,+++,,-,,,,+++++++,,,+,+,+++,+,++*+++,,,-----,,++++++++++*+**+,,-,,-,+,++++++++++++++***++,,,+,+++++++,+,+,+,,-,-----,,+,,++,+,,-,,,--------.....--,+**(()**+*,---//001010000//./-.--,,+++,--++++,-./.---,-,,+,+,-../..-,,,,,,--.....-----..--+**'''(&((**+---.//0100000100..-,++*++,--....--,,,,+,,+++++++,++,,,++++*++,+**+*+*+********))()(*+*)***)*)***++*+++***+*+++++,,+,*+****((''&)*********+***+,-,,,---,-,,++*+**)*)*)***+++,,,,-,-,,+,,,-,+,+****+*+*+*+*)%(+,,-,,+,-,+++,,-,,+++++++++++++,++++**&&%%%(*+*+**))**++,---,,+++++,,----,*******++,++*)()(*)))*)*)**+*+**((((')()&'&&&)))*))(()()()')(*()'''(&'(())())***(*))()'*('&'(*++++**)***)*)*)***)(**)***+,,,-,-,,,,,+,++****)**)()())+*+,-.//0/0//..--,,,,+,*+***++,*++++++++,+++++,,-,,+,+,,-,,,,+,,-++*+****))((&'%$$%%&%%%(())**++++***))''')())))****++,++*++++,+++,++,,,,+,,-------------....-.././/0/0/00/....--,,,,,,,-,-,,,-,--.-.-/./..--,-,--,+*))(('((()))*+++,,,,,++++++++*+++****)(&'%''(')())***))()()'&#%#%$%%&&('*********++*+++++++)'# !""##%)*,./1110/-,++*++++++,+,,,,+,,+,,-,-,-,,+,,,-,,,,--../..---...-.--,,----,,,+-,+++,,./0//.-,,+++,,-,,*+-0/-*+*+*+*+''&%%&'*+,-../----,,,++*++++**++*++,-,./--++*****+*))+++****(*)*******)*()'(((&(&)())****+++++*+***+**('&%'*+,,+)))*)**+*+++*+**)*)*)))()))*****)*))()(**+)***)*)*)**+*+*+*+**)*()*+,-,+***+*+*+**+**+*********++*,,++-..-,--.././//..-,+++,++*******+******())))**++,+,+,++++*++,,,++++*+*+*+*++++,+,*+*****++++++++,+,++****)****++*'''+,-,+****)****++,,,*+**+*++++++*+*++,++++++++++*+*+****+,+,,,---.-..-,,,,++*****)***,+******+*+)*)*)*)*)*******)))**++++++,++*+*+++++,+*****++++,+,,,+++,+-,-,,+,++*******++,+,+,++*++,+++++,++++,,++++*++*)*)))*())+*+**+++,,-,,,++-,,+,+*'((**,,----.--,+*,,,-----.-.,("+0#%&&%%%$%%%#$"""##$%''))**+**)(&%##"&)*''()&%$$$%%&$$##"##%%&%%$##$%%&&%&()'(&'&('(&'&''''*****+++++,+,,,+,,-++,,,-,,+,,,+++++,,---,-,---------,-,,,,+,+---+,,,,-,-,,+++,+,+,+,*+'',-++++****+++++++++++,+,++++++*+++*++++,+*,,+,+,,,,,,,,-,-,,,,,,,+,,,,,,,,,-,,,++++++,,,++(**-...,,++,+,,,+,++*++-,,,,,,,,,,,++++++++,+,+++++++,,------.,-,,,-,-,,+,,,,+**)****+,-...//0/00//0//.........-.----...-,**-/120.,,,---,-........----../000///..........//.--,,,-..01010////1100101010000/0/0/...././//////./.../001111111111121211000100000000//././..-----.-.--....-....-+,-/.-.../..--.--..000///0//....-.--...//////.-.--*,-/0/......-...-..---,.-,,,,,,-,,+,,,,,+++,,,--..--.....-....-.--,,,.----,,,,,-,,,,+++,,,----,-,,,,,------,,---,+**+-,,++++,--.-.-,,,,-,..-,-,-,-,-,-,,++,,,,,,++++++**('&****+++****'(+--,++**+,+***)***********))')(*)****+**)*&)()**)**+**+,++++*++++,+***)))**++,,,,-,---,,,+*+*+*+*+*++,+,+,,+++*+***+*+)*)****++++,,,,-,,,,,,---.././//./..-.----.-././///0//.//.....0/....-..............///00010101010100011112223333222323222111122211000111021223232333333212235674/-*.2344454332333433244741232322222324332445232323322323212212121211011111111212132111220101///0/0/000110/010111111201000000000100///0/0/000010100/...//..-.-.-.,--../.0//..------..-.------------,-,,,,,,,,,-,-,--.-,-,,-,--.----,,,--////-*)+.1211------,,++,-----....--,,,,,,,,,,,,,,,---,,)*+./0-,,-,---.0..---.....---.....-.///0/.-/0001/0.0././//0101010//00011//-..0//.///////////////./././...0././..-//011//..-.-.-..../.----..//0000000////////////////0/00010100/0/01100000000/0/0/////0./////./.----...-...././....-.--------,,,,,--.00,)%(**(*,--****,+,+,,,,,+,+,+,,,++,+****)**++,+,+,,,,,,,,-,+,,++++*+*+-,+,+,,,++*)*,.-*)'&&&&'''()((&('&%&&'(****++,++++**)))*()****)*(,+*))()*)('()(****++,,,++*))*()()&%##"##$&*+,---,+,++*+('%%$%%)*,--,,**'(&'&'&'(*++++***+)*)*()&&&()+*)()())**+***+**('$$&)*++*'('()*)*()(*))))))**)(()**)'&&%'(*())*))'&&&'(())(&'*,,,**)(*+++++**++***+*+++++++**+,+*'##(,/0010.-))'&&***(*''&&&&'()*)**+**)*()))*)'('('('('(()(((()**++++*%"!#&*,.././,*(*)****+*+**)*******)******)))())*)****,+,,,++++******+********)*,++****((''')'*******)***)))*******)*)*))())*))(*()(******)'('(')))()(+++*+*&! $(+,.--*'&(&'())*******'(%##"#$##%''((*('()()(*(*()()(('('('''''(')'))*)***())**+**)*)*)))))******+**(**++***)***'')+,-+*'&%%"!!"$&)*,---,*''%(&''('((*(*)*)***))())*)*()()(****)))()()()(('((('''(()')()))((()()('&('('(&''''('((('(()((''&%%%%&&'&&%%&&&'&(()((''%&&&%%&$#$#$$&%$ #%))'&%$# #&&%&&&%&&'''&&#$$(()&%"$###""#$&%&&('(&(&&%$%%$%$%'()*)*('%&&'&''&&'&%!$*,--,(((''%&'&'%%%%$%%(()''()*)(((((()*)***)))***))(*(*)*)*)*****)***))&'(*)**+*++,,,,,,+++++++++*+******()()))***++++,+,,,++++*+**********)****+*+)+*++**+*+*+*+++,,,*&*************))*+**')(*)*)*)**)(('((()(()(*')()(('(')()()((''''&'&'(''&%&%(%&%%$%$&&(&&&%$%#$$$%%%&%&%&$&$##&%'&%%$""!"!"!"!""##$$%$%%%$%$%%&&('))))*)*))((')+-,-----,,,,,,,,,,,,,---,------..----.-.--.-------,---,,+,,-,,,,,,,,++*+*++******+++++*+*++*(**+*+*+*+++*+*+++*+*****++,,-,--.----,+++*)((')*,-.-.--++++*++++++,*+*++,++++**+++++++,,,+,,,,,,,+,,,++,++,+++**+++*+)+++*+*+*+**)*******((''')((()('&'')()(((*++*)((++*+*)()'('&%&''&&%&*+('$$#$$&&&%" !" ! !"! "! !!!! !!##$&$!"!" "! !"!!!"#&$%"#"$$$%%%%%&%%%((*+***)))*(((*((()(*)*)*****++**)+*+++++++*+*+*+*,++,-,,,,,,,,,,+,++***++,+,+++,,,,,++)**++,,,,-,,+,+++,+++++++,+++--,+,+,+++++++++,,+++*+**)+++,,,,+++++++,+,+,,,+,,----,,,+,,,+,,,,,,,,-,,,-,-......--,+)*''()**++,-.//0/0000000/0//----,,+,,,-,+*++,-...-,-,--,,,,,-...-,++,---,----...--,---..,,*)&&')&'(**+,--../00000100/0..,,**(**,-..///.-,,+,+,+,*++++++,,,,,+++**++,+****+******)*())*)*(***********)+*****+*+*+*++++,+,++*+**))''%&&()****+*++++++++,,,,,--,-,,++**)*(*)*)***+++,,-,,,,,,+,+,,,+++********++++*'*,-,-,++,,,+,++,,+,+,,,+,++,+,,++++***)(%&%&(*+++**(()*++,-.--,++*++,,,,-,,+*)*)*)**+,+)*))())*)*()())*****)*)*((&&&))'')()()('')((&&'*))((&'&(&&'()()*****())*)*()(''('*************)*)***)***)***+,,-----,,,,,,+++***)***)*))(**+,-.//0/0///.-,,,,+++**)**+++*+*++++++++++++,,,+,+,++,,,,,++,+,++******)*()'&$$#$#$#%$(')(*+++++**+*)')((('((())**+,,+++++++++,+,+++,,,,+,---,-------,-./..-.-/.//////0..--..//..-,,-,-,-,-,,,------.-...--+-+,-,**(((('''(())++++++,+,+++,++++*+****)))(&'&(''')()(*)*()*+)(&'%%$&$%$&%((*******)**+++++++++'%  !"%),-./0011/-,+++++++++++,+,+++,+-,,,,,,,,+,,--,,,,--/./..--,--.------,-,-,-,,,,+++,,..//.--+,+,+,,-,,*+-0/-*+*++++*'&$##$&(*,--./..--,,+++**+*+++++*++,,,./-,****)**+***,++++****)*******))()'('(&'%''((****+++++++******((&%'*+,++)((*)+*+++++*+**)*)*)))())(*****)*)*()(*)*)*****)***)*)**+++**)*((*+,-,,**)*)+,+)****+******)***++,,++-...,--../////..-,++++*+**)*)**+****)))*'(*++++++,+,+,++*+++,,+,+++**+*+*+*+++++**)+)**++++,+,+,++*+****)****+**&&'*,-,+(*)*)))**++,++*+*****+*+++***,,,++++*+++++*+++**)*+,,,,-,-,-----,-,,++++**)**+++++***+**(*(*,+*)(*)*)****)*****++++*++*+***,,,,,++))))***+,,+,+,,,+,+,,-,,+,++++*****+++,,,,,,+,++++++++++*+,,+++++*+**))******+***++++,,,+,,,++++,-,,++*++,,,,,,,,,,++++,,,,--.--,'"+0#&'''%%$$%&$$#####$$%&()*****)*('#""')*''))('%&$%$%%$#""""%$%%&%$#$$&&'&%()')%(&(''''&(()'+****+*+++,,,+,++*+,,-.--,,+,-,,++,,-----,-+,---.------,,,,,,,-,-,-,,,-,-,,+++++++++,)*$',.+*++*+*++,+,*++,,,,-+,++++++++++++,++,++,,+,,,,,+,,,--,-,,,-,,,,,-,-,,--,-,,,,,++,+,,,,,)+*-----,,,,,,,,,,+,*,,--,,,,,,,,+,+++*++++,+,++***+,--,.-----,--,,-,-,+++,,,+++*+***+,-../////0/000/0//.//./.----..-...-,*+-/120/---,----..-...---,--.//0000///....-.././/.--,-,-..000000///0000111010101000/..-/.///////./././-0111111121211221211110100/000////./..-.--,,---.-.....-....,),.01..//0..-.-.-../////.///....----..//////..--,+*,.000///..........--,,/-,,,,+,,,,,-,,,,+,+,,------.--........-.--,,-.-.--,,,,,-,--,,,,,,----.,-,--,-,,-,-,+--,,++++,--+*+++,,-.----,,,--..,,-,---,-,,,,+,,,--,,++*,++*+)*(****+++****(*+-,++*),+,****)*)*****+++*))()())*++*,++**&)(***)***+**++++++++++***)*'*(**+,------.--,,+++++++*++*+,,+,,,,++**+**++*+)*(++++++++,,,,,,,,,,--.-../////...///..-..../.0/0/0///0//....//./......-.././....//.0000101010111010111222233321123343211021222110100021213132323242323233579:5,+*.3444464433343422344742233323344333444444333323232323221212121211122212110112122111111110000//0/0021200000112121101110101100000000000/0000111/0/0////........---/./././..-.---.......------,.,-,-,-,-,,,,,-,--...----,.-.,.----,,--.///.-*(,/0222..-.-.,-,,------,--...-----,,,,,,,,,,,,---,,,...---.-..../..........-.-../././///00..//00000/////////11101/.0221000///.0//////././/00////0./././////././..../0000/............-.-.-..//0011101////////././/////0010101010101110100000000/0/////0////.///..-.-.---.-.../.......-.-.-.--,,,,,,-/03-*!&*))*,--+***+,,+,,,,,,,+,,,,,+,,+*******++++,,---,,,,+,*+,.,++++,*,-,,,,,,,,++**--,))&&%'%'''())(''(&%&$(*****+*-,,,+*****)()**(*)*(++*******(()))****++,,,++*))***))'&$##$"%&*+--.--,,+++*('%#$%%(*,,--,++(('&'''(')*+++*+)*')**()''&'(+*)(())*****+*++*)*&&&(***+)(()**)*())**)))))**))(**+)(''&'()(***))&&%''((*****+,++*****+*++++***+**++,,+++++++++*)($ !$'+./000..*)'&'**+**)('(''(())(*++*+)*)*)***))()()()()()()&()++++++*'$##'+,.//..+)(*****++*+**********)*)*********)*)+*++++,+,++++++**)************+++++**)*(&()(**+*+****)***)****+******)*)))))*)***)*****)*))')&()****+++*+(&! "%),-/.-+(&(%(*))**+****)(&%###$#%&''('(&'**()(*))))()(('(&'%''(')()()**)*))((*+++****(+******),++****)+****)*)***'()+,-,+*('%$##$$(*,----+*&&&'&)''&''***)*****)*()()()()(')**+*+**))(*))()((((''&''(())*()))))()(('('(()'''(((')))()()')''&%$&''&%%'%%%&&'&(()((''%&&'&%&$##!!$((%""""%')'%%# #('#&&'%&&')(((''&''&$$##$%###"$%%%&''(')'(&&%&$%$&'()*)*(&%&&'&''%%''%!%*,--+))(((&&&&(&%&&$#%)*+)(()(('()))())(*****)*)*))())*************)**)'(())*)++++,,-,,+++++,,+++*+*******))**))*+++,+,+-,-++++***)*****+*+*****+*+++++***+++++*+*++++*)**+***+********++**(**********))(()()(*)))))*(*(((((((())(*))'(''&'('&(&'&'&'&&%&%&&(''&&%&$%#$$%%%%'%&&&$$$%%'%&$$""""#""#"##$#$$%$%%&$%&&&&&('*)))*)***)*)*+,,-,---,+,--,,,,-,---,-,,----...----.-.-...-.--------,,,,,,--,,+-,-,++,++*****++,++++**)+,+)**+*+*++,++*+++++*+)*)***+-,--.-...--,,+,+*)*()*+,.-.-,++*+***++++++++++,++*+*+**+++,+,,,,,,,,,,,,,,,++++*+*+++++***++,--++*++++*********)*')()(*)*()((')))(*(++,*)()*+*+**))'''''(((&&$&*,*(%%#$$%&&%#!!  ! ! "!" !#! !!""!!  "%&%""""!"#!""#"###&%%###$$%%&%&%&%&&))**+******)*))()(*(*(******)++*****+++++++*+*+*++++,,,,,,,,-,-,-,,+++**++,++++,,,,,+++***+,++,,,,+++++*,+++++++,+,+,,,,,,,+,+++++,+,,+++*****++,,,++++*++++,+++,,,,,----,-,,+,,-,,,,,,,,,-,-,---......--,+*)'(')**+,,..0/0/0/00100//./-.-.,-,,,.--,++,,--.--,-,-,-,,,,-.--++*+,.//.----.--,-,,-.--,+**(&&'%'(*++,--.//011101000/..,+((&(+,-/.0//.-,,+,+++++++++,,,,-,,+,+++,+,++*+**+*****))()((**)*)**+*******++**+***+*+*++++++++******)'('(())**+*+*++,+,,,,,,,+,,-,-,,+++*****)*****+++,,,,,,,+-+,+,,,++*+***+*+*++++**,--,,++,,+++++++,+,,-,,,-,,-,,,++++**))(('()*+,,,++)*)*+-,--.-,++*+*+---,,,++**)*)**+,+)+**())*()()((******)*)*))(&'**)')()()((')''%%(***(((&'&%''))*)**)*))*)*)*)*))()(**+******************)*)***+,,.-.--,,,,,,,,+++*++******)*+++--..///////--,,,+++*****,+,*+*+++++++++++,,,,,,+,,,,,,,+,+,++*++*****)))*)(%%#$"##$%'())**++++***)*)*))'''((****+,,,,++*+*++,,,+,+-,,,,,-.----------.......././///0//,+*,-/0100.,,-,-,,,,,-,----.---.-.--,-,,,+))'())((()******+++,+,,+,,++*++++**)()'&'(()()'))))*)&&*,-+*&'&&&'%%$'%(')****)*)**++++,,,++&#"$&*,./001211/-++*++,+++,,,+++++,,,+,,,,,+-,,----,-,--...-.--------,-----,,,-,---,,,--/./..-,+,,,,,,---,,-/-,++++*++*'&$"#%%(*,-.././.-,+++++++++*+++++**+-..--+*(**)****++++***+********)*)*(''(''&'&(())***+++++,++*****+)*'')*+,+*())+*****+++**)+****)**)))(*)***)*)*)*))(*)*)**+)********+++**)*)))+,-,,+*)*(+,+)**+++++++****++*++,,,-..-,--..//0/.-.,,++++********++++**))*)&'*++++,+,+,+,*+++++,,++++*+++++++++++++*******++++-+,++++*+++**)***++**''(*,,+*(********++++,++++++++*+**)(),--++*+*+++*+++++++**+,,,,,,,,,,,-----,,,++*****+++++******)((+,+)*(****+***)*****+*+++*+*+*+++,,,-+*)((((**++,,,,,,,+,+,,----,,,*+*+*+*++++,,,,,,,+++,,,+,*++,,,++++***+**)***)+++**+++++,,,+,,,++*+,-.-,,+,+,+,,,,+*++++,,,,,,-----,'#+0$&(''%%$#%&%$$#"##$$&&(')**+***((%%$&(%''**)(&&%&$%$%$"!"!$$&$%$$$#$$&'''''&(')()'('('()*)****)***+++++)*)*)+,-//..,++,-.--,,,,,--.,-,-.--.----,--,+++,-.----,,,,,,,,,+++++,++,**')+-******)*+---++,+,,,-+,+,+++++++++++++,+,+,++,,,,,,,-,---,-,,,,,-,,,-,,-,,,,,-,,,,,,-,-,,*++,,,,,,,,,,,,,,,++*,,-,,,,,,,,,,++++*+++++++++*)*+-..-----,-,-.-,-,,+,++,-,,+++++**++-..././///0/1/0//////.....--.-../..,,-/00/...-------------------./00000//./....././..--,---././/0000/0010011111000110/0.--..//0//////....-/0111111112122111111100/00000////./-.-.--,,,--.-..........-*-/01..///.../..-.///////0//../-----..///////.-.,++,.00//////.........-.-.-,,,,,,,,,,,,-,,,,,----.--..-.--./-/...---,,,--.-,,,,,,,,---,,+,,--..-,-,,,,,,--,-,,--,+++,,--,++++,,--.------,.-.,,,.,-----,,,,+,,---,,++*+++*+**)))*++++*+***+,,,++**-*+*+**())*********)*)*(*)+,+++*,*+)))***)))++*++*+++*+*+**)*)*()(**++-,-,---.---,,+,++*++++++,+--,++****++*+**(*)++++**++,,,,-,-,-,--.-../////...///..-...-.././//////////.../...../..-..///..-..//000000111010000001212233322/11336430/12221221100001012322122333333323367;92*+-2344435343333332223344333333444623333355432233334332222222231/1111122111101122212111111000000/0000111000001110111111101010100000000000000010/-/0000./././....---../....--,-....//..-.--,-------,,+--,,-,,+,,---.....--..--.----,-,--../.-+),01310..-.---,,-,-,---,--.---.--,,,,,,,,,,+++,.../..--,--.-../..././..-........////0//////.//0/0////////00/100//..0231/0/0/////0////////00/00/////././/0//././/.../0/00//.././././-...---..//0011100/0////.....//////0/0111101011110110001000000//.//0/0/..///....-.----......./././-----.---,,,,-,.-/,*&(*()*,-.,+**++++,+,+,+++,,,,,,,,+*+++*+*++,,,,-,-,-,,++*+,.-,,++++,,-,,,,,,,,,,+,++))&&%'%'&(())'&'&'&&%((*)+++*,,-++**)*((&(')(*)**+*+++*+))')**(*)**++,,,++*(())**)('$&$$%&'*+,--,,,,,+**('%$$$$(*,----++))'('(()(******)(*&(+*(*')(()*((())****+++++**++))')****()')**)*))()())*)))(()'***))'(')()(***)*''&&(((**+++++)********++++*****+-,,++++++++++**'#!"$)+-/010/-*)'((+++)*((')('())*))****)))()**+*)()((((')))'(&')+++++++*&%$(+,.//.-*)(******+*++++***)*****(*)**+**))(((*+,+++,++*+*+****)*******)**+*++++*++**(((('))+++******)*)****+*+*))***)*)***)*)*********))')&)))**++++*+(%" "$)+,.-,**')&(**)**+++**))'&$%#%$%%'&('('(*)(*(*))()()()'(&%%'(''(())***)*()(*++++++***********+++*+*+****))'))*)))**+,-,,+*)(&&%&&**+,-,,*)&%&&&('(&(()))*+********)*(('('()*++,+++**)*()(()))(((''&'((()()()()))((('('''&)('((()()()()((&'&'%&''&%%%%%$&%''(()&('&'&&'%&$%##!!%((%"##$%'''&%$!!$)%$&&&&''(()((&(&&%%%$#$$$##"""$%%&''(()((&&$$$&%&'()***('%%&'&'%%%(('!!%*,-,+(''*(%%%''%&&&##%)*+*('(((')()()()(*++**)*())*)*)*)*****)*****)*(('''(&%)+,,,,,-,,+++++,+++,,+******))****)++++,,,+++,++*******+**++****)+)**++++++++++,++*+++++***+++*+*+*********+**)*********))()))()(*))())*)*))()()*)))(**))('(''''((&&'&&(''&&%&'(''%%$%###$#$$&&'&&%&&$%&&&%&%$"""""""#"###$%$$$%%&%&&&&'')())********+*++,,,,,,,++,---,-,-------,------..---..-.,.-.---.-.-.-.--,,,,-,+++--.,,++++**)++,,,,,+*++*+++*****+++*+++++*+++*+**())*+-,--.....--,,,-,+**)*+++---,+***+*+*++++++++,+,++*****++++++*+++,,,,-,-,-,,++*+*))***++***+,-..,,*+****)****+***)()))****()'(())))*)*++**)****+**))'''(()))((&''*')'&$$$%%&%$"#"  !"! !#" "#!  !""!"!  !#$$"""""##"#$$#"##%%%#$#%%%&%%&%&%''*)**+******)***)))*()()*+**)*****+***+,++++*+***++++,,,+,,,,-,-,-,,,+++*+*++++,+,,,+,+****++++,,,++*+*++++++++++,,,+-,,,,+,+,+++,,,,,++*******++,,,+,+,*++++++++,,,,,------,-,,,,,,+,+,,,,------.---...-,,+((''&(**+,-..//0/0/00100/0//-.-.--,,,.--,,+,+,,-,,,,--,-,-,-,-,,*)(+-./0/.---.-,,-------,,**''&&&((**+,,-./00011010000..++'&$'*,-//00/.-,,,,+++++,*,+,,,--,-,,+,+,+,,,++++**))())*()))*+*********+*+*+*++++++*+++++,++++++*****)))*)()()*,+++++++,,,,,,,++*++,,-,-++*+*+******+++-,,+++,,-,,+,+,*+*****+*+***++++--,++++++++**())+,-----,-----,,++**))))'('**,,,,-,+)))++--.---,++)((*./-,,-++*******+++*+**)*)*))''''(*)+*********)(*()()()((((')()'&'*)('('((('((()))*)*))((*+**)*)***)****+*+***+****)**+++*))*)*++,--.---,,,,,,++,,+++++++++*+++,,-../././//.-,+++++***+*++,++++,,+,+,+++++,,,,,+,,,,,,,,,+,++*++***)*)*)*)(%%#$"#"$$'()**++++********)*((''()***+,,,,,,++++++,,,,+,+,,,,----------.-...-..../././/0/-*((,-/0111/.,-,---,,,,--------,-.-----,,++**))()'(()***+++*++,,,+,,,++++++***)''%&')*+)*((()**(%'*--,*(*&&&&&%%&&('()*****)**++,+,,,+*%#"%&*,-//11210/-++*++,++,,,-,,+,+,+,,,,,+,,-,,,--------.-.....-.--,-,-----,,,,,.-.---.-.-/--,,+,+,+,,,,---,,,++++++++*('$$$&%(*+,-././--,+*+*++++++,+,++)(),-.--,*))***+*++,++**++**)*****)*(*''''%&&'&((()**++++,+,++*))*+,+*())+++**)*)******+++******)*)*)*(((*****)*)*)***(***)**+********++++****()*++,--+****++*))(*+,++**++****++,,---.---.-..//0/.-.,,+,+***++*+***+++)***()%'*++++,+,+++,+++++,,,++++*+*+**++++++++*******++,,,,,++++*+*+**)**+++++))**+,+*()))())***+++++++,++++++****)-,,+++++**+*++++,+,+++,+,+,++++,,,--.-.--+,+***++++*+***+****)+++)*)*********)***++++++******+,,,,-+*&&&&&**+,---,,,,,-+---,--,,,++++***++,+,,-,-,-,,+,,,+,*++,,,++++*********+*+++*++++,+++,+++++*)*,...-,+,+,+,+,++*++++,+,,,,-----,)#+0 \ No newline at end of file diff --git a/isis/tests/data/pds2isis/30i001ci_cropped.qub b/isis/tests/data/pds2isis/30i001ci_cropped.qub new file mode 100644 index 0000000000000000000000000000000000000000..5b2e153e8750dce63d0ca00832cdb8d7262ef1de GIT binary patch literal 9396 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 QS+-NBPc52HAMU98A3$!0F8}}l literal 0 HcmV?d00001 diff --git a/isis/tests/data/pds2isis/BILtestData_cropped.LBL b/isis/tests/data/pds2isis/BILtestData_cropped.LBL new file mode 100644 index 0000000000..682ee73864 --- /dev/null +++ b/isis/tests/data/pds2isis/BILtestData_cropped.LBL @@ -0,0 +1,250 @@ +PDS_VERSION_ID = PDS3 +LABEL_REVISION_NOTE = "2009-01-26, S. Lundeen, + 2011-01-07, S. Lundeen" +DATA_SET_ID = "CH1-ORB-L-M3-4-L1B-RADIANCE-V2.0" +PRODUCT_ID = "M3G20081118T222604_V02_RDN" +RECORD_TYPE = UNDEFINED + +MISSION_ID = "CH1" +MISSION_NAME = "CHANDRAYAAN-1" +INSTRUMENT_HOST_ID = "CH1-ORB" +INSTRUMENT_HOST_NAME = "CHANDRAYAAN-1 ORBITER" +INSTRUMENT_NAME = "MOON MINERALOGY MAPPER" +INSTRUMENT_ID = M3 +TARGET_NAME = "MOON" +TARGET_TYPE = "SATELLITE" +MISSION_PHASE_NAME = "PRIMARY MISSION" +PRODUCT_TYPE = CALIBRATED_IMAGE +PRODUCT_CREATION_TIME = 2010-12-23T07:32:00 +START_TIME = 2008-11-18T22:26:04 +STOP_TIME = 2008-11-18T22:28:04 +SPACECRAFT_CLOCK_START_COUNT = "2/599338.975" +SPACECRAFT_CLOCK_STOP_COUNT = "2/599459.153" +ORBIT_NUMBER = 00141 +PRODUCT_VERSION_TYPE = "ACTUAL" +PRODUCT_VERSION_ID = "2.0" +SOURCE_PRODUCT_ID = "M3G20081118T222604_V01_L0.IMG" + +PRODUCER_INSTITUTION_NAME = "JET PROPULSION LABORATORY" +SOFTWARE_NAME = "m3g_l1b_v04.exe" +SOFTWARE_VERSION_ID = "04" +DESCRIPTION = "M3 Level 1B data product which contains +pixel located, radiometrically-calibrated data." + +/* Calibrated Image Instrument and Observation Parameters */ + +SOLAR_DISTANCE = 0.988788923392 +INSTRUMENT_MODE_ID = "GLOBAL" +DETECTOR_TEMPERATURE = 160.71 +CH1:SWATH_WIDTH = 304 +CH1:SWATH_LENGTH = 1182 +CH1:SPACECRAFT_YAW_DIRECTION = "FORWARD" +CH1:ORBIT_LIMB_DIRECTION = "DESCENDING" +SPACECRAFT_ORIENTATION = (0.770443460000,-0.229314980000, + 0.000000000000) + +/* Spectral calibration parameters and radiometric gain factor data */ + +CH1:SPECTRAL_CALIBRATION_FILE_NAME = "M3G20081211_RDN_SPC.TAB" +CH1:RAD_GAIN_FACTOR_FILE_NAME = "M3G20081211_RDN_GAIN.TAB" +CH1:GLOBAL_BANDPASS_FILE_NAME = "M3G20081211_RDN_BPF.IMG" + +/* Description of Radiance-corrected image file */ + +^IMAGE = "M3G20081118T222604_V02_RDN_cropped.IMG" +OBJECT = IMAGE + RECORD_TYPE = FIXED_LENGTH + RECORD_BYTES = 3125 + FILE_RECORDS = 1 + + LINES = 1 + LINE_SAMPLES = 304 + SAMPLE_TYPE = PC_REAL + SAMPLE_BITS = 32 + UNIT = "W/(m^2 um sr)" + BANDS = 1 + BAND_STORAGE_TYPE = LINE_INTERLEAVED + LINE_DISPLAY_DIRECTION = DOWN + SAMPLE_DISPLAY_DIRECTION = RIGHT + +END_OBJECT = IMAGE +END + + +/* Description of Radiance-corrected header file */ + +OBJECT = RDN_HDR_FILE + ^RDN_ENVI_HEADER = "M3G20081118T222604_V02_RDN.HDR" + RECORD_TYPE = VARIABLE_LENGTH + FILE_RECORDS = 0 + + OBJECT = RDN_ENVI_HEADER + INTERCHANGE_FORMAT = "ASCII" + BYTES = 31502 + HEADER_TYPE = ENVI + DESCRIPTION = "Header file for compatibility with the commercial software + package ENVI." + END_OBJECT = RDN_ENVI_HEADER + +END_OBJECT = RDN_HDR_FILE + +/* Description of selenolocation data file */ + +OBJECT = LOC_FILE + ^LOC_IMAGE = "M3G20081118T222604_V02_LOC.IMG" + RECORD_TYPE = FIXED_LENGTH + RECORD_BYTES = 7296 + FILE_RECORDS = 0 + + OBJECT = LOC_IMAGE + LINES = 1182 /* (same as RDN image) */ + LINE_SAMPLES = 304 /* (same as RDN image) */ + SAMPLE_TYPE = PC_REAL + SAMPLE_BITS = 64 + BANDS = 0 + BAND_STORAGE_TYPE = LINE_INTERLEAVED + BAND_NAME = ("Longitude", + "Latitude", + "Radius") + LINE_DISPLAY_DIRECTION = DOWN + SAMPLE_DISPLAY_DIRECTION = RIGHT + END_OBJECT = LOC_IMAGE + +END_OBJECT = LOC_FILE + +/* Description of selenolocation header file */ + +OBJECT = LOC_HDR_FILE + ^LOC_ENVI_HEADER = "M3G20081118T222604_V02_LOC.HDR" + RECORD_TYPE = VARIABLE_LENGTH + FILE_RECORDS = 0 + + OBJECT = LOC_ENVI_HEADER + INTERCHANGE_FORMAT = "ASCII" + BYTES = 372 + HEADER_TYPE = ENVI + DESCRIPTION = "Header file for compatibility with the commercial + software package ENVI." + END_OBJECT = LOC_ENVI_HEADER + +END_OBJECT = LOC_HDR_FILE + +/* Description of observation geometry data file */ + +OBJECT = OBS_FILE + ^OBS_IMAGE = "M3G20081118T222604_V02_OBS.IMG" + RECORD_TYPE = FIXED_LENGTH + RECORD_BYTES = 12160 + FILE_RECORDS = 0 + + OBJECT = OBS_IMAGE + LINES = 1182 /* (same as RDN image) */ + LINE_SAMPLES = 304 /* (same as RDN image) */ + SAMPLE_TYPE = PC_REAL + SAMPLE_BITS = 32 + BANDS = 0 + BAND_STORAGE_TYPE = LINE_INTERLEAVED + BAND_NAME = ("To-Sun AZM", + "To-Sun Zenith", + "To-Inst AZM", + "To-Inst Zenith", + "Phase-angle", + "To-Sun Path Length", + "To-Inst Path Length", + "Facet Slope", + "Facet Aspect", + "Facet Cos i") + LINE_DISPLAY_DIRECTION = DOWN + SAMPLE_DISPLAY_DIRECTION = RIGHT + END_OBJECT = OBS_IMAGE + +END_OBJECT = OBS_FILE + +/* Description of observation geometry header file */ + +OBJECT = OBS_HDR_FILE + ^OBS_ENVI_HEADER = "M3G20081118T222604_V02_OBS.HDR" + RECORD_TYPE = VARIABLE_LENGTH + FILE_RECORDS = 0 + + OBJECT = OBS_ENVI_HEADER + INTERCHANGE_FORMAT = "ASCII" + BYTES = 707 + HEADER_TYPE = ENVI + DESCRIPTION = "Header file for compatibility with the commercial + software package ENVI." + END_OBJECT = OBS_ENVI_HEADER + +END_OBJECT = OBS_HDR_FILE + +/* Description of UTC timing data file */ + +OBJECT = UTC_FILE + ^UTC_TIME_TABLE = "M3G20081118T222604_V02_TIM.TAB" + RECORD_TYPE = FIXED_LENGTH + RECORD_BYTES = 57 + FILE_RECORDS = 0 /* (same as RDN image) */ + + OBJECT = UTC_TIME_TABLE + NAME = "UTC OBSERVATION TIMING DATA" + INTERCHANGE_FORMAT = "ASCII" + ROWS = 1182 /* (same as RDN image) */ + COLUMNS = 4 + ROW_BYTES = 57 + OBJECT = COLUMN + COLUMN_NUMBER = 1 + NAME = "LINE NUMBER" + DATA_TYPE = ASCII_INTEGER + START_BYTE = 1 + BYTES = 6 + FORMAT = "I6" + DESCRIPTION = "Record number for each RDN image line" + END_OBJECT = COLUMN + + OBJECT = COLUMN + COLUMN_NUMBER = 2 + NAME = "UTC_TIME" + DATA_TYPE = TIME + START_BYTE = 8 + BYTES = 26 + FORMAT = "A26" + DESCRIPTION = "UTC Time for the middle of the integration period + for each RDN image line expressed as + YYYY-MM-DDTHH:MM:SS.SSSSSS" + END_OBJECT = COLUMN + + OBJECT = COLUMN + COLUMN_NUMBER = 3 + NAME = "YEAR" + DATA_TYPE = CHARACTER + START_BYTE = 35 + BYTES = 4 + FORMAT = "I4" + DESCRIPTION = "Decimal Day of Year (DDOY) Year reference + extracted from the earliest time of each RDN + image line" + END_OBJECT = COLUMN + + OBJECT = COLUMN + COLUMN_NUMBER = 4 + NAME = "DDOY" + DATA_TYPE = DATE + START_BYTE = 40 + BYTES = 16 + FORMAT = "F16.12" + DESCRIPTION = "Decimal Day of Year represented as the number of + days elapsed since 00:00 UTC of January 1 of the + year associated with the time stamp of the first + line of the RDN image file. DDOY is expressed + using seventeen characters where 1-3 = three + characters that contain the integer number of + days; 4 = a decimal point; 5-16 = twelve charact- + ers after the decimal for the fractional part of + the day of year value." + END_OBJECT = COLUMN + + END_OBJECT = UTC_TIME_TABLE + +END_OBJECT = UTC_FILE + +END diff --git a/isis/tests/data/pds2isis/BIPtestData_cropped.LBL b/isis/tests/data/pds2isis/BIPtestData_cropped.LBL new file mode 100644 index 0000000000..47dc06cb49 --- /dev/null +++ b/isis/tests/data/pds2isis/BIPtestData_cropped.LBL @@ -0,0 +1,250 @@ +PDS_VERSION_ID = PDS3 +LABEL_REVISION_NOTE = "2009-01-26, S. Lundeen, + 2011-01-07, S. Lundeen" +DATA_SET_ID = "CH1-ORB-L-M3-4-L1B-RADIANCE-V2.0" +PRODUCT_ID = "M3G20081118T222604_V02_RDN" +RECORD_TYPE = UNDEFINED + +MISSION_ID = "CH1" +MISSION_NAME = "CHANDRAYAAN-1" +INSTRUMENT_HOST_ID = "CH1-ORB" +INSTRUMENT_HOST_NAME = "CHANDRAYAAN-1 ORBITER" +INSTRUMENT_NAME = "MOON MINERALOGY MAPPER" +INSTRUMENT_ID = M3 +TARGET_NAME = "MOON" +TARGET_TYPE = "SATELLITE" +MISSION_PHASE_NAME = "PRIMARY MISSION" +PRODUCT_TYPE = CALIBRATED_IMAGE +PRODUCT_CREATION_TIME = 2010-12-23T07:32:00 +START_TIME = 2008-11-18T22:26:04 +STOP_TIME = 2008-11-18T22:28:04 +SPACECRAFT_CLOCK_START_COUNT = "2/599338.975" +SPACECRAFT_CLOCK_STOP_COUNT = "2/599459.153" +ORBIT_NUMBER = 00141 +PRODUCT_VERSION_TYPE = "ACTUAL" +PRODUCT_VERSION_ID = "2.0" +SOURCE_PRODUCT_ID = "M3G20081118T222604_V01_L0.IMG" + +PRODUCER_INSTITUTION_NAME = "JET PROPULSION LABORATORY" +SOFTWARE_NAME = "m3g_l1b_v04.exe" +SOFTWARE_VERSION_ID = "04" +DESCRIPTION = "M3 Level 1B data product which contains +pixel located, radiometrically-calibrated data." + +/* Calibrated Image Instrument and Observation Parameters */ + +SOLAR_DISTANCE = 0.988788923392 +INSTRUMENT_MODE_ID = "GLOBAL" +DETECTOR_TEMPERATURE = 160.71 +CH1:SWATH_WIDTH = 304 +CH1:SWATH_LENGTH = 1182 +CH1:SPACECRAFT_YAW_DIRECTION = "FORWARD" +CH1:ORBIT_LIMB_DIRECTION = "DESCENDING" +SPACECRAFT_ORIENTATION = (0.770443460000,-0.229314980000, + 0.000000000000) + +/* Spectral calibration parameters and radiometric gain factor data */ + +CH1:SPECTRAL_CALIBRATION_FILE_NAME = "M3G20081211_RDN_SPC.TAB" +CH1:RAD_GAIN_FACTOR_FILE_NAME = "M3G20081211_RDN_GAIN.TAB" +CH1:GLOBAL_BANDPASS_FILE_NAME = "M3G20081211_RDN_BPF.IMG" + +/* Description of Radiance-corrected image file */ + +^IMAGE = "M3G20081118T222604_V02_RDN_cropped.IMG" +OBJECT = IMAGE + RECORD_TYPE = FIXED_LENGTH + RECORD_BYTES = 3125 + FILE_RECORDS = 1 + + LINES = 1 + LINE_SAMPLES = 304 + SAMPLE_TYPE = PC_REAL + SAMPLE_BITS = 32 + UNIT = "W/(m^2 um sr)" + BANDS = 1 + BAND_STORAGE_TYPE = SAMPLE_INTERLEAVED + LINE_DISPLAY_DIRECTION = DOWN + SAMPLE_DISPLAY_DIRECTION = RIGHT + +END_OBJECT = IMAGE +END + + +/* Description of Radiance-corrected header file */ + +OBJECT = RDN_HDR_FILE + ^RDN_ENVI_HEADER = "M3G20081118T222604_V02_RDN.HDR" + RECORD_TYPE = VARIABLE_LENGTH + FILE_RECORDS = 0 + + OBJECT = RDN_ENVI_HEADER + INTERCHANGE_FORMAT = "ASCII" + BYTES = 31502 + HEADER_TYPE = ENVI + DESCRIPTION = "Header file for compatibility with the commercial software + package ENVI." + END_OBJECT = RDN_ENVI_HEADER + +END_OBJECT = RDN_HDR_FILE + +/* Description of selenolocation data file */ + +OBJECT = LOC_FILE + ^LOC_IMAGE = "M3G20081118T222604_V02_LOC.IMG" + RECORD_TYPE = FIXED_LENGTH + RECORD_BYTES = 7296 + FILE_RECORDS = 0 + + OBJECT = LOC_IMAGE + LINES = 1182 /* (same as RDN image) */ + LINE_SAMPLES = 304 /* (same as RDN image) */ + SAMPLE_TYPE = PC_REAL + SAMPLE_BITS = 64 + BANDS = 0 + BAND_STORAGE_TYPE = SAMPLE_INTERLEAVED + BAND_NAME = ("Longitude", + "Latitude", + "Radius") + LINE_DISPLAY_DIRECTION = DOWN + SAMPLE_DISPLAY_DIRECTION = RIGHT + END_OBJECT = LOC_IMAGE + +END_OBJECT = LOC_FILE + +/* Description of selenolocation header file */ + +OBJECT = LOC_HDR_FILE + ^LOC_ENVI_HEADER = "M3G20081118T222604_V02_LOC.HDR" + RECORD_TYPE = VARIABLE_LENGTH + FILE_RECORDS = 0 + + OBJECT = LOC_ENVI_HEADER + INTERCHANGE_FORMAT = "ASCII" + BYTES = 372 + HEADER_TYPE = ENVI + DESCRIPTION = "Header file for compatibility with the commercial + software package ENVI." + END_OBJECT = LOC_ENVI_HEADER + +END_OBJECT = LOC_HDR_FILE + +/* Description of observation geometry data file */ + +OBJECT = OBS_FILE + ^OBS_IMAGE = "M3G20081118T222604_V02_OBS.IMG" + RECORD_TYPE = FIXED_LENGTH + RECORD_BYTES = 12160 + FILE_RECORDS = 0 + + OBJECT = OBS_IMAGE + LINES = 1182 /* (same as RDN image) */ + LINE_SAMPLES = 304 /* (same as RDN image) */ + SAMPLE_TYPE = PC_REAL + SAMPLE_BITS = 32 + BANDS = 10 + BAND_STORAGE_TYPE = SAMPLE_INTERLEAVED + BAND_NAME = ("To-Sun AZM", + "To-Sun Zenith", + "To-Inst AZM", + "To-Inst Zenith", + "Phase-angle", + "To-Sun Path Length", + "To-Inst Path Length", + "Facet Slope", + "Facet Aspect", + "Facet Cos i") + LINE_DISPLAY_DIRECTION = DOWN + SAMPLE_DISPLAY_DIRECTION = RIGHT + END_OBJECT = OBS_IMAGE + +END_OBJECT = OBS_FILE + +/* Description of observation geometry header file */ + +OBJECT = OBS_HDR_FILE + ^OBS_ENVI_HEADER = "M3G20081118T222604_V02_OBS.HDR" + RECORD_TYPE = VARIABLE_LENGTH + FILE_RECORDS = 0 + + OBJECT = OBS_ENVI_HEADER + INTERCHANGE_FORMAT = "ASCII" + BYTES = 707 + HEADER_TYPE = ENVI + DESCRIPTION = "Header file for compatibility with the commercial + software package ENVI." + END_OBJECT = OBS_ENVI_HEADER + +END_OBJECT = OBS_HDR_FILE + +/* Description of UTC timing data file */ + +OBJECT = UTC_FILE + ^UTC_TIME_TABLE = "M3G20081118T222604_V02_TIM.TAB" + RECORD_TYPE = FIXED_LENGTH + RECORD_BYTES = 57 + FILE_RECORDS = 0 /* (same as RDN image) */ + + OBJECT = UTC_TIME_TABLE + NAME = "UTC OBSERVATION TIMING DATA" + INTERCHANGE_FORMAT = "ASCII" + ROWS = 1182 /* (same as RDN image) */ + COLUMNS = 4 + ROW_BYTES = 57 + OBJECT = COLUMN + COLUMN_NUMBER = 1 + NAME = "LINE NUMBER" + DATA_TYPE = ASCII_INTEGER + START_BYTE = 1 + BYTES = 6 + FORMAT = "I6" + DESCRIPTION = "Record number for each RDN image line" + END_OBJECT = COLUMN + + OBJECT = COLUMN + COLUMN_NUMBER = 2 + NAME = "UTC_TIME" + DATA_TYPE = TIME + START_BYTE = 8 + BYTES = 26 + FORMAT = "A26" + DESCRIPTION = "UTC Time for the middle of the integration period + for each RDN image line expressed as + YYYY-MM-DDTHH:MM:SS.SSSSSS" + END_OBJECT = COLUMN + + OBJECT = COLUMN + COLUMN_NUMBER = 3 + NAME = "YEAR" + DATA_TYPE = CHARACTER + START_BYTE = 35 + BYTES = 4 + FORMAT = "I4" + DESCRIPTION = "Decimal Day of Year (DDOY) Year reference + extracted from the earliest time of each RDN + image line" + END_OBJECT = COLUMN + + OBJECT = COLUMN + COLUMN_NUMBER = 4 + NAME = "DDOY" + DATA_TYPE = DATE + START_BYTE = 40 + BYTES = 16 + FORMAT = "F16.12" + DESCRIPTION = "Decimal Day of Year represented as the number of + days elapsed since 00:00 UTC of January 1 of the + year associated with the time stamp of the first + line of the RDN image file. DDOY is expressed + using seventeen characters where 1-3 = three + characters that contain the integer number of + days; 4 = a decimal point; 5-16 = twelve charact- + ers after the decimal for the fractional part of + the day of year value." + END_OBJECT = COLUMN + + END_OBJECT = UTC_TIME_TABLE + +END_OBJECT = UTC_FILE + +END diff --git a/isis/tests/data/pds2isis/M3G20081118T222604_V02_RDN_cropped.IMG b/isis/tests/data/pds2isis/M3G20081118T222604_V02_RDN_cropped.IMG new file mode 100644 index 0000000000000000000000000000000000000000..4a20e7033d1da4aab345992c77fa54c5f3233279 GIT binary patch literal 3125 zcmaJ?dsGzX6<2!{4+^O^icuP;_RAU>h@l~VNw~#1?xcZ?+D~e*(dQ_4$N9{@Ki=#%P(rDa$U#NsCiJk{ub06Ws2fVgsFb(!Q&pIB2&TbM@4wv&N@-Koum3Uf29EcPe;< zP)>|n5uKpWdxDLiMTMH$$iRanqC#ox8bvxNQ3${*0;u{VsA8a1R94nt;tZTwW#bdf zTmnla^3WR9W&~?BQ0)T>C2(;GtVKu2?*9X@1_5s11zv#^RpTX@AE5;~dD-hysY2Y4 zSewmkwi<2mv6Ss)Fr{ySwZz(trdZm(fDoF?>qJ4JL?#OrIP|#Cls9$(c-0Hi%i(|& zF?1Md<2ahTeF;Jxhie?w7V03BeU98b&wZ>bmHqLCeaZDn3hqc%O zr)(F3%kPk6)EjOWRDq|D)>Oes7XehSq7#|oSYteui>_>fCmqyOEnT#$sWf6{Eli?Y z94$y5%H1571eYTKp#DH_mgtH#0h(tf1JY@|)GivElOij$&D1D#qTswpq7z$S^mYm^ zyXc~VzA%2WB2t?OYzQr@Kdm>OwOGs+YK8{Z$ZUqY4W z{(0j#W_lhoZR!9zx(uVYL&sUEs|3HO@z4!)2q9{{7P`6A%OwFu=|3mI`t*r+OOVlW zO5}9v&P_%997GWvscJ;Hke{su+ZgyiyeHSGs-pTKxqkO4>HhQq8FuhH@^D`3st>~J z$?a>;$*SrHWMTb95>>pQs{X-sa`)P4;wT&-U<@`N;T=Qc`jL0euq3CdxUh@dzAcYuAdw@ zT1^&2o+c$OLh_y*C1E|zk_!t@k(qd$M0jgR)SmsMZd(PJx$hH_I`9D5)Zb5vZtNk1 zsUSlmtB9@SG)XP5B^~bWCwmGHlY)oG$d`HBi7T3r`o8-}&BJo?=Aw$= zs=9+Da^F1i2Q7D*;&u6d2j_;qxmAB*Z z@j4%N?I+>=n=63-F$?12GQjs~JkIIy80HzGH_j_!alwN@SaSY86s+oq z*T=ldm+X81MFSZu+L?vds%~Jx0)`*-h7nWiyW!POT4VUt<@kDj1or9{jbSr3;+@Mq z@pk!a3|n4+tAAGoRjP=OzwzQ9%a>z*Of^oPz~iThZ{y6x?;!c{E&Ti#VzSgY0z(^|Kl>w)|2!HFb?k}8I2p%YvElR)!|>*mGjOS54xUrvaNm|85cb#)7yA{% zK<@3snN<&y5A7y!e$52z{Et{%T6+;*>wFU4`MVMC@3-Up4L2cLcA#~$f}7k8aAn6O zn6;)7NzcOgd&{ZWik$1u?G8JJ`I)JZg{r73?3i5 zF}zJd5)8X=6Mp|%8pc%q7ALO!4Sr=^fDKcIV0!F&|AnhH{!VMhB=;}vb)>Utod4nv zhajqf^Ismm6q$=fxNL(AE9!5-H<2bB-nBh$85)N5*-zo~-ILK^`UnqyI3CX>jlgqj z+vBr_C79T&2CR`sU|mEj9GBAteZ2&@biNiQeZ3wo_N{}go5{H2t9^L8cr&h^+Z%U2 zGGI<&8kR<{g$COgY*pA5cNK3)<}I6($0k|uf+rGdbNOWJzve+?-6QA}Qwt-@w!&Y& z9f;Ado`KUHU&kM!? +SPACECRAFT_NAME = MARS_GLOBAL_SURVEYOR +MISSION_PHASE_NAME = AB-1 +TARGET_NAME = MARS +INSTRUMENT_ID = MOC-WA +PRODUCER_ID = MGS_MOC_TEAM +DATA_SET_ID = MGS-M-MOC-NA/WA-2-DSDP-L0-V1.0 +PRODUCT_CREATION_TIME = 1999-01-15T20:40:59 +SOFTWARE_NAME = "makepds 1.3" +UPLOAD_ID = moc_p024_v1.sasf +PRODUCT_ID = AB-1-024/01 +START_TIME = 1997-10-20T10:58:37.460000 +IMAGE_TIME = 1997-10-20T10:58:37.460000 +STOP_TIME = 1997-10-20T11:03:44.660000 +SPACECRAFT_CLOCK_START_COUNT = 561812335:32 +SPACECRAFT_CLOCK_STOP_COUNT = N/A +FOCAL_PLANE_TEMPERATURE = 213.1 +GAIN_MODE_ID = 1A +OFFSET_MODE_ID = "5" +LINE_EXPOSURE_DURATION = 100.0 +DOWNTRACK_SUMMING = 4 +CROSSTRACK_SUMMING = 4 +EDIT_MODE_ID = "672" +FILTER_NAME = RED +RATIONALE_DESC = "OLYMPUS MONS SPECIAL RED WIDE ANGLE" +Object = IMAGE + LINES = 5 + LINE_SAMPLES = 640 + LINE_PREFIX_BYTES = 0 + LINE_SUFFIX_BYTES = 0 + SAMPLE_TYPE = UNSIGNED_INTEGER + SAMPLE_BITS = 8 + SAMPLE_BIT_MASK = 255 + CHECKSUM = 65147507 +End_Object +End +���������������������������������������������������������|}{{xzyx{wwxxxzyuuvuttvttrqrqqpqrrqqqpqrrnonooonmnmnnllkkjkhjjijkkkikhjliigghjhiighhgfffgeeefdhfeceefcbbacabbbcbbb^^________a__^`^^^___``_^_]^]]^^\]\]\\\Z[\[Z[[YZZWYZYZZXVVVWWVVVWYWVWWXUUUVVVWXYVUSUUTTSTUTUUUUVVTTSSSSSSSSUSSRRRRRQQQRSRQRPQQPPPPPQPPONNNOOOONNOOOONNNNNMNNNNLMMMMMLKKKKKKKKIIIIJJJJJJJJJKJJKIGHKHGHGGGGGGGFGGGFFGGGGGFFFGGGHGGGFGGEFDFEDDDCCCCBCCBCBA?@BBA@@@???>??????@??>>>>>===>=======>>>????978::::;9888899:9988:77767656653333223334343313333333332221000000000//0//0001110//.---,,,,+,+*)(('&&%%%%$$##!"!!!! �������������������������������������������������������}}}{|{xzzwywxwxvwxwvuuspttsuusoppqqpqrqrqqpppopoonlmlmmlnmlkkhkjikljljkijkihhhiihhgggfffffefeeedfddcdddcce`ba`abbb``]^^__]___^a_^]`]]^_]^^^^^_^^]]^^\^]]\\\[[[ZY[ZYZZXYXYZ[]XVX[ZWUVVWWVWWWVWUUVVVWXYZUSTWURTVUUUUUUUTTSSSSSSSRTSSSSSSSRQQRRQPQPPQPPQPPQPOONNOOOOOONOOOONONNNMNNMNLLMLLLKJKJKKKJKIIIIJIIIIIIIIJIIJIIJIIHHGHGGHGGGHGGFGGGFGGGFGGGGHHGFGFFEEDEDDCCCDCCCCCBBBA@@CBBA@@??@??>>?>??????>>>>>>>=>>==>=?>>?@@@@=;;=@?====<<<===>?@@?;9::;;;;;;=<:<:;:9998899::988888775455643333234444443122333223222111000000000/0000002210/.-.----,,,,+*)(('&&%%%$$$#"""!!!! ��������������������������������������������������������~}}}{{z|xyxuvtwxxwvxuututrssrtsssspppnrsrrqqpppoooommmmmmmmljjkgjkiijjjhijhiihhhijgfgggdeefeeeeeedeccccdcbabcccca``__a^^^^`___^_`_^^_^^^^]\]]\^a]][[\]\^^^]\\[\\\[[ZYZYYYYYYZ[YYWYYYWXXWWVWVWUWVVVVVWVWWVVVVUSVYWVVVVVVTTTSSSSTSSTRRRSSSSRRQRRQPQOPQPPPPPPOONOOPPPOOOOOOOONONMNMMNMMLLMLLKKJKJKKKKKIIIJJJJJIIJIIJIIJHHIHHHHGGGGGGGGHGGGGGGGGGGFGGGGIJIFEFFEEEFEDDCDDDDDCCBBBA@ACCBABA@?@@@???>????????????>>>>>>>>?>?????@???>?>=>======<>>>=>??=;;;<<<;;:::=<;::::9889:998978987544554333333344554313223322222111100000000000000002210/...-.--,,,,+*)(('&&&&%%%$#"""!!!! �������������������������������������������������������}~~{y{xwxxvuuwvwyyzxuuusststrsrrtrppprsrrqrqpoopoonmnlmlklkjjkgjkiijjkghgijihihghjhghfeggededeheacbccdbaa```baaccaa``^^a__]_a`_`^]^`]^^_^\]]]]^\^]\\\Z]\]]\\\]]\[ZZYYYYZYYZZZYYX[[YXZZVTUVUVUWVVVVVVVVWVVVVVUVXWWWWVWVUTTSSTSTSSTRRRRRRRRRQRRRPQPQQOOPOPQOOONNOOPOOOONONNNNNMNMMNMMLLMLKKKJKJKKKKKJJIJJJJJIIJIIJIIIHHIHGGHGGGGFGFFHGGGGHHHHGGGHHGGGGGFGGHFGFGFEEEEEEDDCDCCBA@ACCCBCBAAAAA@@@?@@??????????@??????>@?>>??>>>>?>?>====>=>>==>=<===<<==<<<;;::9<;<::::98899::9987998643444444433334455422222221111111111011011000001012210//..-.--,,,++**((''&&&%%$###"""!!! ����������������������������������������������������~~�~~~{zywsvvuwtvxw|zxuuuvvvyttuqrqrrsrqrtqqpqqpoopoonmmmmlllljkkgijiijhighhjklihfgggggfggiggeeeedeecabbfb``a``bbaaabbaa^^`_`^`__^`]\]`^]__^]]^^]^[Z[\[\\^\\[[[[]]\ZZZYZ[YYXYZ[ZYYXZZYZZZXWWWVVVWVVVVVVVWWVVVVWVWXWWWVWWWUUUTTTTSSSTRRRSRRSSRRRSRQQPQRQQPPPQPOOOOOOONOONOONNMNNMNMMMMMLLMLLLKJKKKKKKKJJJJKJJJIJJJIKIIIHHIHIHIHIIEEFFFGGGGGGHGHHHHJIIIHHGGFGGFGGHGFEEEFEEEEFEDDCABDCCBCBBABABAAAAAA@@@???@????>?????>?>?>?>>>>>?>?>>>==========<<;<<<<=<<;;;;::;;<;;::988889;;9898888644445456443334445332212111112222221211121000110122100/.....-,,,,++)(('''&&%%$$##"""!!!  \ No newline at end of file diff --git a/isis/tests/data/pds2isis/ff17_cropped.img b/isis/tests/data/pds2isis/ff17_cropped.img new file mode 100644 index 0000000000..4a9164fb45 --- /dev/null +++ b/isis/tests/data/pds2isis/ff17_cropped.img @@ -0,0 +1 @@ +UekgcgZR\jqocURbkjea\]]edN=]bbikbcaL@JddYTU^`]WPWSPaaWa_IT]`^\eolaa]_jlgciijeYTF\Q@?ShjbahmkeXjw}~tXTdbboi]^Zelvva +DATA_SET_ID = MGN-V-RDRS-5-MIDR-FULL-RES-V1.0 +SPACECRAFT_NAME = MAGELLAN +MISSION_PHASE_NAME = PRIMARY_MISSION +TARGET_NAME = VENUS +IMAGE_ID = "F-MIDR.30S325;301" +INSTRUMENT_NAME = "RADAR SYSTEM" +Object = IMAGE + LINES = 1 + LINE_SAMPLES = 1024 + SAMPLE_TYPE = UNSIGNED_INTEGER + SAMPLE_BITS = 8 + NOTE = "DN = INT((MIN(MAX(RV,-20),30) + 20) * 5) + 1, where RV = radar crossection/area divided by the Muhleman Law and converted to decibels. Muhleman Law multiplicative constant of 0.0118 was used. (Note: Intention was to use 0.0188.)" +End_Object +Object = IMAGE_MAP_PROJECTION_CATALOG + ^DATA_SET_MAP_PROJECT_CATALOG = DSMAPF.LBL + DATA_SET_ID = MGN-V-RDRS-5-MIDR-FULL-RES-V1.0 + IMAGE_ID = "F-MIDR.30S325;301" + MAP_PROJECTION_TYPE = SINUSOIDAL + MAP_RESOLUTION = 1407.4 + MAP_SCALE = 75 + MAXIMUM_LATITUDE = -28.9092 + MAXIMUM_LONGITUDE = 322.8903 + MINIMUM_LATITUDE = -29.6357 + MINIMUM_LONGITUDE = 322.0367 + X_AXIS_PROJECTION_OFFSET = -40708 + Y_AXIS_PROJECTION_OFFSET = 4096 + X_AXIS_FRAMELET_OFFSET = 3 + Y_AXIS_FRAMELET_OFFSET = 1 + A_AXIS_RADIUS = 6051.92 + B_AXIS_RADIUS = 6051.92 + C_AXIS_RADIUS = 6051.92 + FIRST_STANDARD_PARALLEL = 0.0 + SECOND_STANDARD_PARALLEL = N/A + POSITIVE_LONGITUDE_DIRECTION = EAST + CENTER_LATITUDE = 0.0 + CENTER_LONGITUDE = 325.3829 + REFERENCE_LATITUDE = N/A + REFERENCE_LONGITUDE = N/A + X_AXIS_FIRST_PIXEL = 1 + Y_AXIS_FIRST_PIXEL = 1 + X_AXIS_LAST_PIXEL = 1024 + Y_AXIS_LAST_PIXEL = 1024 + MAP_PROJECTION_ROTATION = 0.0 +End_Object +End diff --git a/isis/tests/data/pds2isis/gaspra_nims_hires_radiance_cropped.fit b/isis/tests/data/pds2isis/gaspra_nims_hires_radiance_cropped.fit new file mode 100644 index 0000000000000000000000000000000000000000..22c9123d04a765b28ba2e41a315a6df3e5e5b503 GIT binary patch literal 28800 zcmeHPU2ogi5zYT73JkhH?YNOdQXiJm1_>?E3LTMBL^|sv2)49zZF5&51(I^&zO+yM zPesw!{;L9=xs*gorfj8g9=sg_v`G5u+?g|H=3ZL^Ii@w}82~S!;BcV=qcFG#qiGCD z2*;-DK%98N*o(#mV5)a?E#oye>-7bwY z*RVTV@Z8-n@}oMsi)tafJxx)ylF}$?jlI=~3bZ5PB}hMc7{^LC1j$A06oG14V7P zcKPk;(TbfM9@#hYCjNPZtc>BapIj|rBx-UcGB88^QMX-P+XO>A%XA#GZ&N(Fde7_` zedrG{35}r)O2zijWh6bGc_T53yo&^;eoXn1w<^1~9J}4OkK2fM+%vncQ6gD%0V-`Q z2ma+8ttNTw0f0p;W@izw`r1azZhb>XRXoM!KeDIPV?ej|6)QuOlwJ`6Ph^%L>F& zg)omXVq1=*Q`@ApLcIBpy6Yaat%HM-cHj*0MLn3)ow^6;H_6hQz&!Aim~@@0Yvz9u zlN@$i@44>>2H_2L%ws&({2dzaL=;obJVPbEAcg+$3~;FL1tWZB9=|Xv#~EP%$T5cR zbQkd!I$6i-pT{D)_Jd29O}vEC4fez6+)t>+Mlg%QbMZ8T1Jicg;i*OOwM~mE^*SEK zBf_)`5-?Nqb8jxVG_9`H?~uO*hYFRhhgoJ(!tQn~@NBg2*gP{jVCjP#ft9q-ObIZc zRJrfyADtL&3^3xg>MC@-coumXV8!*KOOb#~yZf-{_fFe!^`T36s&ZIW51VDBR#ujX z6{p>M11Mu$b+HU$zJ)SCY5EmRKzRLuv`^wS>t(H8fG4p2+>Zu;dXXic>}$2ulB$%n zmaA#cHRX973xB19spV2~Y%>y{@5hzVLNthXLOMV^tyXK+>#cIFs%k5LPv#R;Zkle} z5c6)6p6yPD^t@qT^SN5zu&==Bb?c?=UbTL&;W>p7Uilpm@_ z!Pv-;kJE}w`A;yAnIB_KxJ!k&xiWgrhr;}*HlXrx>W^?OT*3K&xeE=TYxJ$Rr+N?V z8yZ;oDVy7_(OLTI(jE8NTM6qcLrwLfL}xuh)J9;1=4ZC8w~sJQat%+8C$xk z45IK_1XP=z1MJ&<3v2U)Dhtkzdp4{UBU}$NSi-{$k@f10gj=sKZ|As(CO2f_ML3y+ zpQ&`ECd$=%zyF5Nk96FC&@t5Qu7R%`^`%COexrr_{WARoxuS(T5Zo!?-WT(a5<8wp z7r2s2tQB6{!1}Uwtm8S^;=95dVM$E)tqbJz{kT}#-QKPGS8J7(L)@QMK90pD23M|{ zXc}r|-Ikih?sK3%-Ls9B24D70$ zF5-KFn>{7J+raoDi!cjgU+x_6514hl_lSp{Hdl1_q+~_4a*O;o;&zfGdC1W<9rjtoggp*>+zEbb*)o+pMcw{M~|=`I^Jq#osM> znXiP0{2Ayn`CF?gTC=67Ir`T8&Fv=9X9L&ItJ@J?;E}(`TT?l#)mmHp{TjTbzx7t5 zx-A}e;w`-qTpq zv&fKb?<*Sn(9d4o{PW+N=eNvJf6E+2em^wc z<{U-%n`7v{Xxz6x+jX8@#}(PL>w9+{_t0}}&Rc}f&zJ#bfEi#0m;q*h8F)wrs6Cb% zDDm@4)6!*Y$XdS&q))|{B<(7`@1ODa_CMRJer0T`i(!U6AhJjk zzF;Hj9moG$|MNgLo8Id8Ng2Za7qCOYEdUx>d{Kl zJNKO~?dH$pmrU?0Gr$Zm1Iz$3zzi%Ic=@NF|H>zGz#3o;JPHl``N@-)d@={D0oK4{ z(7@mS^ShUPG6$>y*1#jsz!N^00cL<1U#_~V$@T>g(y2sbQ5qV?z z-COuwSz_eNZ(5^o_u8?6BiFw%TmY?_H!#xNzp;`#UoZpA05iZ0FaylM|H{Ct>wo;f zCv(6WU=2J94g78Ir&oM32dn|sz+=$BZ+`pq6`#xjYk)QI2sH4WKdxbTW`G%B2ABb6 KfEi#0p8OXj;7pJJ literal 0 HcmV?d00001 diff --git a/isis/tests/data/pds2isis/gaspra_nims_hires_radiance_cropped.lbl b/isis/tests/data/pds2isis/gaspra_nims_hires_radiance_cropped.lbl new file mode 100644 index 0000000000..7ed01020dd --- /dev/null +++ b/isis/tests/data/pds2isis/gaspra_nims_hires_radiance_cropped.lbl @@ -0,0 +1,151 @@ +pDS_VERSION_ID = PDS3 +DD_VERSION_ID = "PDSCAT1R82" +LABEL_REVISION_NOTE = "LABEL VERSION 0" + +/* File Characteristics */ +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 2880 +FILE_RECORDS = 10 + +/* Pointers to Data Objects */ +^HEADER = "gaspra_nims_hires_radiance_cropped.fit" +^SPECTRAL_QUBE = ("gaspra_nims_hires_radiance_cropped.fit",3) + +/* Identification Data Elements */ +DATA_SET_ID = "GO-A-NIMS-4-GASPRACUBE-V1.0" +PRODUCT_ID = "GASPRA-HIRES-NIMS-RAD" +PRODUCT_NAME = "GASPRA-HIRES-NIMS-RAD" +INSTRUMENT_HOST_NAME = "GALILEO ORBITER" +INSTRUMENT_NAME = "NEAR INFRARED MAPPING SPECTROMETER" +INSTRUMENT_ID = "NIMS" +TARGET_NAME = "951 GASPRA" +START_TIME = 1991-10-29T22:20:56 +STOP_TIME = 1991-10-29T22:28:15 +START_JULIAN_DATE_VALUE = 2448559.4312 +STOP_JULIAN_DATE_VALUE = 2448559.4362 +SPACECRAFT_CLOCK_START_COUNT = "1073178.04.0" +SPACECRAFT_CLOCK_STOP_COUNT = "1073185.25.0" +PRODUCT_CREATION_TIME = 2012-07-20T07:30:00 +PRODUCT_TYPE = "GEOMED_CALIBRATED_IMAGE" + +/* Descriptive Data Elements */ +SPICE_FILE_NAME = ("s970311a.bsp", + "naif0008.tls", + "mips010314.tpc", + "mk00062a.tsc") +MISSION_NAME = "GALILEO" +MISSION_PHASE_NAME = "GASPRA ENCOUNTER" +OBSERVATION_TYPE = "NIMS FIXED MAP" +OBSERVATION_ID = "GAPNGASPAT01" +TARGET_CENTER_DISTANCE = 4376.69 +TARGET_HELIOCENTRIC_DISTANCE = 329616030.0 +SC_SUN_POSITION_VECTOR = +(-76005976.0, 3.2051194e+008, -11761397.0) +TARGET_SUN_POSITION_VECTOR = +(-76001854.0, 3.2051851e+008, -11761393.0) +TARGET_GEOCENTRIC_DISTANCE = 410618250.0 +SC_EARTH_POSITION_VECTOR = +(44028901.0, 4.0807449e+008, -11759634.0) +EARTH_TARGET_POSITION_VECTOR = +(-44033022.0, -4.0808106e+008, 11759631.0) +HORIZONTAL_PIXEL_SCALE = 1285.2 +VERTICAL_PIXEL_SCALE = 1285.2 +PHASE_ANGLE = 49.07 +PROCESSING_HISTORY_TEXT = "This data is derived from DN values + in PDS file GAP016TN.QUB and calibrated with values from + the PDS file G1GNGLOBAL01A_MSY04.IOF" + +/* Data Object Definitions */ +OBJECT = HEADER + BYTES = 5760 + HEADER_TYPE = "FITS" + INTERCHANGE_FORMAT = "BINARY" + RECORDS = 2 + DESCRIPTION = "FITS format defined in + NASA/Science Office Standards Technology 100-1.0" +END_OBJECT = HEADER + +OBJECT = SPECTRAL_QUBE + AXES = 3 + AXIS_NAME = (SAMPLE, LINE, BAND) + ISIS_STRUCTURE_VERSION = "2.1" + /* Core Description */ + CORE_ITEMS = (100, 3, 3) + CORE_NAME = "CALIBRATED SPECTRAL RADIANCE" + CORE_ITEM_BYTES = 4 + CORE_ITEM_TYPE = IEEE_REAL + CORE_BASE = 0.000000 + CORE_MULTIPLIER = 1.000000 + CORE_UNIT = "uWATT*CM**-2*SR**-1*uM**-1" + CORE_NULL = -1.0 + CORE_VALID_MINIMUM = 0.0 + CORE_LOW_REPR_SATURATION = -32767.0 + CORE_LOW_INSTR_SATURATION = -32766.0 + CORE_HIGH_REPR_SATURATION = -32765.0 + CORE_HIGH_INSTR_SATURATION = -32764.0 + + SUFFIX_ITEMS = (0,0,0) + SUFFIX_BYTES = 4 + + GROUP = BAND_BIN + BANDS = 17 + BAND_BIN_UNIT = MICROMETER + BAND_BIN_FILTER_NUMBER = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17) + BAND_BIN_BAND_NUMBER = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17) + BAND_BIN_CENTER = (0.7360, 0.8750, 1.0546, 1.3326, 1.6110, 1.8914, 2.1728, + 2.4529, 2.7382, 3.0178, 3.3012, 3.5839, 3.8670, 4.1503, 4.4343, 4.7164, + 4.9988) + BAND_BIN_WIDTH = (0.0125, 0.0125, 0.0250, 0.0250, 0.0250, 0.0250, 0.0250, + 0.0250, 0.0250, 0.0250, 0.0250, 0.0250, 0.0250, 0.0250, 0.0250, 0.0250, + 0.0250) + BAND_BIN_BASE = (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) + BAND_BIN_MULTIPLIER = (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) + END_GROUP = BAND_BIN +END_OBJECT = SPECTRAL_QUBE + +OBJECT = EXTENSION_WAVELENGTH_HEADER + BYTES = 43200 + HEADER_TYPE = "FITS" + INTERCHANGE_FORMAT = "BINARY" + RECORDS = 15 + DESCRIPTION = "This extension contains + the wavelength values, per pixel, for the image array." +END_OBJECT = EXTENSION_WAVELENGTH_HEADER + +OBJECT = EXTENSION_WAVELENGTH_IMAGE + LINE_SAMPLES = 100 + LINES = 66 + BANDS = 17 + SAMPLE_BITS = 32 + SAMPLE_TYPE = "IEEE_REAL" + LINE_DISPLAY_DIRECTION = "UP" + SAMPLE_DISPLAY_DIRECTION = "RIGHT" + UNIT = "MICROMETERS" +END_OBJECT = EXTENSION_WAVELENGTH_IMAGE + +OBJECT = EXTENSION_ERROR_HEADER + BYTES = 43200 + HEADER_TYPE = "FITS" + INTERCHANGE_FORMAT = "BINARY" + RECORDS = 15 + DESCRIPTION = "This extension contains + the radiance precision values, per pixel, for the image + array." +END_OBJECT = EXTENSION_ERROR_HEADER + +OBJECT = EXTENSION_ERROR_IMAGE + LINE_SAMPLES = 100 + LINES = 66 + BANDS = 17 + SAMPLE_BITS = 32 + SAMPLE_TYPE = "IEEE_REAL" + LINE_DISPLAY_DIRECTION = "UP" + SAMPLE_DISPLAY_DIRECTION = "RIGHT" + UNIT = "uWATT*CM**-2*SR**-1*uM**-1" +END_OBJECT = EXTENSION_ERROR_IMAGE + +END diff --git a/isis/tests/data/pds2isis/ldem_4_cropped.img b/isis/tests/data/pds2isis/ldem_4_cropped.img new file mode 100644 index 0000000000000000000000000000000000000000..ceee1300a129a594c7703f84fd00dc3bf09841e0 GIT binary patch literal 5805 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 + AntibloomingStateFlag = On + + # BiasStripMean value converted back to 12 bit. + BiasStripMean = 72.666664 + CompressionRatio = 7.280160 + CompressionType = Lossy + DataConversionType = Table + DelayedReadoutFlag = No + FlightSoftwareVersionId = 1.4 + GainModeId = 29 + GainState = 2 + ImageTime = 2008-158T06:35:01.632 + InstrumentDataRate = 182.783997 + OpticsTemperature = (7.537419, -999.000000 ) + ReadoutCycleIndex = 11 + ShutterModeId = WacOnly + SummingMode = 2 + InstrumentModeId = Sum2 + SpacecraftClockCount = 1/1591427565.113 + ReadoutOrder = 0 + End_Group + + Group = Archive + DataSetId = CO-S-ISSNA/ISSWA-2-EDR-V1.0 + ImageNumber = 1591427565 + ObservationId = IOSIC_071RI_SUBMU17LP001_SI + ProductId = 1_W1591427565.118 + End_Group + + Group = BandBin + FilterName = CL1/CL2 + OriginalBand = 1 + Center = 633.837 + Width = 285.938 + End_Group + + Group = Kernels + NaifFrameCode = -82361 + LeapSecond = $base/kernels/lsk/naif0010.tls + TargetAttitudeShape = ($base/kernels/pck/pck00009.tpc, + $cassini/kernels/pck/cpck21Mar2013.tpc) + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $cassini/kernels/ck/08157_08162ra.bc, + $cassini/kernels/fk/cas_v40.tf) + Instrument = Null + SpacecraftClock = $cassini/kernels/sclk/cas00156.tsc + InstrumentPosition = (Table, + $cassini/kernels/spk/080819R_SCPSE_08141_0820- + 6.bsp) + InstrumentAddendum = $cassini/kernels/iak/IssWAAddendum004.ti + ShapeModel = RingPlane + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 1 + End_Group + + Group = Mapping + ProjectionName = Planar + TargetName = Saturn + UpperLeftCornerX = -141593057.92723 + UpperLeftCornerY = 141593057.92723 + PixelResolution = 5899710.746968 + Scale = 0.5 + RingLongitudeDirection = CounterClockwise + RingLongitudeDomain = 360 + MinimumRingRadius = 140016000.0 + MaximumRingRadius = 198012526.14923 + MinimumRingLongitude = 0.0 + MaximumRingLongitude = 360.0 + CenterRingRadius = 169014263.07462 + CenterRingLongitude = 180.0 + End_Group + + Group = AlphaCube + AlphaSamples = 512 + AlphaLines = 512 + AlphaStartingSample = 0.5 + AlphaStartingLine = 0.5 + AlphaEndingSample = 512.5 + AlphaEndingLine = 512.5 + BetaSamples = 512 + BetaLines = 512 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = "ISS Prefix Pixels" + StartByte = 70145 + Bytes = 12288 + Records = 512 + ByteOrder = Lsb + Association = Lines + + Group = Field + Name = OverclockPixels + Type = Double + Size = 3 + End_Group +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 82433 + Bytes = 64 + Records = 1 + ByteOrder = Lsb + TimeDependentFrames = (-82000, 1) + ConstantFrames = (14082361, -82361, -82000) + ConstantRotation = (-4.60766564250016e-04, 2.53890149205477e-04, + 0.99999986161697, -0.99999915166539, + -0.001218461310317, -4.60456881761331e-04, + 0.0012183442362362, -0.99999922544561, + 2.54451360053302e-04) + CkTableStartTime = 266006166.80677 + CkTableEndTime = 266006166.80677 + CkTableOriginalSize = 1 + Description = "Created by spiceinit" + Kernels = ($cassini/kernels/ck/08157_08162ra.bc, + $cassini/kernels/fk/cas_v40.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 82497 + Bytes = 56 + Records = 1 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 266006166.80677 + SpkTableEndTime = 266006166.80677 + SpkTableOriginalSize = 1.0 + Description = "Created by spiceinit" + Kernels = $cassini/kernels/spk/080819R_SCPSE_08141_08206.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 82553 + Bytes = 64 + Records = 1 + ByteOrder = Lsb + TimeDependentFrames = (10016, 1) + CkTableStartTime = 266006166.80677 + CkTableEndTime = 266006166.80677 + CkTableOriginalSize = 1 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc, + $cassini/kernels/pck/cpck21Mar2013.tpc) + SolarLongitude = 345.09078852762 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 82617 + Bytes = 56 + Records = 1 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 266006166.80677 + SpkTableEndTime = 266006166.80677 + SpkTableOriginalSize = 1.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 108478 + Bytes = 18692 +End_Object + +Object = NaifKeywords + BODY699_RADII = (60268.0, 60268.0, 54364.0) + BODY_FRAME_CODE = 10016 + INS-82361_CL1_CL2_FOCAL_LENGTH = 200.77 + INS-82361_PIXEL_PITCH = 0.012 + INS_-82361_FRAME_ID = 14082361 + INS-82361_TRANSX = (0.0, 0.012, 0.0) + INS-82361_TRANSY = (0.0, 0.0, 0.012) + INS-82361_ITRANSS = (0.0, 83.333333333333, 0.0) + INS-82361_ITRANSL = (0.0, 0.0, 83.333333333333) + INS-82361_BORESIGHT_LINE = 512.5 + INS-82361_BORESIGHT_SAMPLE = 512.5 + INS-82361_K1 = 6.2e-05 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 82673 + Bytes = 25805 +End_Object +End +�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������N�,���������������������������������������������}��H����������������������������������������������/G��[�����������������������������������������4_�.�\�!����������������������������������������edyt���\�����������������������������������������d�;�?������������������������������������������J4�B����� ��DV������������������������������������������_ %d�������������������������������������*8 +�`��������������������������������������������k PI����f � �gp��������������������������������?�|Ih������7 +H�����������������������������������h��� ��7��6�� +�w\ ������������������������������������y?��� Z�X�#���������������������������������i�o��fG����G��Q��������������������������������{"��/?�W����L�T����������������������������l��P�K� +P��"%rv;E<�:� �����������������������������bWJ���uGQ + + +� +$���������������������������������T�}�y[_uaSSz���#������������������������������������\���yW���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@`@@x@�X@�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������P >Po�?oQo�!����� Z�?��|��v�?�Q`� ��G�������A=�}��>��-ݵ�A�K<���/A�R[Ұ� ���*�sAF�G;G�s �L;�?`vg2�@��-ݵ�A�D�9�}�?|��ޓ+�?){{�Sz�?���M<��?G�TR]�>-y<\&�>}���T%?��-ݵ�A!�L�aQ�Al�K�����b ������2��_@ A��S� @ �P�] +@��-ݵ�APDS_VERSION_ID = PDS3 + +/* FILE CHARACTERISTICS */ +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 536 +FILE_RECORDS = 518 + +/* POINTERS TO DATA OBJECTS */ +^IMAGE_HEADER = (W1591427565_1.IMG, 1) +^TELEMETRY_TABLE = (W1591427565_1.IMG, 6) +^LINE_PREFIX_TABLE = (W1591427565_1.IMG, 7) +^IMAGE = (W1591427565_1.IMG, 7) + +/* IDENTIFICATION DATA ELEMENTS */ +ANTIBLOOMING_STATE_FLAG = ON +BIAS_STRIP_MEAN = 22.666666 +CALIBRATION_LAMP_STATE_FLAG = OFF +COMMAND_FILE_NAME = trigger_64217_2.ioi +COMMAND_SEQUENCE_NUMBER = 64217 +DARK_STRIP_MEAN = 34.250000 +DATA_CONVERSION_TYPE = TABLE +DATA_SET_ID = CO-S-ISSNA/ISSWA-2-EDR-V1.0 +DELAYED_READOUT_FLAG = NO +DESCRIPTION = N/A +DETECTOR_TEMPERATURE = -87.895164 +EARTH_RECEIVED_START_TIME = 2008-159T21:27:45.869 +EARTH_RECEIVED_STOP_TIME = 2008-159T21:27:48.493 +ELECTRONICS_BIAS = 112 +EXPECTED_MAXIMUM = (15.112300, 66.646202) +EXPECTED_PACKETS = 40 +EXPOSURE_DURATION = 20.000000 +FILTER_NAME = (CL1, CL2) +FILTER_TEMPERATURE = 3.907178 +FLIGHT_SOFTWARE_VERSION_ID = 1.4 +GAIN_MODE_ID = "29 ELECTRONS PER DN" +IMAGE_MID_TIME = 2008-158T06:35:01.622 +IMAGE_NUMBER = 1591427565 +IMAGE_OBSERVATION_TYPE = SUPPORT +IMAGE_TIME = 2008-158T06:35:01.632 +INSTRUMENT_DATA_RATE = 182.783997 +INSTRUMENT_HOST_NAME = "CASSINI ORBITER" +INSTRUMENT_ID = ISSWA +INSTRUMENT_MODE_ID = SUM2 +INSTRUMENT_NAME = "IMAGING SCIENCE SUBSYSTEM WIDE ANGLE" +INST_CMPRS_PARAM = (0, 0, 41, 0) +INST_CMPRS_RATE = (1.105110, 1.098877) +INST_CMPRS_RATIO = 7.280160 +INST_CMPRS_TYPE = LOSSY +LIGHT_FLOOD_STATE_FLAG = ON +METHOD_DESC = ISSPT2.6.2;Saturn-Rings;CIRS_071RI_SUBMU17LP- + 001_new +MISSING_LINES = N/A +MISSING_PACKET_FLAG = NO +MISSION_NAME = CASSINI-HUYGENS +MISSION_PHASE_NAME = TOUR +OBSERVATION_ID = IOSIC_071RI_SUBMU17LP001_SI +OPTICS_TEMPERATURE = (7.537419, -999.000000) +ORDER_NUMBER = 4 +PARALLEL_CLOCK_VOLTAGE_INDEX = 9 +PREPARE_CYCLE_INDEX = 0 +PRODUCT_CREATION_TIME = 2008-160T02:09:16.000 +PRODUCT_ID = 1_W1591427565.118 +PRODUCT_VERSION_TYPE = FINAL +READOUT_CYCLE_INDEX = 11 +RECEIVED_PACKETS = 39 +SENSOR_HEAD_ELEC_TEMPERATURE = 2.988467 +SEQUENCE_ID = S41 +SEQUENCE_NUMBER = 8 +SEQUENCE_TITLE = S41 +SHUTTER_MODE_ID = WACONLY +SHUTTER_STATE_ID = ENABLED +SOFTWARE_VERSION_ID = "ISS 11.00 05-24-2006" +SPACECRAFT_CLOCK_CNT_PARTITION = 1 +SPACECRAFT_CLOCK_START_COUNT = 1591427565.113 +SPACECRAFT_CLOCK_STOP_COUNT = 1591427565.118 +START_TIME = 2008-158T06:35:01.612 +STOP_TIME = 2008-158T06:35:01.632 +TARGET_DESC = Saturn-Rings +TARGET_LIST = N/A +TARGET_NAME = SATURN +TELEMETRY_FORMAT_ID = S&ER3 +VALID_MAXIMUM = (16380, 4095) + +Object = IMAGE_HEADER + INTERCHANGE_FORMAT = ASCII + HEADER_TYPE = VICAR2 + BYTES = 2680 + RECORDS = 1 + ^DESCRIPTION = VICAR2.TXT +End_Object + +Object = TELEMETRY_TABLE + INTERCHANGE_FORMAT = BINARY + ROWS = 1 + COLUMNS = 2 + ROW_BYTES = 536 + + Object = COLUMN + NAME = EXTENDED_ISS_SCIENCE_HEADER + BIT_DATA_TYPE = BINARY + START_BYTE = 1 + BYTES = 60 + + Object = BIT_COLUMN + NAME = CAMERA + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 1 + BITS = 1 + DESCRIPTION = "Camera that generated packet. Valid values: 0:NAC and + 1:WAC." + End_Object + + Object = BIT_COLUMN + NAME = SUMMATION_MODE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 2 + BITS = 2 + DESCRIPTION = "Camera summation mode. Valid values: 01:1X1, 10:2X2 and + 11:4X4." + End_Object + + Object = BIT_COLUMN + NAME = COMPRESSION_MODE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 4 + BITS = 2 + DESCRIPTION = "Image compression mode. Valid values: 00:no + compression, 01:lossless, 10:lossy, and 11:illegal." + End_Object + + Object = BIT_COLUMN + NAME = CONVERSION + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 6 + BITS = 2 + DESCRIPTION = "12-to-8_BIT_CONVERSION_MODE. Valid values: 00:no + conversion, 01:look up table, 10:use 8 least significant + bits, 11:illegal." + End_Object + + Object = BIT_COLUMN + NAME = CONTINUATION_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 8 + BITS = 1 + DESCRIPTION = "For the packet from which this telemetry header was + Extracted: the first line of this packet is a + continuation of a line begun in the previous packet. + Valid value: 0:not a continuation and 1:continuation." + End_Object + + Object = BIT_COLUMN + NAME = HEADER_TYPE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 9 + BITS = 2 + DESCRIPTION = "Indicates whether the header is standard or extended. + Valid values: 00:standard, 01:illegal, 10:illegal and + 11:extended." + End_Object + + Object = BIT_COLUMN + NAME = GAIN_MODE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 11 + BITS = 2 + DESCRIPTION = "Camera gain state. Valid values: 00: gain 0 or about + 215 e/DN, 01: gain 1 or about 95 e/DN, 10: gain 2 or + about 29 e/DN, and 11: gain 3 or about 12 e/DN." + End_Object + + Object = BIT_COLUMN + NAME = FILTER1 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 13 + BITS = 4 + DESCRIPTION = "Position of filter wheel one. NAC filter wheel 1 Pos + Name 1 CL1 2 Red (650W) 3 BL1 (445W) 4 + UV2 (300W) 5 UV1 (255W) 6 IRP0 7 P120 8 + P60 9 P0 10 HAL (656N) 11 IR4 (977LP) 12 + IR2 (867W) WAC filter wheel 1 Pos Name 1 CL1 2 + IR3 (952W) 3 IR4 (977LP) 4 IR5 (1025LP) 5 + CB3 (938N) 6 MT3 (889N) 7 CB2 (751N) 8 MT2 + (727N) 9 IR2 (867W) " + End_Object + + Object = BIT_COLUMN + NAME = FILTER2 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 17 + BITS = 4 + DESCRIPTION = "Position of filter wheel two. There are 12 filters for + narrow angle camera and 7 for wide angle camera. NAC + filter wheel 2 Pos Name 1 CL2 2 GRN (562W) 3 + UV3 (340W) 4 BL2 (440M) 5 MT2 (727N) 6 CB2 + (751N) 7 MT3 (889N) 8 CB3 (938N) 9 MT1 + (619N) 10 CB1 (635N) 11 IR3 (952W) 12 IR1 + (757W) WAC filter wheel 2 1 CL2 2 RED (650W) 3 + GRN (562W) 4 BL1 (445W) 5 VIO (430SP) 6 + HAL (656N) 7 IRP90 8 IRP0 9 IR1 (757W)" + End_Object + + Object = BIT_COLUMN + NAME = PACKET_LINE_NUMBER + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 21 + BITS = 12 + DESCRIPTION = "For the packet from which this telemetry header was + extracted, the line number of the first line in the + packet. May refer to a partial line if the first line + has been continued from the preceding packet." + End_Object + + Object = BIT_COLUMN + NAME = LAST_PACKET_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 33 + BITS = 1 + DESCRIPTION = "Indicates for the packet from which this telemetry + header was extracted, whether the current packet is the + last for the image. Valid value: 0:not the last and + 1:the last." + End_Object + + Object = BIT_COLUMN + NAME = SPARE + BIT_DATA_TYPE = N/A + START_BIT = 34 + BITS = 2 + DESCRIPTION = Unused. + End_Object + + Object = BIT_COLUMN + NAME = LOSSY_PARAMETERS + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 36 + BITS = 13 + DESCRIPTION = "Lossy compression parameter settings: Bits 0-6 - number + of blocks per group = this value *2 + 1 Bits 7-10 + - compression rate table element number Bit 11 + - algorithm Bit 12 - block type" + End_Object + + Object = BIT_COLUMN + NAME = SPARE + BIT_DATA_TYPE = N/A + START_BIT = 49 + BITS = 1 + DESCRIPTION = Unused. + End_Object + + Object = BIT_COLUMN + NAME = CALIBRATION_LAMP_STATE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 50 + BITS = 1 + DESCRIPTION = "The lamp state. Valid values: 0:off and 1:on" + End_Object + + Object = BIT_COLUMN + NAME = LIGHTFLOOD_MODE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 51 + BITS = 1 + DESCRIPTION = "CCD Light Flood mode. Valid values: 0:on and 1:off." + End_Object + + Object = BIT_COLUMN + NAME = TCE_STATE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 52 + BITS = 2 + DESCRIPTION = "The state of the temperature control electronics. + Valid values: 00:off, 10:on, 01:off/regulate and + 11:on/regulate." + End_Object + + Object = BIT_COLUMN + NAME = OPTICS_HEATER_1_STATE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 54 + BITS = 1 + DESCRIPTION = "Optics heater one indicator. Valid values: 0:on and + 1:off." + End_Object + + Object = BIT_COLUMN + NAME = OPTICS_HEATER_2_STATE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 55 + BITS = 1 + DESCRIPTION = "Optics heater two indicator. Valid values: 0:on and + 1:off." + End_Object + + Object = BIT_COLUMN + NAME = ANTIBLOOMING_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 56 + BITS = 1 + DESCRIPTION = "Antiblooming state flag indicator. Valid values: 0:on + and 1:off." + End_Object + + Object = BIT_COLUMN + NAME = PREPARE_INDEX + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 57 + BITS = 4 + DESCRIPTION = "Prepare table index for the current image." + End_Object + + Object = BIT_COLUMN + NAME = READOUT_INDEX + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 61 + BITS = 4 + DESCRIPTION = "Readout table index for the current image." + End_Object + + Object = BIT_COLUMN + NAME = COMMUTATED_TABLE_ID + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 65 + BITS = 4 + DESCRIPTION = "Certain tables are commutated in this science header. + This field identifies the table being commutated. Valid + values: 0000:Exposure table, 0001:Prepare table and + 0010:Readout table." + End_Object + + Object = BIT_COLUMN + NAME = COMMUTATED_TABLE_ELEMENT + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 69 + BITS = 12 + DESCRIPTION = "The element number in the above table whose value is in + the next field." + End_Object + + Object = BIT_COLUMN + NAME = COMMUTATED_TABLE_ELEMENT_CONTENTS + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 81 + BITS = 16 + DESCRIPTION = "The value of the table element identified in the + previous field." + End_Object + + Object = BIT_COLUMN + NAME = IMAGE_NUMBER + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 97 + BITS = 16 + DESCRIPTION = "This field holds the image number since Power On Reset + (POR). A zero here indicates that no images have been + returned since POR. Value starts at 1 and proceeds to + 32767 and recycles to 1." + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_1 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 113 + BITS = 16 + DESCRIPTION = "Value of the +50V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_2 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 129 + BITS = 16 + DESCRIPTION = "Value of the +30V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_3 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 145 + BITS = 16 + DESCRIPTION = "Value of the +28V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_4 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 161 + BITS = 16 + DESCRIPTION = "Value of the +15V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_5 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 177 + BITS = 16 + DESCRIPTION = "Value of the -15V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_6 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 193 + BITS = 16 + DESCRIPTION = "Value of the +5V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_1 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 209 + BITS = 16 + DESCRIPTION = "CCD TEMPERATURE" + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_2 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 225 + BITS = 16 + DESCRIPTION = OPTICS_1_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_3 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 241 + BITS = 16 + DESCRIPTION = OPTICS_2_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_4 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 257 + BITS = 16 + DESCRIPTION = OPTICS_3_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_5 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 273 + BITS = 16 + DESCRIPTION = OPTICS_4_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_6 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 289 + BITS = 16 + DESCRIPTION = EFC_1_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_7 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 305 + BITS = 16 + DESCRIPTION = EFC_2_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_8 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 321 + BITS = 16 + DESCRIPTION = "MAIN ELECTRONICS TEMPERATURE" + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = CURRENT + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 337 + BITS = 16 + DESCRIPTION = "Instrument current." + UNIT = AMPERES + End_Object + + Object = BIT_COLUMN + NAME = TRIGGER_ID + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 353 + BITS = 16 + DESCRIPTION = "The command id of the last command triggered." + End_Object + + Object = BIT_COLUMN + NAME = COMMAND_COUNT + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 369 + BITS = 16 + DESCRIPION = "Number of commands since POR. The number starts at 0 + and proceeds to 32767 and recycles to 0." + End_Object + + Object = BIT_COLUMN + NAME = UPLOAD_NUMBER + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 385 + BITS = 16 + DESCRIPTION = "The number of the current upload. Starts with 1 and + proceeds to 32767 then recycles to 1." + End_Object + + Object = BIT_COLUMN + NAME = UPLOAD_EMPTY_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 401 + BITS = 1 + DESCRIPTION = "Indicates whether upload memory is empty. Valid values: + 0:not empty and 1:empty." + End_Object + + Object = BIT_COLUMN + NAME = COLD_START_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 402 + BITS = 1 + DESCRIPTION = "Indicates whether a cold start occurred in last + housekeeping period. Valid values: 0:no cold start and + 1:cold start." + End_Object + + Object = BIT_COLUMN + NAME = WARM_START_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 403 + BITS = 1 + DESCRIPTION = "Indicates whether a warm start occurred in last + housekeeping period. Valid values: 0:no cold start and + 1:warm start." + End_Object + + Object = BIT_COLUMN + NAME = LOSSY_TEST_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 404 + BITS = 1 + DESCRIPTION = "Indicates whether the lossy self-test is okay. Valid + values: 0:not okay and 1:okay." + End_Object + + Object = BIT_COLUMN + NAME = UPLOAD_LOADING_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 405 + BITS = 1 + DESCRIPTION = "Indicates if upload memory is loading. Valid values: + 0:not loading and 1:loading." + End_Object + + Object = BIT_COLUMN + NAME = CAMERA_READOUT_ORDER + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 406 + BITS = 1 + DESCRIPTION = "Indicates whether the NAC or the WAC is being read out + first. Valid value: 0:NAC first and 1:WAC first." + End_Object + + Object = BIT_COLUMN + NAME = SPARE + BIT_DATA_TYPE = N/A + START_BIT = 407 + BITS = 2 + DESCRIPTION = "Not used." + End_Object + + Object = BIT_COLUMN + NAME = EXPOSURE_INDEX + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 409 + BITS = 8 + DESCRIPTION = "An index into the exposure table for the current image. + Valid values are 0 through 63." + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_7 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 417 + BITS = 16 + DESCRIPTION = "High reference voltage from the Housekeeping Data + Electronics (HDE) - (VREF_HI)" + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_8 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 433 + BITS = 16 + DESCRIPTION = "Low reference voltage from the Housekeeping Data + Electronics (HDE) - (VREF_LO)" + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = SPARE + BIT_DATA_TYPE = N/A + START_BIT = 449 + BITS = 32 + DESCRIPTION = "Not used." + End_Object + End_Object + + Object = COLUMN + NAME = NULL_PADDING + DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BYTE = 61 + BYTES = 475 + End_Object +End_Object + +Object = LINE_PREFIX_TABLE + INTERCHANGE_FORMAT = BINARY + ROWS = 512 + COLUMNS = 7 + ROW_BYTES = 24 + ROW_SUFFIX_BYTES = 512 + + Object = COLUMN + NAME = LINE_NUMBER + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 1 + BYTES = 2 + DESCRIPTION = "The image line number of this record. Maintained at proper + value even through data gaps." + End_Object + + Object = COLUMN + NAME = LAST_VALID_PIXEL + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 3 + BYTES = 2 + DESCRIPTION = "Sample number of the last valid pixel in this line not + artificially set to zero due to missing data (sample 1 is + defined as the leftmost image pixel of this line). Set to + zero for missing lines. Set to 1024, 512 or 256 for complete + lines." + End_Object + + Object = COLUMN + NAME = FIRST_VALID_PIXEL_SEG1 + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 5 + BYTES = 2 + DESCRIPTION = "Sample number of the first pixel of the first line segment + containing valid data. The image line is constructed from + up to 3 packets of data, any of which may be missing. Thus, + an image line can appear to have 0, 1, or 2 segments which + contain data. Set to zero for missing lines and 1 for + complete lines." + End_Object + + Object = COLUMN + NAME = LAST_VALID_PIXEL_SEG1 + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 7 + BYTES = 2 + DESCRIPTION = "Sample number of the last pixel of the first line segment + containing valid data. Set to zero for missing lines. Set + to 1024, 512 or 256 for complete lines." + End_Object + + Object = COLUMN + NAME = FIRST_VALID_PIXEL_SEG2 + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 9 + BYTES = 2 + DESCRIPTION = "Sample number of the first pixel of the second line segment + containing valid data. Set to zero for missing lines and + complete lines." + End_Object + + Object = COLUMN + NAME = LAST_VALID_PIXEL_SEG2 + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 11 + BYTES = 2 + DESCRIPTION = "Sample number of the last valid pixel of the second line + segment containing valid data. Set to zero for missing lines + and complete lines." + End_Object + + Object = COLUMN + NAME = FIRST_OVERCLOCKED_PIXEL_SUM + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 13 + BYTES = 2 + DESCRIPTION = "Sum of up to two overclocked pixels returned at the + beginning of this line. In 1X1 mode, this will be the sum of + the first two overclocked pixels, in 2X2 and in 4X4 mode it + will be the first overclocked pixel. In the case of 8-bit + data, one 8-bit pixel sum is returned right-adjusted in the + 16-bit word." + End_Object + + Object = COLUMN + NAME = SPARE + DATA_TYPE = N/A + START_BYTE = 15 + BYTES = 6 + DESCRIPTION = "For future use." + End_Object + + Object = COLUMN + NAME = EXTENDED_PIXEL_SUM + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 21 + BYTES = 2 + DESCRIPTION = "The sum of up to 8 extended pixels returned for this line. + For lossy-compression data, this value is only available for + data returned in the last compression block." + End_Object + + Object = COLUMN + NAME = LAST_OVERCLOCKED_PIXEL_SUM + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 23 + BYTES = 2 + DESCRIPTION = "Sum of up to six overclocked pixels returned at the end of + this line. In 1X1 mode, this will be the sum of the last 6 + overclocked pixels, in 2X2 mode the sum of the last 3 + overclocked pixels and in 4X4 mode the last overclocked + pixel. In the case of 8-bit data, one 8-bit pixel sum is + returned right-adjusted in the 16-bit word." + End_Object +End_Object + +Object = IMAGE + LINES = 512 + LINE_SAMPLES = 512 + SAMPLE_BITS = 8 + SAMPLE_TYPE = SUN_INTEGER + LINE_PREFIX_BYTES = 24 +End_Object +End + +Object = ciss2isis + IsisVersion = "3.4.1.0 alpha | 2012-05-21" + ProgramVersion = 2012-05-04 + ProgramPath = /work/projects/progteam/kedmundson/isis3/cassinirings/i- + sis/bin + ExecutionDateTime = 2012-09-13T07:29:05 + HostName = chuhukon + UserName = kedmundson + Description = "Import a PDS Cassini ISS image file into Isis" + + Group = UserParameters + FROM = W1591427565_1.LBL_label + TO = W1591427565_1.cub + End_Group +End_Object + +Object = spiceinit + IsisVersion = "3.4.1.0 alpha | 2012-05-21" + ProgramVersion = 2012-07-06 + ProgramPath = /work/projects/progteam/kedmundson/isis3/cassinirings/i- + sis/bin + ExecutionDateTime = 2012-09-13T07:32:11 + HostName = chuhukon + UserName = kedmundson + Description = "Determine SPICE kernels for a camera cube" + + Group = UserParameters + FROM = W1591427565_1.cub + WEB = false + ATTACH = TRUE + CKSMITHED = FALSE + CKRECON = TRUE + CKPREDICTED = FALSE + CKNADIR = FALSE + SPKSMITHED = FALSE + SPKRECON = TRUE + SPKPREDICTED = FALSE + SHAPE = SYSTEM + STARTPAD = 0.0 + ENDPAD = 0.0 + URL = http://services.isis.astrogeology.usgs.gov/cgi-bin/spicein- + it.cgi + PORT = 80 + End_Group +End_Object + +Object = spiceinit + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2013-02-26 + ProgramPath = /work/projects/isis/latest/m00775/isis/bin + ExecutionDateTime = 2013-04-01T16:25:06 + HostName = rukuba + UserName = jwbacker + Description = "Determine SPICE kernels for a camera cube" + + Group = UserParameters + FROM = input/W1591427565_1.cub + WEB = false + ATTACH = TRUE + CKSMITHED = FALSE + CKRECON = TRUE + CKPREDICTED = FALSE + CKNADIR = FALSE + SPKSMITHED = FALSE + SPKRECON = TRUE + SPKPREDICTED = FALSE + SHAPE = ring + STARTPAD = 0.0 + ENDPAD = 0.0 + URL = http://services.isis.astrogeology.usgs.gov/cgi-bin/spicein- + it.cgi + PORT = 80 + End_Group +End_Object + +Object = ringscam2map + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2013-03-06 + ProgramPath = /work/projects/isis/latest/m00775/isis/bin + ExecutionDateTime = 2013-04-02T17:34:51 + HostName = rukuba + UserName = jwbacker + Description = "Convert camera image to a map projection" + + Group = UserParameters + FROM = ../../../../../../cissWACringautomosFiles/W1591427565_1.c- + ub + MAP = ../../../../../../cissWACringautomosFiles/planar.map + TO = tsts/combination1/input/W1591427565_1.projected.cub + MATCHMAP = t + PIXRES = CAMERA + DEFAULTRANGE = MINIMIZE + AZSEAM = AUTO + INTERP = CUBICCONVOLUTION + WARPALGORITHM = AUTOMATIC + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:45:36 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = RingLongitudeDirection + VALUE = CounterClockwise + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:45:59 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = AzimuthDirection + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:46:32 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = RingLongitudeDomain + VALUE = 360 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:47:04 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = AzimuthDomain + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:48:36 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MinimumRingRadius + VALUE = 60000000. + UNITS = meters + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:49:19 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MaximumRingRadius + VALUE = 140000000 + UNITS = meters + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:49:45 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MinimumRingLongitude + VALUE = 0.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:49:57 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MinimumRingLongitude + VALUE = 0.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:50:12 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MaximumRingLongitude + VALUE = 360.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:51:12 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = CenterRingRadius + VALUE = 0.0 + UNITS = meters + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:51:24 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = CenterRingLongitude + VALUE = 0.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:53:09 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MinimumRingLongitude + VALUE = 0.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:53:51 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MinimumRingLongitude + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:54:14 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MinimumRingLongitude + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:54:52 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MaximumRingLongitude + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:55:01 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = CenterRingLongitude + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:55:09 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = CenterRingRadius + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:55:52 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MaximumRingLongitude + VALUE = 360.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:56:10 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = CenterRingRadius + VALUE = 0.0 + UNITS = meters + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:56:22 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = CenterRingLongitude + VALUE = 0.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:58:47 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MinimumRadius + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:58:55 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MaximumRadius + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:59:25 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MaximumAzimuth + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:59:31 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MinimumAzimuth + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T12:00:07 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = CenterAzimuth + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T12:00:17 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591427565_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = CenterRadius + End_Group +End_Object + +Object = ringscam2map + IsisVersion = "4.3.0 | 2020-12-01" + ProgramVersion = 2013-03-12 + ProgramPath = /Users/kelvin/repos/isisbuild/bin + ExecutionDateTime = 2020-12-01T11:09:20 + HostName = Unknown + UserName = kelvin + Description = "Convert camera image to a map projection" + + Group = UserParameters + FROM = W1591427565_1.projected.cub + MAP = $ISISROOT/appdata/templates/maps/planar.map + TO = rings1proj1.cub + MATCHMAP = false + PIXRES = ppd + RESOLUTION = .5 + DEFAULTRANGE = MINIMIZE + RINGLONSEAM = AUTO + INTERP = CUBICCONVOLUTION + WARPALGORITHM = AUTOMATIC + End_Group +End_Object diff --git a/isis/tests/data/rings/rings2proj.cub b/isis/tests/data/rings/rings2proj.cub new file mode 100644 index 0000000000..f421c9cf36 --- /dev/null +++ b/isis/tests/data/rings/rings2proj.cub @@ -0,0 +1,1626 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 48 + TileLines = 48 + + Group = Dimensions + Samples = 48 + Lines = 48 + Bands = 1 + End_Group + + Group = Pixels + Type = SignedWord + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = Cassini-Huygens + InstrumentId = ISSWA + TargetName = Saturn + StartTime = 2008-155T16:22:10.189 + StopTime = 2008-155T16:22:10.214 + ExposureDuration = 25.0 + AntibloomingStateFlag = On + + # BiasStripMean value converted back to 12 bit. + BiasStripMean = 72.666664 + CompressionRatio = 9.964800 + CompressionType = Lossy + DataConversionType = Table + DelayedReadoutFlag = No + FlightSoftwareVersionId = 1.4 + GainModeId = 29 + GainState = 2 + ImageTime = 2008-155T16:22:10.214 + InstrumentDataRate = 182.783997 + OpticsTemperature = (7.281164, -999.000000 ) + ReadoutCycleIndex = 10 + ShutterModeId = WacOnly + SummingMode = 1 + InstrumentModeId = Full + SpacecraftClockCount = 1/1591203592.111 + ReadoutOrder = 0 + End_Group + + Group = Archive + DataSetId = CO-S-ISSNA/ISSWA-2-EDR-V1.0 + ImageNumber = 1591203592 + ObservationId = IOSIC_070RI_CWLEOOCC001_SI + ProductId = 1_W1591203592.118 + End_Group + + Group = BandBin + FilterName = CL1/CL2 + OriginalBand = 1 + Center = 633.837 + Width = 285.938 + End_Group + + Group = Kernels + NaifFrameCode = -82361 + LeapSecond = $base/kernels/lsk/naif0010.tls + TargetAttitudeShape = ($base/kernels/pck/pck00009.tpc, + $cassini/kernels/pck/cpck21Mar2013.tpc) + TargetPosition = (Table, $base/kernels/spk/de405.bsp) + InstrumentPointing = (Table, $cassini/kernels/ck/08154_08159ra.bc, + $cassini/kernels/fk/cas_v40.tf) + Instrument = Null + SpacecraftClock = $cassini/kernels/sclk/cas00156.tsc + InstrumentPosition = (Table, + $cassini/kernels/spk/080819R_SCPSE_08141_0820- + 6.bsp) + InstrumentAddendum = $cassini/kernels/iak/IssWAAddendum004.ti + ShapeModel = RingPlane + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 1 + End_Group + + Group = Mapping + ProjectionName = Planar + TargetName = Saturn + UpperLeftCornerX = -141593057.92723 + UpperLeftCornerY = 141593057.92723 + PixelResolution = 5899710.746968 + Scale = 0.5 + RingLongitudeDirection = CounterClockwise + RingLongitudeDomain = 360 + MinimumRingRadius = 140016000.0 + MaximumRingRadius = 198012526.14923 + MinimumRingLongitude = 0.0 + MaximumRingLongitude = 360.0 + CenterRingRadius = 169014263.07462 + CenterRingLongitude = 180.0 + End_Group + + Group = AlphaCube + AlphaSamples = 1024 + AlphaLines = 1024 + AlphaStartingSample = 0.5 + AlphaStartingLine = 0.5 + AlphaEndingSample = 1024.5 + AlphaEndingLine = 1024.5 + BetaSamples = 1024 + BetaLines = 1024 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = "ISS Prefix Pixels" + StartByte = 70145 + Bytes = 24576 + Records = 1024 + ByteOrder = Lsb + Association = Lines + + Group = Field + Name = OverclockPixels + Type = Double + Size = 3 + End_Group +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 94721 + Bytes = 64 + Records = 1 + ByteOrder = Lsb + TimeDependentFrames = (-82000, 1) + ConstantFrames = (14082361, -82361, -82000) + ConstantRotation = (-4.60766564250016e-04, 2.53890149205477e-04, + 0.99999986161697, -0.99999915166539, + -0.001218461310317, -4.60456881761331e-04, + 0.0012183442362362, -0.99999922544561, + 2.54451360053302e-04) + CkTableStartTime = 265782195.38633 + CkTableEndTime = 265782195.38633 + CkTableOriginalSize = 1 + Description = "Created by spiceinit" + Kernels = ($cassini/kernels/ck/08154_08159ra.bc, + $cassini/kernels/fk/cas_v40.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 94785 + Bytes = 56 + Records = 1 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 265782195.38633 + SpkTableEndTime = 265782195.38633 + SpkTableOriginalSize = 1.0 + Description = "Created by spiceinit" + Kernels = $cassini/kernels/spk/080819R_SCPSE_08141_08206.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 94841 + Bytes = 64 + Records = 1 + ByteOrder = Lsb + TimeDependentFrames = (10016, 1) + CkTableStartTime = 265782195.38633 + CkTableEndTime = 265782195.38633 + CkTableOriginalSize = 1 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de405.bsp, + $base/kernels/pck/pck00009.tpc, + $cassini/kernels/pck/cpck21Mar2013.tpc) + SolarLongitude = 344.99901421169 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 94905 + Bytes = 56 + Records = 1 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 265782195.38633 + SpkTableEndTime = 265782195.38633 + SpkTableOriginalSize = 1.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de405.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 120769 + Bytes = 12931 +End_Object + +Object = NaifKeywords + BODY699_RADII = (60268.0, 60268.0, 54364.0) + BODY_FRAME_CODE = 10016 + INS-82361_CL1_CL2_FOCAL_LENGTH = 200.77 + INS-82361_PIXEL_PITCH = 0.012 + INS_-82361_FRAME_ID = 14082361 + INS-82361_TRANSX = (0.0, 0.012, 0.0) + INS-82361_TRANSY = (0.0, 0.0, 0.012) + INS-82361_ITRANSS = (0.0, 83.333333333333, 0.0) + INS-82361_ITRANSL = (0.0, 0.0, 83.333333333333) + INS-82361_BORESIGHT_LINE = 512.5 + INS-82361_BORESIGHT_SAMPLE = 512.5 + INS-82361_K1 = 6.2e-05 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 94961 + Bytes = 25808 +End_Object +End +���������`b����������������������������������������������gg���������������������������������������������ggg��������������������������������������������gllg��������������������������������������������llql�������������������������������������������jlql������������������������������������������glwI� q�����������������������������������������jlp� � +������������������������������������������gq�% K +c �����������������������������������������glN +~ K; ���������������������������������������bgw�� � +� � ���������������������������������������bl 7 z +�� � � ��������������������������������������bgw�� r ' s � �������������������������������������^bm�  +�� � � H �������������������������������������]bq�� 7 +� � 7 � � �������������������������������������]b �' +�� 4 \ c +b �������������������������������������]gD H �a ( � � ��������������������������������������]l�� �� � � � +i K�������������������������������������b$ �� � z � ��������������������������������������^ �� � � F E ��������������������������������������}� K � �  s } � �������������������������������������b!� r � B  +� ���������������������������������������b�� O� � � + +R���������������������������������������bQ A +e� � N +����������������������������������������bn +l� �  5 +����������������������������������������1 Z +�� � s X +�7����������������������������������������Q +� \ G � +� ����������������������������������������j B +� � A � | � ���������������������������������������� � � �  l  +.G���������������������������������������� � +��   $ +3��������������������������������������l +- � # � � � Y���������������������������������������� � + &�  � � +t��������������������������������������gS +� �~ � + � � ��������������������������������������bq� � �� i � p +��������������������������������������blt  +� 0� : � C ��������������������������������������bgw +� +� �� g J ��������������������������������������bgqC +-  +� 0 ��������������������������������������]gl�� � � �E +# ��������������������������������������]bgq~�� + �y +��������������������������������������]bglw�\� + + w��������������������������������������]bglqw��( + ��������������������������������������\bbmlqw{�� ��������������������������������������_bbgllqww ���������������������������������������]bgglqqq����������������������������������������]bbghlqqq���������������������������������������]bbggllll���������������������������������������]^bbggtfg���������������������������������������]]bbhgggg��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������h@ �@�Q@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ��f���? �--"�?���-������h*�?vf�VO�>H�oY$��>�Ld���.��f��A�"�8$�'AM�1@(#��0��4� �w��U� @n�� +\��_�ɣ�&@.��f��A��� ��?D��9�[�?�<uq�?W7$��?�6H(]�>��4\&�>>]V��T%?.��f��A�l_h�M�A��=�W̺�|c�ɬ����%@ٶ�4� @<����W +@.��f��APDS_VERSION_ID = PDS3 + +/* FILE CHARACTERISTICS */ +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 1048 +FILE_RECORDS = 1028 + +/* POINTERS TO DATA OBJECTS */ +^IMAGE_HEADER = (W1591203592_1.IMG, 1) +^TELEMETRY_TABLE = (W1591203592_1.IMG, 4) +^LINE_PREFIX_TABLE = (W1591203592_1.IMG, 5) +^IMAGE = (W1591203592_1.IMG, 5) + +/* IDENTIFICATION DATA ELEMENTS */ +ANTIBLOOMING_STATE_FLAG = ON +BIAS_STRIP_MEAN = 22.666666 +CALIBRATION_LAMP_STATE_FLAG = OFF +COMMAND_FILE_NAME = trigger_64208_2.ioi +COMMAND_SEQUENCE_NUMBER = 64208 +DARK_STRIP_MEAN = 19.750000 +DATA_CONVERSION_TYPE = TABLE +DATA_SET_ID = CO-S-ISSNA/ISSWA-2-EDR-V1.0 +DELAYED_READOUT_FLAG = NO +DESCRIPTION = N/A +DETECTOR_TEMPERATURE = -87.895164 +EARTH_RECEIVED_START_TIME = 2008-156T00:53:37.112 +EARTH_RECEIVED_STOP_TIME = 2008-156T00:53:45.224 +ELECTRONICS_BIAS = 112 +EXPECTED_MAXIMUM = (51.690701, 56.989700) +EXPECTED_PACKETS = 136 +EXPOSURE_DURATION = 25.000000 +FILTER_NAME = (CL1, CL2) +FILTER_TEMPERATURE = 3.192976 +FLIGHT_SOFTWARE_VERSION_ID = 1.4 +GAIN_MODE_ID = "29 ELECTRONS PER DN" +IMAGE_MID_TIME = 2008-155T16:22:10.202 +IMAGE_NUMBER = 1591203592 +IMAGE_OBSERVATION_TYPE = SUPPORT +IMAGE_TIME = 2008-155T16:22:10.214 +INSTRUMENT_DATA_RATE = 182.783997 +INSTRUMENT_HOST_NAME = "CASSINI ORBITER" +INSTRUMENT_ID = ISSWA +INSTRUMENT_MODE_ID = FULL +INSTRUMENT_NAME = "IMAGING SCIENCE SUBSYSTEM WIDE ANGLE" +INST_CMPRS_PARAM = (0, 0, 41, 0) +INST_CMPRS_RATE = (0.951087, 0.802826) +INST_CMPRS_RATIO = 9.964800 +INST_CMPRS_TYPE = LOSSY +LIGHT_FLOOD_STATE_FLAG = ON +METHOD_DESC = ISSPT2.6.2;Saturn-Rings;CIRS_070RI_CWLEOOCC0- + 01_new +MISSING_LINES = N/A +MISSING_PACKET_FLAG = NO +MISSION_NAME = CASSINI-HUYGENS +MISSION_PHASE_NAME = TOUR +OBSERVATION_ID = IOSIC_070RI_CWLEOOCC001_SI +OPTICS_TEMPERATURE = (7.281164, -999.000000) +ORDER_NUMBER = 8 +PARALLEL_CLOCK_VOLTAGE_INDEX = 9 +PREPARE_CYCLE_INDEX = 0 +PRODUCT_CREATION_TIME = 2008-156T03:03:27.000 +PRODUCT_ID = 1_W1591203592.118 +PRODUCT_VERSION_TYPE = FINAL +READOUT_CYCLE_INDEX = 10 +RECEIVED_PACKETS = 114 +SENSOR_HEAD_ELEC_TEMPERATURE = 2.988467 +SEQUENCE_ID = S41 +SEQUENCE_NUMBER = 8 +SEQUENCE_TITLE = S41 +SHUTTER_MODE_ID = WACONLY +SHUTTER_STATE_ID = ENABLED +SOFTWARE_VERSION_ID = "ISS 11.00 05-24-2006" +SPACECRAFT_CLOCK_CNT_PARTITION = 1 +SPACECRAFT_CLOCK_START_COUNT = 1591203592.111 +SPACECRAFT_CLOCK_STOP_COUNT = 1591203592.118 +START_TIME = 2008-155T16:22:10.189 +STOP_TIME = 2008-155T16:22:10.214 +TARGET_DESC = Saturn-Rings +TARGET_LIST = N/A +TARGET_NAME = SKY +TELEMETRY_FORMAT_ID = S&ER3 +VALID_MAXIMUM = (4095, 4095) + +Object = IMAGE_HEADER + INTERCHANGE_FORMAT = ASCII + HEADER_TYPE = VICAR2 + BYTES = 3144 + RECORDS = 1 + ^DESCRIPTION = VICAR2.TXT +End_Object + +Object = TELEMETRY_TABLE + INTERCHANGE_FORMAT = BINARY + ROWS = 1 + COLUMNS = 2 + ROW_BYTES = 1048 + + Object = COLUMN + NAME = EXTENDED_ISS_SCIENCE_HEADER + BIT_DATA_TYPE = BINARY + START_BYTE = 1 + BYTES = 60 + + Object = BIT_COLUMN + NAME = CAMERA + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 1 + BITS = 1 + DESCRIPTION = "Camera that generated packet. Valid values: 0:NAC and + 1:WAC." + End_Object + + Object = BIT_COLUMN + NAME = SUMMATION_MODE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 2 + BITS = 2 + DESCRIPTION = "Camera summation mode. Valid values: 01:1X1, 10:2X2 and + 11:4X4." + End_Object + + Object = BIT_COLUMN + NAME = COMPRESSION_MODE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 4 + BITS = 2 + DESCRIPTION = "Image compression mode. Valid values: 00:no + compression, 01:lossless, 10:lossy, and 11:illegal." + End_Object + + Object = BIT_COLUMN + NAME = CONVERSION + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 6 + BITS = 2 + DESCRIPTION = "12-to-8_BIT_CONVERSION_MODE. Valid values: 00:no + conversion, 01:look up table, 10:use 8 least significant + bits, 11:illegal." + End_Object + + Object = BIT_COLUMN + NAME = CONTINUATION_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 8 + BITS = 1 + DESCRIPTION = "For the packet from which this telemetry header was + Extracted: the first line of this packet is a + continuation of a line begun in the previous packet. + Valid value: 0:not a continuation and 1:continuation." + End_Object + + Object = BIT_COLUMN + NAME = HEADER_TYPE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 9 + BITS = 2 + DESCRIPTION = "Indicates whether the header is standard or extended. + Valid values: 00:standard, 01:illegal, 10:illegal and + 11:extended." + End_Object + + Object = BIT_COLUMN + NAME = GAIN_MODE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 11 + BITS = 2 + DESCRIPTION = "Camera gain state. Valid values: 00: gain 0 or about + 215 e/DN, 01: gain 1 or about 95 e/DN, 10: gain 2 or + about 29 e/DN, and 11: gain 3 or about 12 e/DN." + End_Object + + Object = BIT_COLUMN + NAME = FILTER1 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 13 + BITS = 4 + DESCRIPTION = "Position of filter wheel one. NAC filter wheel 1 Pos + Name 1 CL1 2 Red (650W) 3 BL1 (445W) 4 + UV2 (300W) 5 UV1 (255W) 6 IRP0 7 P120 8 + P60 9 P0 10 HAL (656N) 11 IR4 (977LP) 12 + IR2 (867W) WAC filter wheel 1 Pos Name 1 CL1 2 + IR3 (952W) 3 IR4 (977LP) 4 IR5 (1025LP) 5 + CB3 (938N) 6 MT3 (889N) 7 CB2 (751N) 8 MT2 + (727N) 9 IR2 (867W) " + End_Object + + Object = BIT_COLUMN + NAME = FILTER2 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 17 + BITS = 4 + DESCRIPTION = "Position of filter wheel two. There are 12 filters for + narrow angle camera and 7 for wide angle camera. NAC + filter wheel 2 Pos Name 1 CL2 2 GRN (562W) 3 + UV3 (340W) 4 BL2 (440M) 5 MT2 (727N) 6 CB2 + (751N) 7 MT3 (889N) 8 CB3 (938N) 9 MT1 + (619N) 10 CB1 (635N) 11 IR3 (952W) 12 IR1 + (757W) WAC filter wheel 2 1 CL2 2 RED (650W) 3 + GRN (562W) 4 BL1 (445W) 5 VIO (430SP) 6 + HAL (656N) 7 IRP90 8 IRP0 9 IR1 (757W)" + End_Object + + Object = BIT_COLUMN + NAME = PACKET_LINE_NUMBER + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 21 + BITS = 12 + DESCRIPTION = "For the packet from which this telemetry header was + extracted, the line number of the first line in the + packet. May refer to a partial line if the first line + has been continued from the preceding packet." + End_Object + + Object = BIT_COLUMN + NAME = LAST_PACKET_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 33 + BITS = 1 + DESCRIPTION = "Indicates for the packet from which this telemetry + header was extracted, whether the current packet is the + last for the image. Valid value: 0:not the last and + 1:the last." + End_Object + + Object = BIT_COLUMN + NAME = SPARE + BIT_DATA_TYPE = N/A + START_BIT = 34 + BITS = 2 + DESCRIPTION = Unused. + End_Object + + Object = BIT_COLUMN + NAME = LOSSY_PARAMETERS + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 36 + BITS = 13 + DESCRIPTION = "Lossy compression parameter settings: Bits 0-6 - number + of blocks per group = this value *2 + 1 Bits 7-10 + - compression rate table element number Bit 11 + - algorithm Bit 12 - block type" + End_Object + + Object = BIT_COLUMN + NAME = SPARE + BIT_DATA_TYPE = N/A + START_BIT = 49 + BITS = 1 + DESCRIPTION = Unused. + End_Object + + Object = BIT_COLUMN + NAME = CALIBRATION_LAMP_STATE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 50 + BITS = 1 + DESCRIPTION = "The lamp state. Valid values: 0:off and 1:on" + End_Object + + Object = BIT_COLUMN + NAME = LIGHTFLOOD_MODE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 51 + BITS = 1 + DESCRIPTION = "CCD Light Flood mode. Valid values: 0:on and 1:off." + End_Object + + Object = BIT_COLUMN + NAME = TCE_STATE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 52 + BITS = 2 + DESCRIPTION = "The state of the temperature control electronics. + Valid values: 00:off, 10:on, 01:off/regulate and + 11:on/regulate." + End_Object + + Object = BIT_COLUMN + NAME = OPTICS_HEATER_1_STATE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 54 + BITS = 1 + DESCRIPTION = "Optics heater one indicator. Valid values: 0:on and + 1:off." + End_Object + + Object = BIT_COLUMN + NAME = OPTICS_HEATER_2_STATE + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 55 + BITS = 1 + DESCRIPTION = "Optics heater two indicator. Valid values: 0:on and + 1:off." + End_Object + + Object = BIT_COLUMN + NAME = ANTIBLOOMING_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 56 + BITS = 1 + DESCRIPTION = "Antiblooming state flag indicator. Valid values: 0:on + and 1:off." + End_Object + + Object = BIT_COLUMN + NAME = PREPARE_INDEX + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 57 + BITS = 4 + DESCRIPTION = "Prepare table index for the current image." + End_Object + + Object = BIT_COLUMN + NAME = READOUT_INDEX + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 61 + BITS = 4 + DESCRIPTION = "Readout table index for the current image." + End_Object + + Object = BIT_COLUMN + NAME = COMMUTATED_TABLE_ID + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 65 + BITS = 4 + DESCRIPTION = "Certain tables are commutated in this science header. + This field identifies the table being commutated. Valid + values: 0000:Exposure table, 0001:Prepare table and + 0010:Readout table." + End_Object + + Object = BIT_COLUMN + NAME = COMMUTATED_TABLE_ELEMENT + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 69 + BITS = 12 + DESCRIPTION = "The element number in the above table whose value is in + the next field." + End_Object + + Object = BIT_COLUMN + NAME = COMMUTATED_TABLE_ELEMENT_CONTENTS + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 81 + BITS = 16 + DESCRIPTION = "The value of the table element identified in the + previous field." + End_Object + + Object = BIT_COLUMN + NAME = IMAGE_NUMBER + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 97 + BITS = 16 + DESCRIPTION = "This field holds the image number since Power On Reset + (POR). A zero here indicates that no images have been + returned since POR. Value starts at 1 and proceeds to + 32767 and recycles to 1." + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_1 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 113 + BITS = 16 + DESCRIPTION = "Value of the +50V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_2 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 129 + BITS = 16 + DESCRIPTION = "Value of the +30V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_3 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 145 + BITS = 16 + DESCRIPTION = "Value of the +28V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_4 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 161 + BITS = 16 + DESCRIPTION = "Value of the +15V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_5 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 177 + BITS = 16 + DESCRIPTION = "Value of the -15V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_6 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 193 + BITS = 16 + DESCRIPTION = "Value of the +5V telemetry channel." + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_1 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 209 + BITS = 16 + DESCRIPTION = "CCD TEMPERATURE" + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_2 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 225 + BITS = 16 + DESCRIPTION = OPTICS_1_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_3 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 241 + BITS = 16 + DESCRIPTION = OPTICS_2_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_4 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 257 + BITS = 16 + DESCRIPTION = OPTICS_3_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_5 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 273 + BITS = 16 + DESCRIPTION = OPTICS_4_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_6 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 289 + BITS = 16 + DESCRIPTION = EFC_1_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_7 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 305 + BITS = 16 + DESCRIPTION = EFC_2_TEMPERATURE + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = TEMPERATURE_8 + BIT_DATA_TYPE = MSB_SIGNED_INTEGER + START_BIT = 321 + BITS = 16 + DESCRIPTION = "MAIN ELECTRONICS TEMPERATURE" + UNIT = DEGREES_C + End_Object + + Object = BIT_COLUMN + NAME = CURRENT + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 337 + BITS = 16 + DESCRIPTION = "Instrument current." + UNIT = AMPERES + End_Object + + Object = BIT_COLUMN + NAME = TRIGGER_ID + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 353 + BITS = 16 + DESCRIPTION = "The command id of the last command triggered." + End_Object + + Object = BIT_COLUMN + NAME = COMMAND_COUNT + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 369 + BITS = 16 + DESCRIPION = "Number of commands since POR. The number starts at 0 + and proceeds to 32767 and recycles to 0." + End_Object + + Object = BIT_COLUMN + NAME = UPLOAD_NUMBER + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 385 + BITS = 16 + DESCRIPTION = "The number of the current upload. Starts with 1 and + proceeds to 32767 then recycles to 1." + End_Object + + Object = BIT_COLUMN + NAME = UPLOAD_EMPTY_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 401 + BITS = 1 + DESCRIPTION = "Indicates whether upload memory is empty. Valid values: + 0:not empty and 1:empty." + End_Object + + Object = BIT_COLUMN + NAME = COLD_START_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 402 + BITS = 1 + DESCRIPTION = "Indicates whether a cold start occurred in last + housekeeping period. Valid values: 0:no cold start and + 1:cold start." + End_Object + + Object = BIT_COLUMN + NAME = WARM_START_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 403 + BITS = 1 + DESCRIPTION = "Indicates whether a warm start occurred in last + housekeeping period. Valid values: 0:no cold start and + 1:warm start." + End_Object + + Object = BIT_COLUMN + NAME = LOSSY_TEST_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 404 + BITS = 1 + DESCRIPTION = "Indicates whether the lossy self-test is okay. Valid + values: 0:not okay and 1:okay." + End_Object + + Object = BIT_COLUMN + NAME = UPLOAD_LOADING_FLAG + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 405 + BITS = 1 + DESCRIPTION = "Indicates if upload memory is loading. Valid values: + 0:not loading and 1:loading." + End_Object + + Object = BIT_COLUMN + NAME = CAMERA_READOUT_ORDER + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 406 + BITS = 1 + DESCRIPTION = "Indicates whether the NAC or the WAC is being read out + first. Valid value: 0:NAC first and 1:WAC first." + End_Object + + Object = BIT_COLUMN + NAME = SPARE + BIT_DATA_TYPE = N/A + START_BIT = 407 + BITS = 2 + DESCRIPTION = "Not used." + End_Object + + Object = BIT_COLUMN + NAME = EXPOSURE_INDEX + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 409 + BITS = 8 + DESCRIPTION = "An index into the exposure table for the current image. + Valid values are 0 through 63." + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_7 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 417 + BITS = 16 + DESCRIPTION = "High reference voltage from the Housekeeping Data + Electronics (HDE) - (VREF_HI)" + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = VOLTAGE_8 + BIT_DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BIT = 433 + BITS = 16 + DESCRIPTION = "Low reference voltage from the Housekeeping Data + Electronics (HDE) - (VREF_LO)" + UNIT = VOLT + End_Object + + Object = BIT_COLUMN + NAME = SPARE + BIT_DATA_TYPE = N/A + START_BIT = 449 + BITS = 32 + DESCRIPTION = "Not used." + End_Object + End_Object + + Object = COLUMN + NAME = NULL_PADDING + DATA_TYPE = MSB_UNSIGNED_INTEGER + START_BYTE = 61 + BYTES = 987 + End_Object +End_Object + +Object = LINE_PREFIX_TABLE + INTERCHANGE_FORMAT = BINARY + ROWS = 1024 + COLUMNS = 7 + ROW_BYTES = 24 + ROW_SUFFIX_BYTES = 1024 + + Object = COLUMN + NAME = LINE_NUMBER + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 1 + BYTES = 2 + DESCRIPTION = "The image line number of this record. Maintained at proper + value even through data gaps." + End_Object + + Object = COLUMN + NAME = LAST_VALID_PIXEL + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 3 + BYTES = 2 + DESCRIPTION = "Sample number of the last valid pixel in this line not + artificially set to zero due to missing data (sample 1 is + defined as the leftmost image pixel of this line). Set to + zero for missing lines. Set to 1024, 512 or 256 for complete + lines." + End_Object + + Object = COLUMN + NAME = FIRST_VALID_PIXEL_SEG1 + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 5 + BYTES = 2 + DESCRIPTION = "Sample number of the first pixel of the first line segment + containing valid data. The image line is constructed from + up to 3 packets of data, any of which may be missing. Thus, + an image line can appear to have 0, 1, or 2 segments which + contain data. Set to zero for missing lines and 1 for + complete lines." + End_Object + + Object = COLUMN + NAME = LAST_VALID_PIXEL_SEG1 + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 7 + BYTES = 2 + DESCRIPTION = "Sample number of the last pixel of the first line segment + containing valid data. Set to zero for missing lines. Set + to 1024, 512 or 256 for complete lines." + End_Object + + Object = COLUMN + NAME = FIRST_VALID_PIXEL_SEG2 + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 9 + BYTES = 2 + DESCRIPTION = "Sample number of the first pixel of the second line segment + containing valid data. Set to zero for missing lines and + complete lines." + End_Object + + Object = COLUMN + NAME = LAST_VALID_PIXEL_SEG2 + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 11 + BYTES = 2 + DESCRIPTION = "Sample number of the last valid pixel of the second line + segment containing valid data. Set to zero for missing lines + and complete lines." + End_Object + + Object = COLUMN + NAME = FIRST_OVERCLOCKED_PIXEL_SUM + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 13 + BYTES = 2 + DESCRIPTION = "Sum of up to two overclocked pixels returned at the + beginning of this line. In 1X1 mode, this will be the sum of + the first two overclocked pixels, in 2X2 and in 4X4 mode it + will be the first overclocked pixel. In the case of 8-bit + data, one 8-bit pixel sum is returned right-adjusted in the + 16-bit word." + End_Object + + Object = COLUMN + NAME = SPARE + DATA_TYPE = N/A + START_BYTE = 15 + BYTES = 6 + DESCRIPTION = "For future use." + End_Object + + Object = COLUMN + NAME = EXTENDED_PIXEL_SUM + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 21 + BYTES = 2 + DESCRIPTION = "The sum of up to 8 extended pixels returned for this line. + For lossy-compression data, this value is only available for + data returned in the last compression block." + End_Object + + Object = COLUMN + NAME = LAST_OVERCLOCKED_PIXEL_SUM + DATA_TYPE = LSB_UNSIGNED_INTEGER + START_BYTE = 23 + BYTES = 2 + DESCRIPTION = "Sum of up to six overclocked pixels returned at the end of + this line. In 1X1 mode, this will be the sum of the last 6 + overclocked pixels, in 2X2 mode the sum of the last 3 + overclocked pixels and in 4X4 mode the last overclocked + pixel. In the case of 8-bit data, one 8-bit pixel sum is + returned right-adjusted in the 16-bit word." + End_Object +End_Object + +Object = IMAGE + LINES = 1024 + LINE_SAMPLES = 1024 + SAMPLE_BITS = 8 + SAMPLE_TYPE = SUN_INTEGER + LINE_PREFIX_BYTES = 24 +End_Object +End + +Object = ciss2isis + IsisVersion = "3.4.1.0 alpha | 2012-05-21" + ProgramVersion = 2012-05-04 + ProgramPath = /work/projects/progteam/kedmundson/isis3/cassinirings/i- + sis/bin + ExecutionDateTime = 2012-09-13T07:29:04 + HostName = chuhukon + UserName = kedmundson + Description = "Import a PDS Cassini ISS image file into Isis" + + Group = UserParameters + FROM = W1591203592_1.LBL_label + TO = W1591203592_1.cub + End_Group +End_Object + +Object = spiceinit + IsisVersion = "3.4.1.0 alpha | 2012-05-21" + ProgramVersion = 2012-07-06 + ProgramPath = /work/projects/progteam/kedmundson/isis3/cassinirings/i- + sis/bin + ExecutionDateTime = 2012-09-13T07:31:58 + HostName = chuhukon + UserName = kedmundson + Description = "Determine SPICE kernels for a camera cube" + + Group = UserParameters + FROM = W1591203592_1.cub + WEB = false + ATTACH = TRUE + CKSMITHED = FALSE + CKRECON = TRUE + CKPREDICTED = FALSE + CKNADIR = FALSE + SPKSMITHED = FALSE + SPKRECON = TRUE + SPKPREDICTED = FALSE + SHAPE = SYSTEM + STARTPAD = 0.0 + ENDPAD = 0.0 + URL = http://services.isis.astrogeology.usgs.gov/cgi-bin/spicein- + it.cgi + PORT = 80 + End_Group +End_Object + +Object = spiceinit + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2013-02-26 + ProgramPath = /work/projects/isis/latest/m00775/isis/bin + ExecutionDateTime = 2013-04-01T16:24:39 + HostName = rukuba + UserName = jwbacker + Description = "Determine SPICE kernels for a camera cube" + + Group = UserParameters + FROM = input/W1591203592_1.cub + WEB = false + ATTACH = TRUE + CKSMITHED = FALSE + CKRECON = TRUE + CKPREDICTED = FALSE + CKNADIR = FALSE + SPKSMITHED = FALSE + SPKRECON = TRUE + SPKPREDICTED = FALSE + SHAPE = ring + STARTPAD = 0.0 + ENDPAD = 0.0 + URL = http://services.isis.astrogeology.usgs.gov/cgi-bin/spicein- + it.cgi + PORT = 80 + End_Group +End_Object + +Object = ringscam2map + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2013-03-06 + ProgramPath = /work/projects/isis/latest/m00775/isis/bin + ExecutionDateTime = 2013-04-02T17:27:44 + HostName = rukuba + UserName = jwbacker + Description = "Convert camera image to a map projection" + + Group = UserParameters + FROM = ../../../../../../cissWACringautomosFiles/W1591203592_1.c- + ub + MAP = ../../../../../../cissWACringautomosFiles/planar.map + TO = tsts/combination1/input/W1591203592_1.projected.cub + MATCHMAP = t + PIXRES = CAMERA + DEFAULTRANGE = MINIMIZE + AZSEAM = AUTO + INTERP = CUBICCONVOLUTION + WARPALGORITHM = AUTOMATIC + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:45:30 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = RingLongitudeDirection + VALUE = CounterClockwise + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:45:52 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = AzimuthDirection + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:46:26 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = RingLongitudeDomain + VALUE = 360 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:46:59 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = AzimuthDomain + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:48:40 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MinimumRingRadius + VALUE = 60000000. + UNITS = meters + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:49:14 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MaximumRingRadius + VALUE = 140000000 + UNITS = meters + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:49:51 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MinimumRingLongitude + VALUE = 0.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:50:18 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = MaximumRingLongitude + VALUE = 360.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:51:06 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = CenterRingRadius + VALUE = 0.0 + UNITS = meters + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:51:29 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = ADDKEY + GRPNAME = Mapping + KEYWORD = CenterRingLongitude + VALUE = 0.0 + UNITS = degrees + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:58:43 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MinimumRadius + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:59:00 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MaximumRadius + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:59:20 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MaximumAzimuth + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:59:36 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = MinimumAzimuth + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T11:59:53 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = CenterAzimuth + End_Group +End_Object + +Object = editlab + IsisVersion = "3.4.4.0 alpha | 2013-03-19" + ProgramVersion = 2012-12-20 + ProgramPath = /ramdisk/isis/src/base/apps/editlab + ExecutionDateTime = 2013-04-11T12:00:22 + HostName = rukuba + UserName = jwbacker + Description = "Modifies cube labels" + + Group = UserParameters + FROM = /ramdisk/isis/src/base/apps/ringsautomos/tsts/combination1/inpu- + t/W1591203592_1.projected.cub + OPTIONS = DELKEY + GRPNAME = Mapping + KEYWORD = CenterRadius + End_Group +End_Object + +Object = ringscam2map + IsisVersion = "4.3.0 | 2020-12-01" + ProgramVersion = 2013-03-12 + ProgramPath = /Users/kelvin/repos/isisbuild/bin + ExecutionDateTime = 2020-12-01T11:09:32 + HostName = Unknown + UserName = kelvin + Description = "Convert camera image to a map projection" + + Group = UserParameters + FROM = W1591203592_1.projected.cub + MAP = $ISISROOT/appdata/templates/maps/planar.map + TO = rings1proj2.cub + MATCHMAP = false + PIXRES = ppd + RESOLUTION = .5 + DEFAULTRANGE = MINIMIZE + RINGLONSEAM = AUTO + INTERP = CUBICCONVOLUTION + WARPALGORITHM = AUTOMATIC + End_Group +End_Object